diff mbox series

[OEM-5.10,1/1] drm/i915/icp+: Use icp_hpd_irq_setup() instead of spt_hpd_irq_setup()

Message ID 20210602124412.1939913-3-kai.heng.feng@canonical.com
State New
Headers show
Series Fix ICL PCH no picture after S3 | expand

Commit Message

Kai-Heng Feng June 2, 2021, 12:44 p.m. UTC
From: Lyude Paul <lyude@redhat.com>

BugLink: https://bugs.launchpad.net/bugs/1930582

While reviewing patches for handling workarounds related to gen9 bc, Imre
from Intel discovered that we're using spt_hpd_irq_setup() on ICP+ PCHs
despite it being almost the same as icp_hpd_irq_setup(). Since we need to
be calling icp_hpd_irq_setup() to ensure that CML-S/TGP platforms function
correctly anyway, let's move platforms using PCH_ICP which aren't handled
by gen11_hpd_irq_setup() over to icp_hpd_irq_setup().

Cc: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210217025337.1929015-2-lyude@redhat.com
(backported from commit cec3295b246b5555f6de7570d25a13a2754de245)
[khfeng: Introduce a new helper to avoid backporting an intrusive refactoring series]
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/gpu/drm/i915/i915_irq.c | 8 ++++++++
 1 file changed, 8 insertions(+)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index af7c1da4be7b5..706f73947de68 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -3082,6 +3082,12 @@  static void icp_hpd_irq_setup(struct drm_i915_private *dev_priv,
 		icp_tc_hpd_detection_setup(dev_priv, tc_enable_mask);
 }
 
+static void gen10_hpd_irq_setup(struct drm_i915_private *dev_priv)
+{
+	icp_hpd_irq_setup(dev_priv,
+			  ICP_DDI_HPD_ENABLE_MASK, ICP_TC_HPD_ENABLE_MASK);
+}
+
 /*
  * EHL doesn't need most of gen11_hpd_irq_setup, it's handling only the
  * equivalent of SDE.
@@ -4004,6 +4010,8 @@  void intel_irq_init(struct drm_i915_private *dev_priv)
 			dev_priv->display.hpd_irq_setup = gen11_hpd_irq_setup;
 		else if (IS_GEN9_LP(dev_priv))
 			dev_priv->display.hpd_irq_setup = bxt_hpd_irq_setup;
+		else if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP)
+			dev_priv->display.hpd_irq_setup = gen10_hpd_irq_setup;
 		else if (INTEL_PCH_TYPE(dev_priv) >= PCH_SPT)
 			dev_priv->display.hpd_irq_setup = spt_hpd_irq_setup;
 		else