Hi, On Tue, Feb 4, 2025 at 7:01 AM Maxime Ripard <mripard@xxxxxxxxxx> wrote: > > @@ -374,12 +377,15 @@ static int __maybe_unused ti_sn65dsi86_resume(struct device *dev) > * panel (including the aux channel) w/out any need for an input clock > * so we can do it in resume which lets us read the EDID before > * pre_enable(). Without a reference clock we need the MIPI reference > * clock so reading early doesn't work. > */ > - if (pdata->refclk) > - ti_sn65dsi86_enable_comms(pdata); > + if (pdata->refclk) { > + drm_modeset_lock(&pdata->bridge.base.lock, NULL); > + ti_sn65dsi86_enable_comms(pdata, drm_bridge_get_current_state(&pdata->bridge)); > + drm_modeset_unlock(&pdata->bridge.base.lock); Oh. I haven't tested yet (my device is at home, but I think there is an easy solution to my deadlock problems. Drop the modeset locks here and just pass NULL for the state. We only end up here if "pdata->refclk" is not NULL. Then we only use the passed state if "pdata->refclk" _is_ NULL.