]> Pileus Git - ~andy/linux/blobdiff - arch/arm/mach-versatile/core.c
Merge tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[~andy/linux] / arch / arm / mach-versatile / core.c
index a42b89083eb25c8ce6d8e551dc4082e977085cc7..25160aeaa3b7fe30b9e0cd26cc5e5449b444ca5f 100644 (file)
@@ -37,6 +37,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>
 #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
@@ -114,7 +127,7 @@ void __init versatile_init_irq(void)
        writel(PIC_MASK, VA_SIC_BASE + SIC_INT_PIC_ENABLE);
 }
 
-static struct map_desc versatile_io_desc[] __initdata = {
+static struct map_desc versatile_io_desc[] __initdata __maybe_unused = {
        {
                .virtual        =  IO_ADDRESS(VERSATILE_SYS_BASE),
                .pfn            = __phys_to_pfn(VERSATILE_SYS_BASE),