On Thu, 2023-03-02 at 18:10 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Replace the hardcoded masks with just a loop over all hpd > pins using the <platform>_hotplug_mask() functions. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- Reviewed-by: Vinod Govindapillai <vinod.govindapillai@xxxxxxxxx> > drivers/gpu/drm/i915/i915_irq.c | 57 +++++++++++++-------------------- > 1 file changed, 22 insertions(+), 35 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 9d00b840727c..11c6a9ca3c23 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -82,6 +82,7 @@ static inline void pmu_irq_stats(struct drm_i915_private *i915, > > typedef bool (*long_pulse_detect_func)(enum hpd_pin pin, u32 val); > typedef u32 (*hotplug_enables_func)(struct intel_encoder *encoder); > +typedef u32 (*hotplug_mask_func)(enum hpd_pin pin); > > static const u32 hpd_ilk[HPD_NUM_PINS] = { > [HPD_PORT_A] = DE_DP_A_HOTPLUG, > @@ -878,6 +879,18 @@ static u32 intel_hpd_hotplug_irqs(struct drm_i915_private *dev_priv, > return hotplug_irqs; > } > > +static u32 intel_hpd_hotplug_mask(struct drm_i915_private *i915, > + hotplug_mask_func hotplug_mask) > +{ > + enum hpd_pin pin; > + u32 hotplug = 0; > + > + for_each_hpd_pin(pin) > + hotplug |= hotplug_mask(pin); > + > + return hotplug; > +} > + > static u32 intel_hpd_hotplug_enables(struct drm_i915_private *i915, > hotplug_enables_func hotplug_enables) > { > @@ -2886,10 +2899,7 @@ static void ibx_hpd_detection_setup(struct drm_i915_private *dev_priv) > * The pulse duration bits are reserved on LPT+. > */ > intel_uncore_rmw(&dev_priv->uncore, PCH_PORT_HOTPLUG, > - ibx_hotplug_mask(HPD_PORT_A) | > - ibx_hotplug_mask(HPD_PORT_B) | > - ibx_hotplug_mask(HPD_PORT_C) | > - ibx_hotplug_mask(HPD_PORT_D), > + intel_hpd_hotplug_mask(dev_priv, ibx_hotplug_mask), > intel_hpd_hotplug_enables(dev_priv, ibx_hotplug_enables)); > } > > @@ -2965,10 +2975,7 @@ static u32 icp_tc_hotplug_enables(struct intel_encoder *encoder) > static void icp_ddi_hpd_detection_setup(struct drm_i915_private *dev_priv) > { > intel_uncore_rmw(&dev_priv->uncore, SHOTPLUG_CTL_DDI, > - icp_ddi_hotplug_mask(HPD_PORT_A) | > - icp_ddi_hotplug_mask(HPD_PORT_B) | > - icp_ddi_hotplug_mask(HPD_PORT_C) | > - icp_ddi_hotplug_mask(HPD_PORT_D), > + intel_hpd_hotplug_mask(dev_priv, icp_ddi_hotplug_mask), > intel_hpd_hotplug_enables(dev_priv, icp_ddi_hotplug_enables)); > } > > @@ -2984,12 +2991,7 @@ static void icp_ddi_hpd_enable_detection(struct intel_encoder *encoder) > static void icp_tc_hpd_detection_setup(struct drm_i915_private *dev_priv) > { > intel_uncore_rmw(&dev_priv->uncore, SHOTPLUG_CTL_TC, > - icp_tc_hotplug_mask(HPD_PORT_TC1) | > - icp_tc_hotplug_mask(HPD_PORT_TC2) | > - icp_tc_hotplug_mask(HPD_PORT_TC3) | > - icp_tc_hotplug_mask(HPD_PORT_TC4) | > - icp_tc_hotplug_mask(HPD_PORT_TC5) | > - icp_tc_hotplug_mask(HPD_PORT_TC6), > + intel_hpd_hotplug_mask(dev_priv, icp_tc_hotplug_mask), > intel_hpd_hotplug_enables(dev_priv, icp_tc_hotplug_enables)); > } > > @@ -3075,12 +3077,7 @@ static void dg1_hpd_irq_setup(struct drm_i915_private *dev_priv) > static void gen11_tc_hpd_detection_setup(struct drm_i915_private *dev_priv) > { > intel_uncore_rmw(&dev_priv->uncore, GEN11_TC_HOTPLUG_CTL, > - gen11_hotplug_mask(HPD_PORT_TC1) | > - gen11_hotplug_mask(HPD_PORT_TC2) | > - gen11_hotplug_mask(HPD_PORT_TC3) | > - gen11_hotplug_mask(HPD_PORT_TC4) | > - gen11_hotplug_mask(HPD_PORT_TC5) | > - gen11_hotplug_mask(HPD_PORT_TC6), > + intel_hpd_hotplug_mask(dev_priv, gen11_hotplug_mask), > intel_hpd_hotplug_enables(dev_priv, gen11_hotplug_enables)); > } > > @@ -3096,12 +3093,7 @@ static void gen11_tc_hpd_enable_detection(struct intel_encoder *encoder) > static void gen11_tbt_hpd_detection_setup(struct drm_i915_private *dev_priv) > { > intel_uncore_rmw(&dev_priv->uncore, GEN11_TBT_HOTPLUG_CTL, > - gen11_hotplug_mask(HPD_PORT_TC1) | > - gen11_hotplug_mask(HPD_PORT_TC2) | > - gen11_hotplug_mask(HPD_PORT_TC3) | > - gen11_hotplug_mask(HPD_PORT_TC4) | > - gen11_hotplug_mask(HPD_PORT_TC5) | > - gen11_hotplug_mask(HPD_PORT_TC6), > + intel_hpd_hotplug_mask(dev_priv, gen11_hotplug_mask), > intel_hpd_hotplug_enables(dev_priv, gen11_hotplug_enables)); > } > > @@ -3199,14 +3191,11 @@ static void spt_hpd_detection_setup(struct drm_i915_private *dev_priv) > > /* Enable digital hotplug on the PCH */ > intel_uncore_rmw(&dev_priv->uncore, PCH_PORT_HOTPLUG, > - spt_hotplug_mask(HPD_PORT_A) | > - spt_hotplug_mask(HPD_PORT_B) | > - spt_hotplug_mask(HPD_PORT_C) | > - spt_hotplug_mask(HPD_PORT_D), > + intel_hpd_hotplug_mask(dev_priv, spt_hotplug_mask), > intel_hpd_hotplug_enables(dev_priv, spt_hotplug_enables)); > > intel_uncore_rmw(&dev_priv->uncore, PCH_PORT_HOTPLUG2, > - spt_hotplug2_mask(HPD_PORT_E), > + intel_hpd_hotplug_mask(dev_priv, spt_hotplug2_mask), > intel_hpd_hotplug_enables(dev_priv, spt_hotplug2_enables)); > } > > @@ -3275,7 +3264,7 @@ static void ilk_hpd_detection_setup(struct drm_i915_private *dev_priv) > * The pulse duration bits are reserved on HSW+. > */ > intel_uncore_rmw(&dev_priv->uncore, DIGITAL_PORT_HOTPLUG_CNTRL, > - ilk_hotplug_mask(HPD_PORT_A), > + intel_hpd_hotplug_mask(dev_priv, ilk_hotplug_mask), > intel_hpd_hotplug_enables(dev_priv, ilk_hotplug_enables)); > } > > @@ -3349,9 +3338,7 @@ static u32 bxt_hotplug_enables(struct intel_encoder *encoder) > static void bxt_hpd_detection_setup(struct drm_i915_private *dev_priv) > { > intel_uncore_rmw(&dev_priv->uncore, PCH_PORT_HOTPLUG, > - bxt_hotplug_mask(HPD_PORT_A) | > - bxt_hotplug_mask(HPD_PORT_B) | > - bxt_hotplug_mask(HPD_PORT_C), > + intel_hpd_hotplug_mask(dev_priv, bxt_hotplug_mask), > intel_hpd_hotplug_enables(dev_priv, bxt_hotplug_enables)); > } >