mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-09 15:24:32 +08:00
drm/i915: extract AUX mask assignment to separate function
No change in behavior, this only allows to more easily follow the flow of gen8_de_irq_handler without the mask assignments for each platform. This also re-organizes the branches a little bit, so the one-off case for CNL_WITH_PORT_F is separate from the generic gen >= 11. v2: rename de_port_iir_aux_mask -> gen8_de_port_aux_mask (Ville) Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Jose Souza <jose.souza@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190226004900.26047-1-lucas.demarchi@intel.com
This commit is contained in:
parent
510a75a5d2
commit
9d17210fa2
@ -2676,6 +2676,25 @@ static void gen11_hpd_irq_handler(struct drm_i915_private *dev_priv, u32 iir)
|
|||||||
DRM_ERROR("Unexpected DE HPD interrupt 0x%08x\n", iir);
|
DRM_ERROR("Unexpected DE HPD interrupt 0x%08x\n", iir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static u32 gen8_de_port_aux_mask(struct drm_i915_private *dev_priv)
|
||||||
|
{
|
||||||
|
u32 mask = GEN8_AUX_CHANNEL_A;
|
||||||
|
|
||||||
|
if (INTEL_GEN(dev_priv) >= 9)
|
||||||
|
mask |= GEN9_AUX_CHANNEL_B |
|
||||||
|
GEN9_AUX_CHANNEL_C |
|
||||||
|
GEN9_AUX_CHANNEL_D;
|
||||||
|
|
||||||
|
if (IS_CNL_WITH_PORT_F(dev_priv))
|
||||||
|
mask |= CNL_AUX_CHANNEL_F;
|
||||||
|
|
||||||
|
if (INTEL_GEN(dev_priv) >= 11)
|
||||||
|
mask |= ICL_AUX_CHANNEL_E |
|
||||||
|
CNL_AUX_CHANNEL_F;
|
||||||
|
|
||||||
|
return mask;
|
||||||
|
}
|
||||||
|
|
||||||
static irqreturn_t
|
static irqreturn_t
|
||||||
gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
|
gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
|
||||||
{
|
{
|
||||||
@ -2731,20 +2750,7 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
|
|||||||
I915_WRITE(GEN8_DE_PORT_IIR, iir);
|
I915_WRITE(GEN8_DE_PORT_IIR, iir);
|
||||||
ret = IRQ_HANDLED;
|
ret = IRQ_HANDLED;
|
||||||
|
|
||||||
tmp_mask = GEN8_AUX_CHANNEL_A;
|
if (iir & gen8_de_port_aux_mask(dev_priv)) {
|
||||||
if (INTEL_GEN(dev_priv) >= 9)
|
|
||||||
tmp_mask |= GEN9_AUX_CHANNEL_B |
|
|
||||||
GEN9_AUX_CHANNEL_C |
|
|
||||||
GEN9_AUX_CHANNEL_D;
|
|
||||||
|
|
||||||
if (INTEL_GEN(dev_priv) >= 11)
|
|
||||||
tmp_mask |= ICL_AUX_CHANNEL_E;
|
|
||||||
|
|
||||||
if (IS_CNL_WITH_PORT_F(dev_priv) ||
|
|
||||||
INTEL_GEN(dev_priv) >= 11)
|
|
||||||
tmp_mask |= CNL_AUX_CHANNEL_F;
|
|
||||||
|
|
||||||
if (iir & tmp_mask) {
|
|
||||||
dp_aux_irq_handler(dev_priv);
|
dp_aux_irq_handler(dev_priv);
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user