2022-05-16 21:40:32 +00:00
|
|
|
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
|
2022-05-18 14:32:03 +00:00
|
|
|
@@ -1255,12 +1255,18 @@ static enum drm_mode_status
|
2022-05-16 21:40:32 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|