ARM: Orion: DT support for IRQ and GPIO Controllers
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>
This commit is contained in:
@@ -11,19 +11,16 @@
|
||||
*/
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/io.h>
|
||||
#include <mach/bridge-regs.h>
|
||||
#include <plat/irq.h>
|
||||
#include "common.h"
|
||||
|
||||
static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
BUG_ON(irq < IRQ_ORION5X_GPIO_0_7 || irq > IRQ_ORION5X_GPIO_24_31);
|
||||
|
||||
orion_gpio_irq_handler((irq - IRQ_ORION5X_GPIO_0_7) << 3);
|
||||
}
|
||||
static int __initdata gpio0_irqs[4] = {
|
||||
IRQ_ORION5X_GPIO_0_7,
|
||||
IRQ_ORION5X_GPIO_8_15,
|
||||
IRQ_ORION5X_GPIO_16_23,
|
||||
IRQ_ORION5X_GPIO_24_31,
|
||||
};
|
||||
|
||||
void __init orion5x_init_irq(void)
|
||||
{
|
||||
@@ -32,9 +29,6 @@ void __init orion5x_init_irq(void)
|
||||
/*
|
||||
* Initialize gpiolib for GPIOs 0-31.
|
||||
*/
|
||||
orion_gpio_init(0, 32, GPIO_VIRT_BASE, 0, IRQ_ORION5X_GPIO_START);
|
||||
irq_set_chained_handler(IRQ_ORION5X_GPIO_0_7, gpio_irq_handler);
|
||||
irq_set_chained_handler(IRQ_ORION5X_GPIO_8_15, gpio_irq_handler);
|
||||
irq_set_chained_handler(IRQ_ORION5X_GPIO_16_23, gpio_irq_handler);
|
||||
irq_set_chained_handler(IRQ_ORION5X_GPIO_24_31, gpio_irq_handler);
|
||||
orion_gpio_init(NULL, 0, 32, (void __iomem *)GPIO_VIRT_BASE, 0,
|
||||
IRQ_ORION5X_GPIO_START, gpio0_irqs);
|
||||
}
|
||||
|
Reference in New Issue
Block a user