[PATCH V2 3/4] drm/panel: Add prepare_upstream_first flag to drm_panel
Dave Stevenson
dave.stevenson at raspberrypi.com
Fri Oct 7 12:55:43 UTC 2022
Hi Jagan
On Thu, 6 Oct 2022 at 15:25, Jagan Teki <jagan at amarulasolutions.com> wrote:
>
> On Fri, Mar 4, 2022 at 8:48 PM Dave Stevenson
> <dave.stevenson at raspberrypi.com> wrote:
> >
> > Mapping to the drm_bridge flag pre_enable_upstream_first,
> > add a new flag prepare_upstream_first to drm_panel to allow
> > the panel driver to request that the upstream bridge should
> > be pre_enabled before the panel prepare.
> >
> > Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
> > ---
> > drivers/gpu/drm/bridge/panel.c | 3 +++
> > include/drm/drm_panel.h | 10 ++++++++++
> > 2 files changed, 13 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
> > index 5be057575183..2ea08b3ba326 100644
> > --- a/drivers/gpu/drm/bridge/panel.c
> > +++ b/drivers/gpu/drm/bridge/panel.c
> > @@ -234,6 +234,9 @@ struct drm_bridge *drm_panel_bridge_add_typed(struct drm_panel *panel,
> > panel_bridge->bridge.ops = DRM_BRIDGE_OP_MODES;
> > panel_bridge->bridge.type = connector_type;
> >
> > + panel_bridge->bridge.pre_enable_upstream_first =
> > + panel->prepare_upstream_first;
> > +
>
> panel_bridge is common for bridge users who used panel and those who
> might not need upstream first, so better to handle per bridge user
> whoever needs this.
Sorry, I don't follow you.
prepare_upstream_first is coming from a struct drm_panel, generally
for DSI panels are still panel drivers. An example would be Ilitek
ILI9881C.
It's a feature of the panel that would dictate that they want their
source initialised first.
The source bridge for the panel will call devm_drm_of_get_bridge,
which will call devm_drm_panel_bridge_add. Nothing outside of those
two functions have both the panel and bridge handles, so are you
proposing that the assignment should be done in devm_drm_of_get_bridge
[1]? That would leave the behaviour of drivers calling
drm_panel_bridge_add(_typed) directly as they were.
Thanks.
Dave
[1] https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/bridge/panel.c#L418
More information about the dri-devel
mailing list