From: Ville Syrjälä <[email protected]>

Introduce intel_hpd_hotplug_irqs() as a partner to
intel_hpd_enabled_irqs(). There's no need to care about the
encoders which we're not exposing, so we can avoid hardocoding
the masks in various places.

Signed-off-by: Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/i915_irq.c | 50 +++++++++++++++------------------
 1 file changed, 23 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 95ab4432a87d..b8a6a21f4c54 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2943,6 +2943,18 @@ static u32 intel_hpd_enabled_irqs(struct 
drm_i915_private *dev_priv,
        return enabled_irqs;
 }
 
+static u32 intel_hpd_hotplug_irqs(struct drm_i915_private *dev_priv,
+                                 const u32 hpd[HPD_NUM_PINS])
+{
+       struct intel_encoder *encoder;
+       u32 hotplug_irqs = 0;
+
+       for_each_intel_encoder(&dev_priv->drm, encoder)
+               hotplug_irqs |= hpd[encoder->hpd_pin];
+
+       return hotplug_irqs;
+}
+
 static void ibx_hpd_detection_setup(struct drm_i915_private *dev_priv)
 {
        u32 hotplug;
@@ -2972,12 +2984,8 @@ static void ibx_hpd_irq_setup(struct drm_i915_private 
*dev_priv)
 {
        u32 hotplug_irqs, enabled_irqs;
 
-       if (HAS_PCH_IBX(dev_priv))
-               hotplug_irqs = SDE_HOTPLUG_MASK;
-       else
-               hotplug_irqs = SDE_HOTPLUG_MASK_CPT;
-
        enabled_irqs = intel_hpd_enabled_irqs(dev_priv, 
dev_priv->hotplug.pch_hpd);
+       hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, 
dev_priv->hotplug.pch_hpd);
 
        ibx_display_interrupt_update(dev_priv, hotplug_irqs, enabled_irqs);
 
@@ -3005,13 +3013,12 @@ static void icp_tc_hpd_detection_setup(struct 
drm_i915_private *dev_priv,
 }
 
 static void icp_hpd_irq_setup(struct drm_i915_private *dev_priv,
-                             u32 sde_ddi_mask, u32 sde_tc_mask,
                              u32 ddi_enable_mask, u32 tc_enable_mask)
 {
        u32 hotplug_irqs, enabled_irqs;
 
-       hotplug_irqs = sde_ddi_mask | sde_tc_mask;
        enabled_irqs = intel_hpd_enabled_irqs(dev_priv, 
dev_priv->hotplug.pch_hpd);
+       hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, 
dev_priv->hotplug.pch_hpd);
 
        I915_WRITE(SHPD_FILTER_CNT, SHPD_FILTER_CNT_500_ADJ);
 
@@ -3029,7 +3036,6 @@ static void icp_hpd_irq_setup(struct drm_i915_private 
*dev_priv,
 static void mcc_hpd_irq_setup(struct drm_i915_private *dev_priv)
 {
        icp_hpd_irq_setup(dev_priv,
-                         SDE_DDI_MASK_ICP, SDE_TC_HOTPLUG_ICP(PORT_TC1),
                          ICP_DDI_HPD_ENABLE_MASK, ICP_TC_HPD_ENABLE(PORT_TC1));
 }
 
@@ -3041,7 +3047,6 @@ static void mcc_hpd_irq_setup(struct drm_i915_private 
*dev_priv)
 static void jsp_hpd_irq_setup(struct drm_i915_private *dev_priv)
 {
        icp_hpd_irq_setup(dev_priv,
-                         SDE_DDI_MASK_TGP, 0,
                          TGP_DDI_HPD_ENABLE_MASK, 0);
 }
 
@@ -3074,7 +3079,7 @@ static void gen11_hpd_irq_setup(struct drm_i915_private 
*dev_priv)
        u32 val;
 
        enabled_irqs = intel_hpd_enabled_irqs(dev_priv, dev_priv->hotplug.hpd);
-       hotplug_irqs = GEN11_DE_TC_HOTPLUG_MASK | GEN11_DE_TBT_HOTPLUG_MASK;
+       hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, dev_priv->hotplug.hpd);
 
        val = I915_READ(GEN11_DE_HPD_IMR);
        val &= ~hotplug_irqs;
@@ -3085,10 +3090,10 @@ static void gen11_hpd_irq_setup(struct drm_i915_private 
*dev_priv)
        gen11_hpd_detection_setup(dev_priv);
 
        if (INTEL_PCH_TYPE(dev_priv) >= PCH_TGP)
-               icp_hpd_irq_setup(dev_priv, SDE_DDI_MASK_TGP, SDE_TC_MASK_TGP,
+               icp_hpd_irq_setup(dev_priv,
                                  TGP_DDI_HPD_ENABLE_MASK, 
TGP_TC_HPD_ENABLE_MASK);
        else if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP)
-               icp_hpd_irq_setup(dev_priv, SDE_DDI_MASK_ICP, SDE_TC_MASK_ICP,
+               icp_hpd_irq_setup(dev_priv,
                                  ICP_DDI_HPD_ENABLE_MASK, 
ICP_TC_HPD_ENABLE_MASK);
 }
 
@@ -3124,8 +3129,8 @@ static void spt_hpd_irq_setup(struct drm_i915_private 
*dev_priv)
        if (INTEL_PCH_TYPE(dev_priv) >= PCH_CNP)
                I915_WRITE(SHPD_FILTER_CNT, SHPD_FILTER_CNT_500_ADJ);
 
-       hotplug_irqs = SDE_HOTPLUG_MASK_SPT;
        enabled_irqs = intel_hpd_enabled_irqs(dev_priv, 
dev_priv->hotplug.pch_hpd);
+       hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, 
dev_priv->hotplug.pch_hpd);
 
        ibx_display_interrupt_update(dev_priv, hotplug_irqs, enabled_irqs);
 
