summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/display/intel_panel.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2021-09-23 23:01:06 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2021-09-30 11:19:46 +0300
commit00fc3787d277299c39a7c35290e79375c6de9f24 (patch)
tree8b41856ed52e7778a7476c570df9a4cee04e704a /drivers/gpu/drm/i915/display/intel_panel.c
parent8a567b1102270bd1bbbd6686cfe859aa891648b9 (diff)
downloadlinux-00fc3787d277299c39a7c35290e79375c6de9f24.tar.gz
linux-00fc3787d277299c39a7c35290e79375c6de9f24.tar.bz2
linux-00fc3787d277299c39a7c35290e79375c6de9f24.zip
drm/i915: Reject modes that don't match fixed_mode vrefresh
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. References: https://gitlab.freedesktop.org/drm/intel/-/issues/2939 References: https://gitlab.freedesktop.org/drm/intel/-/issues/3969 Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210923200109.4459-4-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_panel.c')
-rw-r--r--drivers/gpu/drm/i915/display/intel_panel.c3
1 files changed, 3 insertions, 0 deletions
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;
}