diff --git a/msm/dp/dp_panel.c b/msm/dp/dp_panel.c index 4e9cbb515c..1e491bec52 100644 --- a/msm/dp/dp_panel.c +++ b/msm/dp/dp_panel.c @@ -3113,15 +3113,17 @@ int dp_panel_sink_crc_enable(struct dp_panel *dp_panel, bool enable) panel = container_of(dp_panel, struct dp_panel_private, dp_panel); drm_aux = panel->aux->drm_aux; - ret = drm_dp_dpcd_readb(drm_aux, DP_TEST_SINK, &buf); - if (ret < 0) - return ret; + if (dp_panel->link_info.capabilities & DP_LINK_CAP_CRC) { + ret = drm_dp_dpcd_readb(drm_aux, DP_TEST_SINK, &buf); + if (ret < 0) + return ret; - ret = drm_dp_dpcd_writeb(drm_aux, DP_TEST_SINK, buf | DP_TEST_SINK_START); - if (ret < 0) - return ret; + ret = drm_dp_dpcd_writeb(drm_aux, DP_TEST_SINK, buf | DP_TEST_SINK_START); + if (ret < 0) + return ret; - drm_dp_dpcd_readb(drm_aux, DP_TEST_SINK, &buf); + drm_dp_dpcd_readb(drm_aux, DP_TEST_SINK, &buf); + } return rc; }