Damien Lespiau <damien.lespiau@xxxxxxxxx> writes: > From: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> > > Use the new AUX port irq bits where needed. > > v2: Rebase on top of upstream changes > v3: Rebase on top of Oscar change to write IIR as soon as possible (Damien) > v4: Rebase on top of the for_each_pipe() change adding dev_priv as first > argument (Damien) > > Signed-off-by: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> > Signed-off-by: Damien Lespiau <damien.lespiau@xxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_irq.c | 17 +++++++++++++---- > drivers/gpu/drm/i915/i915_reg.h | 3 +++ > 2 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 734b73e..8c7fbfb 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -2542,6 +2542,11 @@ static irqreturn_t gen8_irq_handler(int irq, void *arg) > irqreturn_t ret = IRQ_NONE; > uint32_t tmp = 0; > enum pipe pipe; > + u32 aux_mask = GEN8_AUX_CHANNEL_A; > + > + if (IS_GEN9(dev)) > + aux_mask |= GEN9_AUX_CHANNEL_B | GEN9_AUX_CHANNEL_C | > + GEN9_AUX_CHANNEL_D; > > master_ctl = I915_READ(GEN8_MASTER_IRQ); > master_ctl &= ~GEN8_MASTER_IRQ_CONTROL; > @@ -2574,7 +2579,8 @@ static irqreturn_t gen8_irq_handler(int irq, void *arg) > if (tmp) { > I915_WRITE(GEN8_DE_PORT_IIR, tmp); > ret = IRQ_HANDLED; > - if (tmp & GEN8_AUX_CHANNEL_A) > + > + if (tmp & aux_mask) > dp_aux_irq_handler(dev); > else > DRM_ERROR("Unexpected DE Port interrupt\n"); > @@ -3859,11 +3865,14 @@ static void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv) > uint32_t de_pipe_masked = GEN8_PIPE_CDCLK_CRC_DONE; > uint32_t de_pipe_enables; > int pipe; > + u32 aux_en = GEN8_AUX_CHANNEL_A; > > - if (IS_GEN9(dev_priv)) > + if (IS_GEN9(dev_priv)) { > de_pipe_masked |= GEN9_PIPE_PLANE1_FLIP_DONE | > GEN9_DE_PIPE_IRQ_FAULT_ERRORS; > - else > + aux_en |= GEN9_AUX_CHANNEL_B | GEN9_AUX_CHANNEL_C | > + GEN9_AUX_CHANNEL_D; > + } else > de_pipe_masked |= GEN8_PIPE_PRIMARY_FLIP_DONE | > GEN8_DE_PIPE_IRQ_FAULT_ERRORS; > > @@ -3881,7 +3890,7 @@ static void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv) > dev_priv->de_irq_mask[pipe], > de_pipe_enables); > > - GEN5_IRQ_INIT(GEN8_DE_PORT_, ~GEN8_AUX_CHANNEL_A, GEN8_AUX_CHANNEL_A); > + GEN5_IRQ_INIT(GEN8_DE_PORT_, ~aux_en, aux_en); > } > > static int gen8_irq_postinstall(struct drm_device *dev) > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index 35c0759..217001d 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -4990,6 +4990,9 @@ enum skl_disp_power_wells { > #define GEN8_DE_PORT_IIR 0x44448 > #define GEN8_DE_PORT_IER 0x4444c > #define GEN8_PORT_DP_A_HOTPLUG (1 << 3) > +#define GEN9_AUX_CHANNEL_D (1 << 27) > +#define GEN9_AUX_CHANNEL_C (1 << 26) > +#define GEN9_AUX_CHANNEL_B (1 << 25) > #define GEN8_AUX_CHANNEL_A (1 << 0) > > #define GEN8_DE_MISC_ISR 0x44460 > -- > 1.8.3.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx