diff mbox series

[v2,1/2,SRU,OEM-5.6] UBUNTU: SAUCE: drm/i915/psr: allow overriding PSR disable param by quirk

Message ID 20200930070515.711477-4-vicamo.yang@canonical.com
State New
Headers show
Series [v2,1/2,SRU,OEM-5.6] UBUNTU: SAUCE: drm/i915/psr: allow overriding PSR disable param by quirk | expand

Commit Message

You-Sheng Yang Sept. 30, 2020, 7:05 a.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1897501

HP ZBook Studio G7 equips an INX FHD N156HCG-GQ1 panel that renders
corrupted screen when PSR is disabled. This patch allows overriding
the default disabled i915_modparams.enable_psr since LP: #1849947 to
use chip default when a EDID match is on.

Signed-off-by: You-Sheng Yang <vicamo.yang@canonical.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 8 ++++++++
 include/drm/drm_dp_helper.h              | 8 ++++++++
 2 files changed, 16 insertions(+)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 8f50b249175d..a6a16ad026c8 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1423,6 +1423,14 @@  void intel_psr_init(struct drm_i915_private *dev_priv)
 		 */
 		dev_priv->hsw_psr_mmio_adjust = _SRD_CTL_EDP - _HSW_EDP_PSR_BASE;
 
+	/*
+	 * PSR was disabled by module parameters but the underlying panel is
+	 * depending on it, so use per-chip default to probe that automatically.
+	 */
+	if ((dev_priv->psr.dp->edid_quirks & BIT(DP_QUIRK_FORCE_PSR_CHIP_DEFAULT)) &&
+	    i915_modparams.enable_psr == 0)
+		i915_modparams.enable_psr = -1;
+
 	if (i915_modparams.enable_psr == -1)
 		if (INTEL_GEN(dev_priv) < 9 || !dev_priv->vbt.psr.enable)
 			i915_modparams.enable_psr = 0;
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 98e7fd15cc15..de4d8cdad02c 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -1548,6 +1548,14 @@  enum drm_dp_quirk {
 	 * capabilities advertised.
 	 */
 	DP_QUIRK_FORCE_DPCD_BACKLIGHT,
+	/**
+	 * @DP_QUIRK_FORCE_PSR_CHIP_DEFAULT
+	 *
+	 * PSR was disabled by default in Ubuntu 5.0 kernels and on, but some
+	 * platforms might be depending on them. If so, use per-chip default to
+	 * probe that automatically.
+	 */
+	DP_QUIRK_FORCE_PSR_CHIP_DEFAULT,
 };
 
 /**