Message ID | 20220408162108.184583-5-jagan@amarulasolutions.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm: bridge: Add Samsung MIPI DSIM bridge | expand |
On Fri, Apr 8, 2022 at 11:22 AM Jagan Teki <jagan@amarulasolutions.com> 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@amarulasolutions.com> > --- > 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 >
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; + } } static void samsung_dsim_atomic_enable(struct drm_bridge *bridge,
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@amarulasolutions.com> --- drivers/gpu/drm/bridge/samsung-dsim.c | 7 +++++++ 1 file changed, 7 insertions(+)