drm/bridge: analogix_dp: Wait for HPD signal before configuring link
authorzain wang <wzz@rock-chips.com>
Mon, 23 Apr 2018 10:49:41 +0000 (12:49 +0200)
committerAndrzej Hajda <a.hajda@samsung.com>
Tue, 24 Apr 2018 06:34:33 +0000 (08:34 +0200)
According to DP spec v1.3 chap 3.5.1.2 Link Training, Link Policy Maker
must first detect that the HPD signal is asserted high by the Downstream
Device before establishing a link with it.

Cc: Stéphane Marchesin <marcheu@chromium.org>
Signed-off-by: zain wang <wzz@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180423105003.9004-6-enric.balletbo@collabora.com
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c

index bf805f15627250d89fd0e213ca83d9bdba721c53..3269deec739df669462d3d1351a95abbf08dcde5 100644 (file)
@@ -1169,6 +1169,17 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp)
        if (ret)
                goto out_dp_init;
 
+       /*
+        * According to DP spec v1.3 chap 3.5.1.2 Link Training,
+        * We should first make sure the HPD signal is asserted high by device
+        * when we want to establish a link with it.
+        */
+       ret = analogix_dp_detect_hpd(dp);
+       if (ret) {
+               DRM_ERROR("failed to get hpd single ret = %d\n", ret);
+               goto out_dp_init;
+       }
+
        ret = analogix_dp_commit(dp);
        if (ret)
                goto out_dp_init;