mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 00:21:32 +00:00
ARM: LPC32xx: Use handle_edge_irq() callback on edge type irqs
irq.c uses handle_level_irq() as the unconditional default handler. This patch uses handle_edge_irq() instead for edge type irqs. Signed-off-by: Roland Stigge <stigge@antcom.de> Acked-by: Srinivas Bakki <srinivas.bakki@nxp.com>
This commit is contained in:
parent
4cbe5a555f
commit
4607d65ab3
@ -283,21 +283,25 @@ static int lpc32xx_set_irq_type(struct irq_data *d, unsigned int type)
|
||||
case IRQ_TYPE_EDGE_RISING:
|
||||
/* Rising edge sensitive */
|
||||
__lpc32xx_set_irq_type(d->hwirq, 1, 1);
|
||||
__irq_set_handler_locked(d->hwirq, handle_edge_irq);
|
||||
break;
|
||||
|
||||
case IRQ_TYPE_EDGE_FALLING:
|
||||
/* Falling edge sensitive */
|
||||
__lpc32xx_set_irq_type(d->hwirq, 0, 1);
|
||||
__irq_set_handler_locked(d->hwirq, handle_edge_irq);
|
||||
break;
|
||||
|
||||
case IRQ_TYPE_LEVEL_LOW:
|
||||
/* Low level sensitive */
|
||||
__lpc32xx_set_irq_type(d->hwirq, 0, 0);
|
||||
__irq_set_handler_locked(d->hwirq, handle_level_irq);
|
||||
break;
|
||||
|
||||
case IRQ_TYPE_LEVEL_HIGH:
|
||||
/* High level sensitive */
|
||||
__lpc32xx_set_irq_type(d->hwirq, 1, 0);
|
||||
__irq_set_handler_locked(d->hwirq, handle_level_irq);
|
||||
break;
|
||||
|
||||
/* Other modes are not supported */
|
||||
@ -305,9 +309,6 @@ static int lpc32xx_set_irq_type(struct irq_data *d, unsigned int type)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Ok to use the level handler for all types */
|
||||
irq_set_handler(d->hwirq, handle_level_irq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user