On Thursday, December 4, 2025 3:17 PM Svyatoslav Ryhel wrote: > The tegra_dsi_prepare function performs hardware setup and should be > called before any register readings or there will be a risk of device > hangup on register access. To avoid this situation, tegra_dsi_prepare must > be called at the beginning of tegra_dsi_encoder_enable. > > Signed-off-by: Svyatoslav Ryhel <[email protected]> > --- > drivers/gpu/drm/tegra/dsi.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c > index 278bf2c85524..8e80c7efe8b4 100644 > --- a/drivers/gpu/drm/tegra/dsi.c > +++ b/drivers/gpu/drm/tegra/dsi.c > @@ -914,6 +914,12 @@ static void tegra_dsi_encoder_enable(struct drm_encoder > *encoder) > u32 value; > int err; > > + err = tegra_dsi_prepare(dsi); > + if (err < 0) { > + dev_err(dsi->dev, "failed to prepare: %d\n", err); > + return; > + } > + > /* If the bootloader enabled DSI it needs to be disabled > * in order for the panel initialization commands to be > * properly sent. > @@ -923,12 +929,6 @@ static void tegra_dsi_encoder_enable(struct drm_encoder > *encoder) > if (value & DSI_POWER_CONTROL_ENABLE) > tegra_dsi_disable(dsi); > > - err = tegra_dsi_prepare(dsi); > - if (err < 0) { > - dev_err(dsi->dev, "failed to prepare: %d\n", err); > - return; > - } > - > state = tegra_dsi_get_state(dsi); > > tegra_dsi_set_timeout(dsi, state->bclk, state->vrefresh); >
The section of code before the tegra_dsi_prepare call was removed in 'Revert "drm/tegra: dsi: Clear enable register if powered by bootloader"', so this patch should no longer be necessary. Mikko
