Hi, On Mon, Jun 23, 2025 at 9:48 PM Jayesh Choudhary <[email protected]> wrote: > > By default, HPD was disabled on SN65DSI86 bridge. When the driver was > added (commit "a095f15c00e27"), the HPD_DISABLE bit was set in pre-enable > call which was moved to other function calls subsequently. > Later on, commit "c312b0df3b13" added detect utility for DP mode. But with > HPD_DISABLE bit set, all the HPD events are disabled[0] and the debounced > state always return 1 (always connected state). > > Set HPD_DISABLE bit conditionally based on display sink's connector type. > Since the HPD_STATE is reflected correctly only after waiting for debounce > time (~100-400ms) and adding this delay in detect() is not feasible > owing to the performace impact (glitches and frame drop), remove runtime > calls in detect() and add hpd_enable()/disable() bridge hooks with runtime > calls, to detect hpd properly without any delay. > > [0]: <https://www.ti.com/lit/gpn/SN65DSI86> (Pg. 32) > > Fixes: c312b0df3b13 ("drm/bridge: ti-sn65dsi86: Implement bridge connector > operations for DP") > Cc: Max Krummenacher <[email protected]> > Reviewed-by: Douglas Anderson <[email protected]> > Tested-by: Ernest Van Hoecke <[email protected]> > Signed-off-by: Jayesh Choudhary <[email protected]> > --- > > Changelog v5->v6: > - Drop pm_runtime_mark_last_busy() > - Pick up tags > > v5 patch link: > <https://lore.kernel.org/all/[email protected]/> > > Changelog v4->v5: > - Make suspend asynchronous in hpd_disable() > - Update HPD_DISABLE in probe function to address the case for when > comms are already enabled. Comments taken verbatim from [2] > - Update comments > > v4 patch link: > <https://lore.kernel.org/all/[email protected]/> > > Changelog v3->v4: > - Remove "no-hpd" support due to backward compatibility issues > - Change the conditional from "no-hpd" back to connector type > but still address [1] > > v3 patch link: > <https://lore.kernel.org/all/[email protected]/> > > Changelog v2->v3: > - Change conditional based on no-hpd property to address [1] > - Remove runtime calls in detect() with appropriate comments > - Add hpd_enable() and hpd_disable() in drm_bridge_funcs > > v2 patch link: > <https://lore.kernel.org/all/[email protected]/> > > Changelog v1->v2: > - Drop additional property in bindings and use conditional. > - Instead of register read for HPD state, use dpcd read which returns 0 > for success and error codes for no connection > - Add relevant history for the required change in commit message > - Drop RFC subject-prefix in v2 > - Add "Cc:" tag > > v1 patch link: > <https://lore.kernel.org/all/[email protected]/> > > [1]: > <https://lore.kernel.org/all/mwh35anw57d6nvre3sguetzq3miu4kd43rokegvul7fk266lys@5h2euthpk7vq/> > [2]: > <https://lore.kernel.org/all/CAD=FV=WvH73d78De3PrbiG7b6OaS_BysGtxQ=mjtj4z-h0l...@mail.gmail.com/> > > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 69 +++++++++++++++++++++++---- > 1 file changed, 60 insertions(+), 9 deletions(-)
I'll plan to push this to drm-misc-fixes tomorrow morning unless there are any objections or requests for me to wait. -Doug
