diff options
author | Nicolas Ferre <nicolas.ferre@atmel.com> | 2012-02-14 18:08:14 +0100 |
---|---|---|
committer | Nicolas Ferre <nicolas.ferre@atmel.com> | 2012-03-01 13:29:03 +0100 |
commit | 8014d6f4dd074d4d248d3de7f63348fa2568476b (patch) | |
tree | 7803070e93c4955e7b37eb4f4e81e4d1411aeb98 /arch/arm/mach-at91/generic.h | |
parent | 34bc485ca143c4773fc2afbbeb41e50f86445d0d (diff) | |
download | linux-stable-8014d6f4dd074d4d248d3de7f63348fa2568476b.tar.gz linux-stable-8014d6f4dd074d4d248d3de7f63348fa2568476b.tar.bz2 linux-stable-8014d6f4dd074d4d248d3de7f63348fa2568476b.zip |
ARM: at91: AIC and GPIO IRQ device tree initialization
Both AIC and GPIO controllers are now using the standard of_irq_init()
function to initialize IRQs in case of DT use.
The DT specific initialization functions are now separated from the
non-DT case and are now using "linear" irq domains.
The .map() irqdomain operation is responsible for positioning the IRQ
handlers. In AIC case, the Linux IRQ number is directly programmed in
the hardware to avoid an additional reverse mapping operation.
The AIC position its irq domain as the "default" irq domain.
For DT case, the priority is not yet filled in the SMR. It will be the
subject of another patch.
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Diffstat (limited to 'arch/arm/mach-at91/generic.h')
-rw-r--r-- | arch/arm/mach-at91/generic.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h index 4cad85e57470..459f01a4a546 100644 --- a/arch/arm/mach-at91/generic.h +++ b/arch/arm/mach-at91/generic.h @@ -9,6 +9,7 @@ */ #include <linux/clkdev.h> +#include <linux/of.h> /* Map io */ extern void __init at91_map_io(void); @@ -25,6 +26,9 @@ extern void __init at91_init_irq_default(void); extern void __init at91_init_interrupts(unsigned int priority[]); extern void __init at91x40_init_interrupts(unsigned int priority[]); extern void __init at91_aic_init(unsigned int priority[]); +extern int __init at91_aic_of_init(struct device_node *node, + struct device_node *parent); + /* Timer */ struct sys_timer; @@ -84,5 +88,7 @@ struct at91_gpio_bank { }; extern void __init at91_gpio_init(struct at91_gpio_bank *, int nr_banks); extern void __init at91_gpio_irq_setup(void); +extern int __init at91_gpio_of_irq_setup(struct device_node *node, + struct device_node *parent); extern int at91_extern_irq; |