diff options
Diffstat (limited to 'arch/arm/mach-lpc32xx/irq.c')
| -rw-r--r-- | arch/arm/mach-lpc32xx/irq.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c index 5b1cc35e6fb..3c633275335 100644 --- a/arch/arm/mach-lpc32xx/irq.c +++ b/arch/arm/mach-lpc32xx/irq.c @@ -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;  }  |