summaryrefslogtreecommitdiffstats
path: root/arch/microblaze/kernel/intc.c
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2013-08-27 10:49:00 +0200
committerMichal Simek <michal.simek@xilinx.com>2013-09-03 11:24:48 +0200
commit8a9e90a12816d0d26ccfb98cf6ac224a5a45d453 (patch)
treef66d10e7556a0df30ada3e9853bcf9ce2553e99c /arch/microblaze/kernel/intc.c
parentmicroblaze: intc: Update header (diff)
downloadlinux-8a9e90a12816d0d26ccfb98cf6ac224a5a45d453.tar.xz
linux-8a9e90a12816d0d26ccfb98cf6ac224a5a45d453.zip
microblaze: intc: Using irqchip
- Move init_IRQ to irq.c - Use IRQCHIP_DECLARE macro Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'arch/microblaze/kernel/intc.c')
-rw-r--r--arch/microblaze/kernel/intc.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c
index ed056a092b82..07be937b3d9a 100644
--- a/arch/microblaze/kernel/intc.c
+++ b/arch/microblaze/kernel/intc.c
@@ -18,6 +18,7 @@
#include <asm/prom.h>
#include <asm/irq.h>
+#include "../../drivers/irqchip/irqchip.h"
static unsigned int intc_baseaddr;
@@ -115,13 +116,10 @@ static const struct irq_domain_ops xintc_irq_domain_ops = {
.map = xintc_map,
};
-void __init init_IRQ(void)
+static int __init xilinx_intc_of_init(struct device_node *intc,
+ struct device_node *parent)
{
u32 nr_irq, intr_mask;
- struct device_node *intc = NULL;
-
- intc = of_find_compatible_node(NULL, NULL, "xlnx,xps-intc-1.00.a");
- BUG_ON(!intc);
intc_baseaddr = be32_to_cpup(of_get_property(intc, "reg", NULL));
intc_baseaddr = (unsigned long) ioremap(intc_baseaddr, PAGE_SIZE);
@@ -155,4 +153,8 @@ void __init init_IRQ(void)
(void *)intr_mask);
irq_set_default_host(root_domain);
+
+ return 0;
}
+
+IRQCHIP_DECLARE(xilinx_intc, "xlnx,xps-intc-1.00.a", xilinx_intc_of_init);