![Andrew Lunn](/assets/img/avatar_default.png)
Both IRQ and GPIO controllers can now be represented in DT. The IRQ controllers are setup first, and then the GPIO controllers. Interrupts for GPIO lines are placed directly after the main interrupts in the interrupt space. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@googlemail.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Tested-by: Josh Coombs <josh.coombs@gmail.com> Tested-by: Simon Baatz <gmbnomis@gmail.com>
43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
/*
|
|
* arch/arm/mach-kirkwood/irq.c
|
|
*
|
|
* Kirkwood IRQ handling.
|
|
*
|
|
* This file is licensed under the terms of the GNU General Public
|
|
* License version 2. This program is licensed "as is" without any
|
|
* warranty of any kind, whether express or implied.
|
|
*/
|
|
#include <linux/gpio.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/irq.h>
|
|
#include <mach/bridge-regs.h>
|
|
#include <plat/irq.h>
|
|
|
|
static int __initdata gpio0_irqs[4] = {
|
|
IRQ_KIRKWOOD_GPIO_LOW_0_7,
|
|
IRQ_KIRKWOOD_GPIO_LOW_8_15,
|
|
IRQ_KIRKWOOD_GPIO_LOW_16_23,
|
|
IRQ_KIRKWOOD_GPIO_LOW_24_31,
|
|
};
|
|
|
|
static int __initdata gpio1_irqs[4] = {
|
|
IRQ_KIRKWOOD_GPIO_HIGH_0_7,
|
|
IRQ_KIRKWOOD_GPIO_HIGH_8_15,
|
|
IRQ_KIRKWOOD_GPIO_HIGH_16_23,
|
|
0,
|
|
};
|
|
|
|
void __init kirkwood_init_irq(void)
|
|
{
|
|
orion_irq_init(0, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF));
|
|
orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF));
|
|
|
|
/*
|
|
* Initialize gpiolib for GPIOs 0-49.
|
|
*/
|
|
orion_gpio_init(NULL, 0, 32, (void __iomem *)GPIO_LOW_VIRT_BASE, 0,
|
|
IRQ_KIRKWOOD_GPIO_START, gpio0_irqs);
|
|
orion_gpio_init(NULL, 32, 18, (void __iomem *)GPIO_HIGH_VIRT_BASE, 0,
|
|
IRQ_KIRKWOOD_GPIO_START + 32, gpio1_irqs);
|
|
}
|