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 @@ | |||
36 | #include <linux/gfp.h> | 36 | #include <linux/gfp.h> |
37 | #include <linux/clkdev.h> | 37 | #include <linux/clkdev.h> |
38 | #include <linux/mtd/physmap.h> | 38 | #include <linux/mtd/physmap.h> |
39 | #include <linux/bitops.h> | ||
39 | 40 | ||
40 | #include <asm/irq.h> | 41 | #include <asm/irq.h> |
41 | #include <asm/hardware/arm_timer.h> | 42 | #include <asm/hardware/arm_timer.h> |
@@ -65,16 +66,28 @@ | |||
65 | #define VA_VIC_BASE __io_address(VERSATILE_VIC_BASE) | 66 | #define VA_VIC_BASE __io_address(VERSATILE_VIC_BASE) |
66 | #define VA_SIC_BASE __io_address(VERSATILE_SIC_BASE) | 67 | #define VA_SIC_BASE __io_address(VERSATILE_SIC_BASE) |
67 | 68 | ||
69 | /* These PIC IRQs are valid in each configuration */ | ||
70 | #define PIC_VALID_ALL BIT(SIC_INT_KMI0) | BIT(SIC_INT_KMI1) | \ | ||
71 | BIT(SIC_INT_SCI3) | BIT(SIC_INT_UART3) | \ | ||
72 | BIT(SIC_INT_CLCD) | BIT(SIC_INT_TOUCH) | \ | ||
73 | BIT(SIC_INT_KEYPAD) | BIT(SIC_INT_DoC) | \ | ||
74 | BIT(SIC_INT_USB) | BIT(SIC_INT_PCI0) | \ | ||
75 | BIT(SIC_INT_PCI1) | BIT(SIC_INT_PCI2) | \ | ||
76 | BIT(SIC_INT_PCI3) | ||
68 | #if 1 | 77 | #if 1 |
69 | #define IRQ_MMCI0A IRQ_VICSOURCE22 | 78 | #define IRQ_MMCI0A IRQ_VICSOURCE22 |
70 | #define IRQ_AACI IRQ_VICSOURCE24 | 79 | #define IRQ_AACI IRQ_VICSOURCE24 |
71 | #define IRQ_ETH IRQ_VICSOURCE25 | 80 | #define IRQ_ETH IRQ_VICSOURCE25 |
72 | #define PIC_MASK 0xFFD00000 | 81 | #define PIC_MASK 0xFFD00000 |
82 | #define PIC_VALID PIC_VALID_ALL | ||
73 | #else | 83 | #else |
74 | #define IRQ_MMCI0A IRQ_SIC_MMCI0A | 84 | #define IRQ_MMCI0A IRQ_SIC_MMCI0A |
75 | #define IRQ_AACI IRQ_SIC_AACI | 85 | #define IRQ_AACI IRQ_SIC_AACI |
76 | #define IRQ_ETH IRQ_SIC_ETH | 86 | #define IRQ_ETH IRQ_SIC_ETH |
77 | #define PIC_MASK 0 | 87 | #define PIC_MASK 0 |
88 | #define PIC_VALID PIC_VALID_ALL | BIT(SIC_INT_MMCI0A) | \ | ||
89 | BIT(SIC_INT_MMCI1A) | BIT(SIC_INT_AACI) | \ | ||
90 | BIT(SIC_INT_ETH) | ||
78 | #endif | 91 | #endif |
79 | 92 | ||
80 | /* Lookup table for finding a DT node that represents the vic instance */ | 93 | /* Lookup table for finding a DT node that represents the vic instance */ |
@@ -102,7 +115,7 @@ void __init versatile_init_irq(void) | |||
102 | VERSATILE_SIC_BASE); | 115 | VERSATILE_SIC_BASE); |
103 | 116 | ||
104 | fpga_irq_init(VA_SIC_BASE, "SIC", IRQ_SIC_START, | 117 | fpga_irq_init(VA_SIC_BASE, "SIC", IRQ_SIC_START, |
105 | IRQ_VICSOURCE31, ~PIC_MASK, np); | 118 | IRQ_VICSOURCE31, PIC_VALID, np); |
106 | 119 | ||
107 | /* | 120 | /* |
108 | * Interrupts on secondary controller from 0 to 8 are routed to | 121 | * 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 @@ | |||
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | 24 | ||
25 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
26 | #include <mach/irqs.h> | ||
26 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
27 | #include <asm/mach/pci.h> | 28 | #include <asm/mach/pci.h> |
28 | 29 | ||
@@ -327,12 +328,12 @@ static int __init versatile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
327 | int irq; | 328 | int irq; |
328 | 329 | ||
329 | /* slot, pin, irq | 330 | /* slot, pin, irq |
330 | * 24 1 27 | 331 | * 24 1 IRQ_SIC_PCI0 |
331 | * 25 1 28 | 332 | * 25 1 IRQ_SIC_PCI1 |
332 | * 26 1 29 | 333 | * 26 1 IRQ_SIC_PCI2 |
333 | * 27 1 30 | 334 | * 27 1 IRQ_SIC_PCI3 |
334 | */ | 335 | */ |
335 | irq = 27 + ((slot - 24 + pin - 1) & 3); | 336 | irq = IRQ_SIC_PCI0 + ((slot - 24 + pin - 1) & 3); |
336 | 337 | ||
337 | return irq; | 338 | return irq; |
338 | } | 339 | } |