@@ -3152,22 +3157,13 @@ static void ilk_hpd_irq_setup(struct drm_i915_private 
*dev_priv)
 {
        u32 hotplug_irqs, enabled_irqs;
 
-       if (INTEL_GEN(dev_priv) >= 8) {
-               hotplug_irqs = GEN8_PORT_DP_A_HOTPLUG;
-               enabled_irqs = intel_hpd_enabled_irqs(dev_priv, 
dev_priv->hotplug.hpd);
+       enabled_irqs = intel_hpd_enabled_irqs(dev_priv, dev_priv->hotplug.hpd);
+       hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, dev_priv->hotplug.hpd);
 
+       if (INTEL_GEN(dev_priv) >= 8)
                bdw_update_port_irq(dev_priv, hotplug_irqs, enabled_irqs);
-       } else if (INTEL_GEN(dev_priv) >= 7) {
-               hotplug_irqs = DE_DP_A_HOTPLUG_IVB;
-               enabled_irqs = intel_hpd_enabled_irqs(dev_priv, 
dev_priv->hotplug.hpd);
-
+       else
                ilk_update_display_irq(dev_priv, hotplug_irqs, enabled_irqs);
-       } else {
-               hotplug_irqs = DE_DP_A_HOTPLUG;
-               enabled_irqs = intel_hpd_enabled_irqs(dev_priv, 
dev_priv->hotplug.hpd);
-
-               ilk_update_display_irq(dev_priv, hotplug_irqs, enabled_irqs);
-       }
 
        ilk_hpd_detection_setup(dev_priv);
 
@@ -3216,7 +3212,7 @@ static void bxt_hpd_irq_setup(struct drm_i915_private 
*dev_priv)
        u32 hotplug_irqs, enabled_irqs;
 
        enabled_irqs = intel_hpd_enabled_irqs(dev_priv, dev_priv->hotplug.hpd);
-       hotplug_irqs = BXT_DE_PORT_HOTPLUG_MASK;
+       hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, dev_priv->hotplug.hpd);
 
        bdw_update_port_irq(dev_priv, hotplug_irqs, enabled_irqs);
 
-- 
2.26.2

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to