drm/i915: PSR: Remove Low Power HW tracking mask.
authorRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 7 Jul 2015 23:28:54 +0000 (16:28 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 9 Jul 2015 19:52:17 +0000 (21:52 +0200)
By Spec we should only mask memup and hotplug detection
for hardware tracking cases. However we always masked
LPSP because with power well always enabled on audio
PSR was never being activated and residency was always
zeroed.

Apparently audio driver is tying power well management
and runtime PM for some reason. But with audio runtime
PM working or with audio completely out of picture
we should remove this mask, otherwise we have a high
risk of miss screen updates as faced by Matthew.

WARNING: With this patch if snd_intel_hda driver is
running and not releasing power well properly PSR will
constant Exit and Performance Counter will be 0.

But the best thing of this patch is that with one more
HW tracking working the risks of missed blank screen
are minimized at most.

This affects just core platforms where PSR exit are also
helped by HW tracking: Haswell, Broadwell and Skylake
for now.

v2: Fix commit message explanation. It has nothing to do
with runtime PM on i915 as previously advertised.

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_psr.c

index 6db043f3c1ad73edcb5e016969fa9001ba4d02d6..24fa3c7e947f74a5e44d25c50442e0ee4172cccb 100644 (file)
@@ -400,7 +400,7 @@ void intel_psr_enable(struct intel_dp *intel_dp)
 
                /* Avoid continuous PSR exit by masking memup and hpd */
                I915_WRITE(EDP_PSR_DEBUG_CTL(dev), EDP_PSR_DEBUG_MASK_MEMUP |
-                          EDP_PSR_DEBUG_MASK_HPD | EDP_PSR_DEBUG_MASK_LPSP);
+                          EDP_PSR_DEBUG_MASK_HPD);
 
                /* Enable PSR on the panel */
                hsw_psr_enable_sink(intel_dp);