drm/nouveau/dp: Use the generic helper to control LTTPR transparent mode
authorAbel Vesa <abel.vesa@linaro.org>
Mon, 3 Feb 2025 10:57:57 +0000 (12:57 +0200)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tue, 25 Feb 2025 16:33:48 +0000 (18:33 +0200)
LTTPRs operating modes are defined by the DisplayPort standard and the
generic framework now provides a helper to switch between them, which
is handling the explicit disabling of non-transparent mode and its
disable->enable sequence mentioned in the DP Standard v2.0 section
3.6.6.1.

So use the new drm generic helper instead as it makes the code a bit
cleaner.

Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Acked-by: Danilo Krummrich <dakr@kernel.org> # via IRC
Link: https://patchwork.freedesktop.org/patch/msgid/20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-2-c865d0e56d6e@linaro.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drivers/gpu/drm/nouveau/nouveau_dp.c

index bcda0105160f1450df855281e0d932606a5095dd..55691ec44abaa53c84e73358e33df1949bb1e35c 100644 (file)
@@ -79,21 +79,8 @@ nouveau_dp_probe_dpcd(struct nouveau_connector *nv_connector,
            !drm_dp_read_lttpr_common_caps(aux, dpcd, outp->dp.lttpr.caps)) {
                int nr = drm_dp_lttpr_count(outp->dp.lttpr.caps);
 
-               if (nr) {
-                       drm_dp_dpcd_writeb(aux, DP_PHY_REPEATER_MODE,
-                                               DP_PHY_REPEATER_MODE_TRANSPARENT);
-
-                       if (nr > 0) {
-                               ret = drm_dp_dpcd_writeb(aux, DP_PHY_REPEATER_MODE,
-                                                             DP_PHY_REPEATER_MODE_NON_TRANSPARENT);
-                               if (ret != 1) {
-                                       drm_dp_dpcd_writeb(aux, DP_PHY_REPEATER_MODE,
-                                                               DP_PHY_REPEATER_MODE_TRANSPARENT);
-                               } else {
-                                       outp->dp.lttpr.nr = nr;
-                               }
-                       }
-               }
+               if (!drm_dp_lttpr_init(aux, nr))
+                       outp->dp.lttpr.nr = nr;
        }
 
        ret = drm_dp_read_dpcd_caps(aux, dpcd);