From: Andy Yan <andy....@rock-chips.com>

Use the common dp link power up/down helpers to avoid duplicating code.

Signed-off-by: Andy Yan <andy....@rock-chips.com>
Reviewed-by: Dmitry Baryshkov <dmitry.barysh...@oss.qualcomm.com>
---

(no changes since v1)

 drivers/gpu/drm/bridge/ite-it6505.c | 46 +++--------------------------
 1 file changed, 4 insertions(+), 42 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ite-it6505.c 
b/drivers/gpu/drm/bridge/ite-it6505.c
index 8a607558ac89..b05fc82bb667 100644
--- a/drivers/gpu/drm/bridge/ite-it6505.c
+++ b/drivers/gpu/drm/bridge/ite-it6505.c
@@ -771,40 +771,6 @@ static void it6505_calc_video_info(struct it6505 *it6505)
                             DRM_MODE_ARG(&it6505->video_info));
 }
 
-static int it6505_drm_dp_link_set_power(struct drm_dp_aux *aux,
-                                       struct it6505_drm_dp_link *link,
-                                       u8 mode)
-{
-       u8 value;
-       int err;
-
-       /* DP_SET_POWER register is only available on DPCD v1.1 and later */
-       if (link->revision < DPCD_V_1_1)
-               return 0;
-
-       err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value);
-       if (err < 0)
-               return err;
-
-       value &= ~DP_SET_POWER_MASK;
-       value |= mode;
-
-       err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value);
-       if (err < 0)
-               return err;
-
-       if (mode == DP_SET_POWER_D0) {
-               /*
-                * According to the DP 1.1 specification, a "Sink Device must
-                * exit the power saving state within 1 ms" (Section 2.5.3.1,
-                * Table 5-52, "Sink Control Field" (register 0x600).
-                */
-               usleep_range(1000, 2000);
-       }
-
-       return 0;
-}
-
 static void it6505_clear_int(struct it6505 *it6505)
 {
        it6505_write(it6505, INT_STATUS_01, 0xFF);
@@ -2578,8 +2544,7 @@ static void it6505_irq_hpd(struct it6505 *it6505)
                }
                it6505->auto_train_retry = AUTO_TRAIN_RETRY;
 
-               it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link,
-                                            DP_SET_POWER_D0);
+               drm_dp_link_power_up(&it6505->aux, it6505->link.revision);
                dp_sink_count = it6505_dpcd_read(it6505, DP_SINK_COUNT);
                it6505->sink_count = DP_GET_SINK_COUNT(dp_sink_count);
 
@@ -2910,8 +2875,7 @@ static enum drm_connector_status it6505_detect(struct 
it6505 *it6505)
        }
 
        if (it6505->hpd_state) {
-               it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link,
-                                            DP_SET_POWER_D0);
+               drm_dp_link_power_up(&it6505->aux, it6505->link.revision);
                dp_sink_count = it6505_dpcd_read(it6505, DP_SINK_COUNT);
                it6505->sink_count = DP_GET_SINK_COUNT(dp_sink_count);
                DRM_DEV_DEBUG_DRIVER(dev, "it6505->sink_count:%d branch:%d",
@@ -3233,8 +3197,7 @@ static void it6505_bridge_atomic_enable(struct drm_bridge 
*bridge,
        it6505_int_mask_enable(it6505);
        it6505_video_reset(it6505);
 
-       it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link,
-                                    DP_SET_POWER_D0);
+       drm_dp_link_power_up(&it6505->aux, it6505->link.revision);
 }
 
 static void it6505_bridge_atomic_disable(struct drm_bridge *bridge,
@@ -3246,8 +3209,7 @@ static void it6505_bridge_atomic_disable(struct 
drm_bridge *bridge,
        DRM_DEV_DEBUG_DRIVER(dev, "start");
 
        if (it6505->powered) {
-               it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link,
-                                            DP_SET_POWER_D3);
+               drm_dp_link_power_down(&it6505->aux, it6505->link.revision);
                it6505_video_disable(it6505);
        }
 }
-- 
2.43.0

Reply via email to