Hi, Am Montag, 13. Mai 2024, 04:16:27 CEST schrieb Marek Vasut: > Initialize the bridge on attach already, to force lanes into LP11 > state, since attach does trigger attach of downstream bridges which > may trigger (e)DP AUX channel mode read. > > This fixes a corner case where DSIM with TC9595 attached to it fails > to operate the DP AUX channel, because the TC9595 enters some debug > mode when it is released from reset without lanes in LP11 mode. By > ensuring the DSIM lanes are in LP11, the TC9595 (tc358767.c driver) > can be reset in its attach callback called from DSIM attach callback, > and recovered out of the debug mode just before TC9595 performs first > AUX channel access later in its attach callback. > > Signed-off-by: Marek Vasut <marex@xxxxxxx> This does the trick on my hardware as well. Reviewed-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> > --- > Cc: Adam Ford <aford173@xxxxxxxxx> > Cc: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> > Cc: Andrzej Hajda <andrzej.hajda@xxxxxxxxx> > Cc: Daniel Vetter <daniel@xxxxxxxx> > Cc: David Airlie <airlied@xxxxxxxxx> > Cc: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> > Cc: Inki Dae <inki.dae@xxxxxxxxxxx> > Cc: Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx> > Cc: Jernej Skrabec <jernej.skrabec@xxxxxxxxx> > Cc: Jonas Karlman <jonas@xxxxxxxxx> > Cc: Laurent Pinchart <Laurent.pinchart@xxxxxxxxxxxxxxxx> > Cc: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Cc: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > Cc: Maxime Ripard <mripard@xxxxxxxxxx> > Cc: Michael Walle <mwalle@xxxxxxxxxx> > Cc: Neil Armstrong <neil.armstrong@xxxxxxxxxx> > Cc: Robert Foss <rfoss@xxxxxxxxxx> > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx > Cc: kernel@xxxxxxxxxxxxxxxxxx > --- > drivers/gpu/drm/bridge/samsung-dsim.c | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c > index 95fedc68b0ae5..56093fc3d62cc 100644 > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > @@ -1622,9 +1622,21 @@ static int samsung_dsim_attach(struct drm_bridge *bridge, > enum drm_bridge_attach_flags flags) > { > struct samsung_dsim *dsi = bridge_to_dsi(bridge); > + int ret; > + > + ret = pm_runtime_resume_and_get(dsi->dev); > + if (ret < 0) > + return ret; > > - return drm_bridge_attach(bridge->encoder, dsi->out_bridge, bridge, > - flags); > + ret = samsung_dsim_init(dsi); > + if (ret < 0) > + goto err; > + > + ret = drm_bridge_attach(bridge->encoder, dsi->out_bridge, bridge, > + flags); > +err: > + pm_runtime_put_sync(dsi->dev); > + return ret; > } > > static const struct drm_bridge_funcs samsung_dsim_bridge_funcs = { > > -- TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany Amtsgericht München, HRB 105018 Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider http://www.tq-group.com/