Эх сурвалжийг харах

[ARM] 3582/1: AT91RM9200 IRQ trigger types

Patch from Andrew Victor

The AIC interrupt controller's set_irq_type() can also be used for
internal interrupts.  IRQT_LOW and IRQT_FALLING are the only options not
supported for the internal interrupts.

[Original patch from Karl Olsen]

Signed-off-by: Andrew Victor <andrew@sanpeople.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Andrew Victor 19 жил өмнө
parent
commit
37f2e4bc12

+ 4 - 4
arch/arm/mach-at91rm9200/irq.c

@@ -92,10 +92,6 @@ static int at91rm9200_irq_type(unsigned irq, unsigned type)
 {
 {
 	unsigned int smr, srctype;
 	unsigned int smr, srctype;
 
 
-	/* change triggering only for FIQ and external IRQ0..IRQ6 */
-	if ((irq < AT91_ID_IRQ0) && (irq != AT91_ID_FIQ))
-		return -EINVAL;
-
 	switch (type) {
 	switch (type) {
 	case IRQT_HIGH:
 	case IRQT_HIGH:
 		srctype = AT91_AIC_SRCTYPE_HIGH;
 		srctype = AT91_AIC_SRCTYPE_HIGH;
@@ -104,9 +100,13 @@ static int at91rm9200_irq_type(unsigned irq, unsigned type)
 		srctype = AT91_AIC_SRCTYPE_RISING;
 		srctype = AT91_AIC_SRCTYPE_RISING;
 		break;
 		break;
 	case IRQT_LOW:
 	case IRQT_LOW:
+		if ((irq > AT91_ID_FIQ) && (irq < AT91_ID_IRQ0))	/* only supported on external interrupts */
+			return -EINVAL;
 		srctype = AT91_AIC_SRCTYPE_LOW;
 		srctype = AT91_AIC_SRCTYPE_LOW;
 		break;
 		break;
 	case IRQT_FALLING:
 	case IRQT_FALLING:
+		if ((irq > AT91_ID_FIQ) && (irq < AT91_ID_IRQ0))	/* only supported on external interrupts */
+			return -EINVAL;
 		srctype = AT91_AIC_SRCTYPE_FALLING;
 		srctype = AT91_AIC_SRCTYPE_FALLING;
 		break;
 		break;
 	default:
 	default: