diff options
-rw-r--r-- | samsung/exynos_drm_dp.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/samsung/exynos_drm_dp.c b/samsung/exynos_drm_dp.c index 597fce7..97786f2 100644 --- a/samsung/exynos_drm_dp.c +++ b/samsung/exynos_drm_dp.c @@ -955,6 +955,20 @@ static int dp_link_up(struct dp_device *dp) } } + /* + * Sanity-check DP_DPCD_REV and DP_MAX_LINK_RATE values. + * + * Per DP CTS test 4.2.2.2, on future sinks, these values can be + * higher than 0x14 (DPCD r1.4) and 0x1E (HBR3). + * + * If connected to such sink, adjust the max link rate to HBR3. + */ + if (dpcd[DP_DPCD_REV] > DP_DPCD_REV_14 && dpcd[DP_MAX_LINK_RATE] > DP_LINK_BW_8_1) { + dp_info(dp, "DP Sink: DPCD_%X MAX_LINK_RATE 0x%X, adjust max to HBR3\n", + dpcd[DP_DPCD_REV], dpcd[DP_MAX_LINK_RATE]); + dpcd[DP_MAX_LINK_RATE] = DP_LINK_BW_8_1; + } + /* Fill Sink Capabilities */ dp_fill_sink_caps(dp, dpcd); |