diff options
Diffstat (limited to 'arch/powerpc/sysdev/cpm2_pic.c')
| -rw-r--r-- | arch/powerpc/sysdev/cpm2_pic.c | 25 | 
1 files changed, 10 insertions, 15 deletions
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c index bda0e5b8ce2..c5844e9427b 100644 --- a/arch/powerpc/sysdev/cpm2_pic.c +++ b/arch/powerpc/sysdev/cpm2_pic.c @@ -115,26 +115,20 @@ static void cpm2_ack(struct irq_data *d)  static void cpm2_end_irq(struct irq_data *d)  { -	struct irq_desc *desc;  	int	bit, word;  	unsigned int irq_nr = virq_to_hw(d->irq); -	desc = irq_to_desc(irq_nr); -	if (!(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)) -			&& desc->action) { - -		bit = irq_to_siubit[irq_nr]; -		word = irq_to_siureg[irq_nr]; +	bit = irq_to_siubit[irq_nr]; +	word = irq_to_siureg[irq_nr]; -		ppc_cached_irq_mask[word] |= 1 << bit; -		out_be32(&cpm2_intctl->ic_simrh + word, ppc_cached_irq_mask[word]); +	ppc_cached_irq_mask[word] |= 1 << bit; +	out_be32(&cpm2_intctl->ic_simrh + word, ppc_cached_irq_mask[word]); -		/* -		 * Work around large numbers of spurious IRQs on PowerPC 82xx -		 * systems. -		 */ -		mb(); -	} +	/* +	 * Work around large numbers of spurious IRQs on PowerPC 82xx +	 * systems. +	 */ +	mb();  }  static int cpm2_set_irq_type(struct irq_data *d, unsigned int flow_type) @@ -202,6 +196,7 @@ static struct irq_chip cpm2_pic = {  	.irq_ack = cpm2_ack,  	.irq_eoi = cpm2_end_irq,  	.irq_set_type = cpm2_set_irq_type, +	.flags = IRQCHIP_EOI_IF_HANDLED,  };  unsigned int cpm2_get_irq(void)  |