diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index 864d81ea0167..7f38d9c4fb91 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -353,6 +353,7 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector, struct drm_device *dev = connector->dev; struct rockchip_drm_private *priv = dev->dev_private; struct drm_crtc *crtc; + struct rockchip_hdmi *hdmi; /* * Pixel clocks we support are always < 2GHz and so fit in an @@ -385,6 +386,11 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector, if (!encoder || !encoder->possible_crtcs) return MODE_BAD; + + hdmi = to_rockchip_hdmi(encoder); + if (hdmi->max_tmdsclk <= 340000 && mode->clock > 340000 && + !drm_mode_is_420(&connector->display_info, mode)) + return MODE_BAD; /* * ensure all drm display mode can work, if someone want support more * resolutions, please limit the possible_crtc, only connect to