ARM: at91: aic add dt support for external irqs

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
diff --git a/arch/arm/mach-at91/irq.c b/arch/arm/mach-at91/irq.c
index 2d5d4c8..df8605f 100644
--- a/arch/arm/mach-at91/irq.c
+++ b/arch/arm/mach-at91/irq.c
@@ -194,6 +194,10 @@
 int __init at91_aic_of_init(struct device_node *node,
 				     struct device_node *parent)
 {
+	struct property *prop;
+	const __be32 *p;
+	u32 val;
+
 	at91_aic_base = of_iomap(node, 0);
 	at91_aic_np = node;
 
@@ -202,6 +206,14 @@
 	if (!at91_aic_domain)
 		panic("Unable to add AIC irq domain (DT)\n");
 
+	at91_extern_irq = 0;
+	of_property_for_each_u32(node, "atmel,external-irqs", prop, p, val) {
+		if (val > 31)
+			pr_warn("AIC: external irq %d > 31 skip it\n", val);
+		else
+			at91_extern_irq |= (1 << val);
+	}
+
 	irq_set_default_host(at91_aic_domain);
 
 	at91_aic_hw_init(NR_AIC_IRQS);