Skip to content

Commit ee59792

Browse files
vsyrjalatursulin
authored andcommitted
drm/i915: Disable DRRS on IVB/HSW port != A
Currently we allow DRRS on IVB PCH ports, but we're missing a few programming steps meaning it is guaranteed to not work. And on HSW DRRS is not supported on anything but port A ever as only transcoder EDP has the M2/N2 registers (though I'm not sure if HSW ever has eDP on any other port). Starting from BDW all transcoders have the dynamically reprogrammable M/N registers so DRRS could work on any port. Stop initializing DRRS on ports where it cannot possibly work. Cc: [email protected] Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Jani Nikula <[email protected]> (cherry picked from commit f0d4ce5) Signed-off-by: Tvrtko Ursulin <[email protected]>
1 parent eb48d42 commit ee59792

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

drivers/gpu/drm/i915/display/intel_drrs.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,7 @@ intel_drrs_init(struct intel_connector *connector,
405405
struct drm_display_mode *fixed_mode)
406406
{
407407
struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
408+
struct intel_encoder *encoder = connector->encoder;
408409
struct drm_display_mode *downclock_mode = NULL;
409410

410411
INIT_DELAYED_WORK(&dev_priv->drrs.work, intel_drrs_downclock_work);
@@ -416,6 +417,13 @@ intel_drrs_init(struct intel_connector *connector,
416417
return NULL;
417418
}
418419

420+
if ((DISPLAY_VER(dev_priv) < 8 && !HAS_GMCH(dev_priv)) &&
421+
encoder->port != PORT_A) {
422+
drm_dbg_kms(&dev_priv->drm,
423+
"DRRS only supported on eDP port A\n");
424+
return NULL;
425+
}
426+
419427
if (dev_priv->vbt.drrs_type != SEAMLESS_DRRS_SUPPORT) {
420428
drm_dbg_kms(&dev_priv->drm, "VBT doesn't support DRRS\n");
421429
return NULL;

0 commit comments

Comments
 (0)