diff mbox series

[3/6] drm/i915: Reject modes that don't match fixed_mode vrefresh

Message ID 20210923200109.4459-4-ville.syrjala@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915: Reject bogus modes with fixed mode panels | expand

Commit Message

Ville Syrjälä Sept. 23, 2021, 8:01 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

When using a fixed mode we won't change the refresh rate ever.
So filter out all modes that don't match the fixed_mode's refresh
rate.

I'm going to declare the "rounded to nearest Hz refresh
rates must match" approach good enough for now.

Note that we could start supporting multiple refresh rates
with panels that can do it, but that would mean replacing
the single fixed mode concept with a list of fixed modes.
Then we could look for the closest match to the user's
requested refresh rate and use that. But all of that would
be a fair bit of work so we'll leave it for later.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_panel.c | 3 +++
 1 file changed, 3 insertions(+)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
index 8a364bb1ce41..b2ad0f065218 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -497,6 +497,9 @@  intel_panel_mode_valid(struct intel_connector *connector,
 	if (mode->vdisplay != fixed_mode->vdisplay)
 		return MODE_PANEL;
 
+	if (drm_mode_vrefresh(mode) != drm_mode_vrefresh(fixed_mode))
+		return MODE_PANEL;
+
 	return MODE_OK;
 }