On Fri, Apr 8, 2022 at 11:22 AM Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx> wrote: > > Host transfer() in DSI master will invoke only when the DSI commands > are sent from DSI devices like DSI Panel or DSI bridges and this > host transfer wouldn't invoke for I2C-based-DSI bridge drivers. > > Handling DSI host initialization in transfer calls misses the > controller setup for I2C configured DSI bridges. > > This patch adds the DSI initialization from transfer to bridge > pre_enable as the bridge pre_enable API is invoked by core as > it is common across all classes of DSI device drivers. > > v1: > * keep DSI init in host transfer > > Signed-off-by: Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/bridge/samsung-dsim.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c > index ff05c8e01cff..3e12b469dfa8 100644 > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > @@ -1290,6 +1290,13 @@ static void samsung_dsim_atomic_pre_enable(struct drm_bridge *bridge, > } > > dsi->state |= DSIM_STATE_ENABLED; > + > + if (!(dsi->state & DSIM_STATE_INITIALIZED)) { > + ret = samsung_dsim_init(dsi); > + if (ret) > + return; > + dsi->state |= DSIM_STATE_INITIALIZED; Out of curiosity, is there a reason that dsi->state cannot add DSIM_STATE_INITIALIZED inside the samsung_dsim_init function call? It seems to me that if samsung_dsim_init returns successfully, it should set that flag. I don't know if it's called from other places or not. adam > + } > } > > static void samsung_dsim_atomic_enable(struct drm_bridge *bridge, > -- > 2.25.1 >