diff options
| -rw-r--r-- | arch/arm/mach-versatile/core.c | 15 | ||||
| -rw-r--r-- | arch/arm/mach-versatile/pci.c | 11 | 
2 files changed, 20 insertions, 6 deletions
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 5d5929450366..a78827b70270 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c @@ -36,6 +36,7 @@  #include <linux/gfp.h>  #include <linux/clkdev.h>  #include <linux/mtd/physmap.h> +#include <linux/bitops.h>  #include <asm/irq.h>  #include <asm/hardware/arm_timer.h> @@ -65,16 +66,28 @@  #define VA_VIC_BASE		__io_address(VERSATILE_VIC_BASE)  #define VA_SIC_BASE		__io_address(VERSATILE_SIC_BASE) +/* These PIC IRQs are valid in each configuration */ +#define PIC_VALID_ALL	BIT(SIC_INT_KMI0) | BIT(SIC_INT_KMI1) | \ +			BIT(SIC_INT_SCI3) | BIT(SIC_INT_UART3) | \ +			BIT(SIC_INT_CLCD) | BIT(SIC_INT_TOUCH) | \ +			BIT(SIC_INT_KEYPAD) | BIT(SIC_INT_DoC) | \ +			BIT(SIC_INT_USB) | BIT(SIC_INT_PCI0) | \ +			BIT(SIC_INT_PCI1) | BIT(SIC_INT_PCI2) | \ +			BIT(SIC_INT_PCI3)  #if 1  #define IRQ_MMCI0A	IRQ_VICSOURCE22  #define IRQ_AACI	IRQ_VICSOURCE24  #define IRQ_ETH		IRQ_VICSOURCE25  #define PIC_MASK	0xFFD00000 +#define PIC_VALID	PIC_VALID_ALL  #else  #define IRQ_MMCI0A	IRQ_SIC_MMCI0A  #define IRQ_AACI	IRQ_SIC_AACI  #define IRQ_ETH		IRQ_SIC_ETH  #define PIC_MASK	0 +#define PIC_VALID	PIC_VALID_ALL | BIT(SIC_INT_MMCI0A) | \ +			BIT(SIC_INT_MMCI1A) | BIT(SIC_INT_AACI) | \ +			BIT(SIC_INT_ETH)  #endif  /* Lookup table for finding a DT node that represents the vic instance */ @@ -102,7 +115,7 @@ void __init versatile_init_irq(void)  					      VERSATILE_SIC_BASE);  	fpga_irq_init(VA_SIC_BASE, "SIC", IRQ_SIC_START, -		IRQ_VICSOURCE31, ~PIC_MASK, np); +		IRQ_VICSOURCE31, PIC_VALID, np);  	/*  	 * Interrupts on secondary controller from 0 to 8 are routed to diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index 2f84f4094f13..e92e5e0705bc 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c @@ -23,6 +23,7 @@  #include <linux/io.h>  #include <mach/hardware.h> +#include <mach/irqs.h>  #include <asm/irq.h>  #include <asm/mach/pci.h> @@ -327,12 +328,12 @@ static int __init versatile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)  	int irq;  	/* slot,  pin,	irq -	 *  24     1     27 -	 *  25     1     28 -	 *  26     1     29 -	 *  27     1     30 +	 *  24     1     IRQ_SIC_PCI0 +	 *  25     1     IRQ_SIC_PCI1 +	 *  26     1     IRQ_SIC_PCI2 +	 *  27     1     IRQ_SIC_PCI3  	 */ -	irq = 27 + ((slot - 24 + pin - 1) & 3); +	irq = IRQ_SIC_PCI0 + ((slot - 24 + pin - 1) & 3);  	return irq;  }  | 
