mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-24 07:33:04 +00:00
41 lines
1.3 KiB
Diff
41 lines
1.3 KiB
Diff
|
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;
|
||
|
}
|
||
|
|