diff options
Diffstat (limited to 'arch/arm/mach-kirkwood/irq.c')
-rw-r--r-- | arch/arm/mach-kirkwood/irq.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/arch/arm/mach-kirkwood/irq.c b/arch/arm/mach-kirkwood/irq.c index 28020abf49e1..cbdb5863d13b 100644 --- a/arch/arm/mach-kirkwood/irq.c +++ b/arch/arm/mach-kirkwood/irq.c | |||
@@ -27,31 +27,21 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
27 | 27 | ||
28 | void __init kirkwood_init_irq(void) | 28 | void __init kirkwood_init_irq(void) |
29 | { | 29 | { |
30 | int i; | ||
31 | |||
32 | orion_irq_init(0, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF)); | 30 | orion_irq_init(0, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF)); |
33 | orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)); | 31 | orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)); |
34 | 32 | ||
35 | /* | 33 | /* |
36 | * Mask and clear GPIO IRQ interrupts. | 34 | * Initialize gpiolib for GPIOs 0-49. |
37 | */ | 35 | */ |
38 | writel(0, GPIO_LEVEL_MASK(0)); | 36 | orion_gpio_init(0, 32, GPIO_LOW_VIRT_BASE, 0, |
39 | writel(0, GPIO_EDGE_MASK(0)); | 37 | IRQ_KIRKWOOD_GPIO_START); |
40 | writel(0, GPIO_EDGE_CAUSE(0)); | ||
41 | writel(0, GPIO_LEVEL_MASK(32)); | ||
42 | writel(0, GPIO_EDGE_MASK(32)); | ||
43 | writel(0, GPIO_EDGE_CAUSE(32)); | ||
44 | |||
45 | for (i = IRQ_KIRKWOOD_GPIO_START; i < NR_IRQS; i++) { | ||
46 | set_irq_chip(i, &orion_gpio_irq_chip); | ||
47 | set_irq_handler(i, handle_level_irq); | ||
48 | irq_desc[i].status |= IRQ_LEVEL; | ||
49 | set_irq_flags(i, IRQF_VALID); | ||
50 | } | ||
51 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_0_7, gpio_irq_handler); | 38 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_0_7, gpio_irq_handler); |
52 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_8_15, gpio_irq_handler); | 39 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_8_15, gpio_irq_handler); |
53 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_16_23, gpio_irq_handler); | 40 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_16_23, gpio_irq_handler); |
54 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_24_31, gpio_irq_handler); | 41 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_LOW_24_31, gpio_irq_handler); |
42 | |||
43 | orion_gpio_init(32, 18, GPIO_HIGH_VIRT_BASE, 0, | ||
44 | IRQ_KIRKWOOD_GPIO_START + 32); | ||
55 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_0_7, gpio_irq_handler); | 45 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_0_7, gpio_irq_handler); |
56 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_8_15, gpio_irq_handler); | 46 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_8_15, gpio_irq_handler); |
57 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_16_23, gpio_irq_handler); | 47 | set_irq_chained_handler(IRQ_KIRKWOOD_GPIO_HIGH_16_23, gpio_irq_handler); |