diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0632-drm-vc4-hdmi-Take-the-sink-maximum-TMDS-clock-into-a.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.15/950-0632-drm-vc4-hdmi-Take-the-sink-maximum-TMDS-clock-into-a.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0632-drm-vc4-hdmi-Take-the-sink-maximum-TMDS-clock-into-a.patch b/target/linux/bcm27xx/patches-5.15/950-0632-drm-vc4-hdmi-Take-the-sink-maximum-TMDS-clock-into-a.patch new file mode 100644 index 0000000000..b9b1636b16 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.15/950-0632-drm-vc4-hdmi-Take-the-sink-maximum-TMDS-clock-into-a.patch @@ -0,0 +1,40 @@ +From e63d40712a11de18ea217c2211dfd3ae937bab7f Mon Sep 17 00:00:00 2001 +From: Maxime Ripard <maxime@cerno.tech> +Date: Mon, 13 Dec 2021 15:33:11 +0100 +Subject: [PATCH] drm/vc4: hdmi: Take the sink maximum TMDS clock into + account + +In the function that validates that the clock isn't too high, we've only +taken our controller limitations into account so far. + +However, the sink can have a limit on the maximum TMDS clock it can deal +with too which is exposed through the EDID and the drm_display_info. + +Make sure we check it. + +Signed-off-by: Maxime Ripard <maxime@cerno.tech> +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -1254,12 +1254,18 @@ static enum drm_mode_status + vc4_hdmi_encoder_clock_valid(const struct vc4_hdmi *vc4_hdmi, + unsigned long long clock) + { ++ const struct drm_connector *connector = &vc4_hdmi->connector; ++ const struct drm_display_info *info = &connector->display_info; ++ + if (clock > vc4_hdmi->variant->max_pixel_clock) + return MODE_CLOCK_HIGH; + + if (vc4_hdmi->disable_4kp60 && clock > HDMI_14_MAX_TMDS_CLK) + return MODE_CLOCK_HIGH; + ++ if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000)) ++ return MODE_CLOCK_HIGH; ++ + return MODE_OK; + } + |