HDMI2.1 requires some higher resolution video modes to be enumerated only if HDMI2.1 Fixed Rate Link (FRL) is supported. Current platforms do not support FRL transmission so prune modes that require HDMI2.1 FRL. Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx> --- drivers/gpu/drm/i915/display/intel_hdmi.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index ebd91aa69dd2..93c00b61795f 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -1974,6 +1974,20 @@ intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock, return status; } +/* + * HDMI2.1 requires higher resolution modes like 8k60, 4K120 to be + * enumerated only if FRL is supported. Platforms not supporting FRL + * must prune these modes. + */ +static bool +hdmi21_frl_quirk(int dotclock, bool frl_supported) +{ + if (dotclock >= 600000 && !frl_supported) + return true; + + return false; +} + static enum drm_mode_status intel_hdmi_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) @@ -2001,6 +2015,13 @@ intel_hdmi_mode_valid(struct drm_connector *connector, clock *= 2; } + /* + * Current Platforms do not support HDMI2.1 FRL mode of transmission, + * so prune the modes that require FRL. + */ + if (hdmi21_frl_quirk(clock, false)) + return MODE_BAD; + ycbcr_420_only = drm_mode_is_420_only(&connector->display_info, mode); status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, ycbcr_420_only); -- 2.25.1