drm: rockchip: hdmi: check sink max_tmds_clock in mode_valid
authorZheng Yang <zhengyang@rock-chips.com>
Wed, 21 Jun 2017 07:18:04 +0000 (15:18 +0800)
committerJianqun Xu <jay.xu@rock-chips.com>
Thu, 29 Jun 2017 06:20:49 +0000 (14:20 +0800)
If sink max TMDS clock < 340MHz, we think the mode pixel clock
greater than 340MHz should support YCbCr420, or it is a bad mode.

Change-Id: I9f53fa4f9875977ae0355b65d9ccd8a304558c5d
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c

index 104f8771bd31c571aa939c8f11c5e59daea7b68c..fafdd94fd2baf0eb23cc55117182473a10f62289 100644 (file)
@@ -888,6 +888,14 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector,
         */
        if (mode->clock > INT_MAX / 1000)
                return MODE_BAD;
+       /*
+        * If sink max TMDS clock < 340MHz, we should check the mode pixel
+        * clock > 340MHz is YCbCr420 or not.
+        */
+       if (mode->clock > 340000 &&
+           connector->display_info.max_tmds_clock < 340000 &&
+           !(mode->flags & DRM_MODE_FLAG_420_MASK))
+               return MODE_BAD;
 
        if (!encoder) {
                const struct drm_connector_helper_funcs *funcs;