diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-03-06 03:42:55 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-03-06 03:42:55 -0500 |
commit | 71d8c5b11e3b5936ae6c2e0b1dd6f5c78b305b65 (patch) | |
tree | c815434adc34cb7274ef6a0ee16cf8491fa0c03e /arch/arm/mach-mv78xx0/irq.c | |
parent | 0fff6b9a4e0aba233a2ff644316d29b0cb784e33 (diff) | |
parent | 53936c56dcaf1db818fe953ae05592a8b5e345b5 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion into devel-stable
Diffstat (limited to 'arch/arm/mach-mv78xx0/irq.c')
-rw-r--r-- | arch/arm/mach-mv78xx0/irq.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c index 22b4ff893b3c..08da497c39c2 100644 --- a/arch/arm/mach-mv78xx0/irq.c +++ b/arch/arm/mach-mv78xx0/irq.c | |||
@@ -26,28 +26,18 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
26 | 26 | ||
27 | void __init mv78xx0_init_irq(void) | 27 | void __init mv78xx0_init_irq(void) |
28 | { | 28 | { |
29 | int i; | ||
30 | |||
31 | /* Initialize gpiolib. */ | ||
32 | orion_gpio_init(); | ||
33 | |||
34 | orion_irq_init(0, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF)); | 29 | orion_irq_init(0, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF)); |
35 | orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)); | 30 | orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)); |
36 | orion_irq_init(64, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF)); | 31 | orion_irq_init(64, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF)); |
37 | 32 | ||
38 | /* | 33 | /* |
39 | * Mask and clear GPIO IRQ interrupts. | 34 | * Initialize gpiolib for GPIOs 0-31. (The GPIO interrupt mask |
35 | * registers for core #1 are at an offset of 0x18 from those of | ||
36 | * core #0.) | ||
40 | */ | 37 | */ |
41 | writel(0, GPIO_LEVEL_MASK(0)); | 38 | orion_gpio_init(0, 32, GPIO_VIRT_BASE, |
42 | writel(0, GPIO_EDGE_MASK(0)); | 39 | mv78xx0_core_index() ? 0x18 : 0, |
43 | writel(0, GPIO_EDGE_CAUSE(0)); | 40 | IRQ_MV78XX0_GPIO_START); |
44 | |||
45 | for (i = IRQ_MV78XX0_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_MV78XX0_GPIO_0_7, gpio_irq_handler); | 41 | set_irq_chained_handler(IRQ_MV78XX0_GPIO_0_7, gpio_irq_handler); |
52 | set_irq_chained_handler(IRQ_MV78XX0_GPIO_8_15, gpio_irq_handler); | 42 | set_irq_chained_handler(IRQ_MV78XX0_GPIO_8_15, gpio_irq_handler); |
53 | set_irq_chained_handler(IRQ_MV78XX0_GPIO_16_23, gpio_irq_handler); | 43 | set_irq_chained_handler(IRQ_MV78XX0_GPIO_16_23, gpio_irq_handler); |