Hi Jagan On Thu, 6 Oct 2022 at 15:25, Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx> wrote: > > On Fri, Mar 4, 2022 at 8:48 PM Dave Stevenson > <dave.stevenson@xxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxx> > > --- > > 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