summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2022-04-07 07:48:24 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2022-04-07 07:48:24 +0000
commit5e0262def453651ecb5fc66c6185ad08e23c09d5 (patch)
tree6a0918dfc05a5530a76e9029ee1817bffc3c9d07 /sys
parentc5763441311b78619914f857e9ca315dc5ecb009 (diff)
drm/i915: Disable DRRS on IVB/HSW port != A
From Ville Syrjala 5c66161cceaabc68912950893394e04c164ef7ad in linux 5.15.y/5.15.27 ee59792c97176f12c1da31f29fc4c2aab187f06e in mainline linux
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/drm/i915/display/intel_drrs.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/pci/drm/i915/display/intel_drrs.c b/sys/dev/pci/drm/i915/display/intel_drrs.c
index 7bee3e47661..ed26c02d382 100644
--- a/sys/dev/pci/drm/i915/display/intel_drrs.c
+++ b/sys/dev/pci/drm/i915/display/intel_drrs.c
@@ -445,6 +445,7 @@ intel_dp_drrs_init(struct intel_connector *connector,
struct drm_display_mode *fixed_mode)
{
struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+ struct intel_encoder *encoder = connector->encoder;
struct drm_display_mode *downclock_mode = NULL;
INIT_DELAYED_WORK(&dev_priv->drrs.work, intel_edp_drrs_downclock_work);
@@ -456,6 +457,13 @@ intel_dp_drrs_init(struct intel_connector *connector,
return NULL;
}
+ if ((DISPLAY_VER(dev_priv) < 8 && !HAS_GMCH(dev_priv)) &&
+ encoder->port != PORT_A) {
+ drm_dbg_kms(&dev_priv->drm,
+ "DRRS only supported on eDP port A\n");
+ return NULL;
+ }
+
if (dev_priv->vbt.drrs_type != SEAMLESS_DRRS_SUPPORT) {
drm_dbg_kms(&dev_priv->drm, "VBT doesn't support DRRS\n");
return NULL;