[PATCH 4/6] drm/i915/psr: Implement PSR workaround
José Roberto de Souza
jose.souza at intel.com
Sat Nov 2 01:05:51 UTC 2019
WA 1110 fix some missing flips when FBC and PSR is enabled.
BSpec: 21664
Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
---
drivers/gpu/drm/i915/display/intel_psr.c | 9 +++++++++
drivers/gpu/drm/i915/i915_reg.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 51d8a3231284..13218eaedd9a 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -764,6 +764,15 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp,
I915_WRITE(reg, chicken);
}
+ /* WA1110 */
+ if (IS_GEN(dev_priv, 9)) {
+ i915_reg_t reg = CHICKEN_TRANS(cpu_transcoder);
+ u32 chicken = I915_READ(reg);
+
+ chicken |= VBLANK_UNMASKED_PSR;
+ I915_WRITE(reg, chicken);
+ }
+
/*
* Per Spec: Avoid continuous PSR exit by masking MEMUP and HPD also
* mask LPSP to avoid dependency on other drivers that might block
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 53c280c4e741..b2e0e8c27969 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -7715,6 +7715,7 @@ enum {
[TRANSCODER_B] = _CHICKEN_TRANS_B, \
[TRANSCODER_C] = _CHICKEN_TRANS_C, \
[TRANSCODER_D] = _CHICKEN_TRANS_D))
+#define VBLANK_UNMASKED_PSR (1 << 30) /* SKL+ */
#define VSC_DATA_SEL_SOFTWARE_CONTROL (1 << 25) /* GLK and CNL+ */
#define DDI_TRAINING_OVERRIDE_ENABLE (1 << 19)
#define DDI_TRAINING_OVERRIDE_VALUE (1 << 18)
--
2.23.0
More information about the Intel-gfx-trybot
mailing list