You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.4 KiB
75 lines
2.4 KiB
![]()
10 years ago
|
From baea71233ed1796651cab6ead484a18666a765aa Mon Sep 17 00:00:00 2001
|
||
|
From: John Crispin <blogic@openwrt.org>
|
||
|
Date: Thu, 11 Sep 2014 19:25:25 +0200
|
||
|
Subject: [PATCH] MIPS: lantiq: move eiu init after irq_domain register
|
||
|
|
||
|
Signed-off-by: John Crispin <blogic@openwrt.org>
|
||
|
---
|
||
|
arch/mips/lantiq/irq.c | 48 ++++++++++++++++++++++++------------------------
|
||
|
1 file changed, 24 insertions(+), 24 deletions(-)
|
||
|
|
||
|
--- a/arch/mips/lantiq/irq.c
|
||
|
+++ b/arch/mips/lantiq/irq.c
|
||
|
@@ -380,30 +380,6 @@ int __init icu_of_init(struct device_nod
|
||
|
panic("Failed to remap icu memory");
|
||
|
}
|
||
|
|
||
|
- /* the external interrupts are optional and xway only */
|
||
|
- eiu_node = of_find_compatible_node(NULL, NULL, "lantiq,eiu-xway");
|
||
|
- if (eiu_node && !of_address_to_resource(eiu_node, 0, &res)) {
|
||
|
- /* find out how many external irq sources we have */
|
||
|
- exin_avail = of_irq_count(eiu_node);
|
||
|
-
|
||
|
- if (exin_avail > MAX_EIU)
|
||
|
- exin_avail = MAX_EIU;
|
||
|
-
|
||
|
- ret = of_irq_to_resource_table(eiu_node,
|
||
|
- ltq_eiu_irq, exin_avail);
|
||
|
- if (ret != exin_avail)
|
||
|
- panic("failed to load external irq resources");
|
||
|
-
|
||
|
- if (request_mem_region(res.start, resource_size(&res),
|
||
|
- res.name) < 0)
|
||
|
- pr_err("Failed to request eiu memory");
|
||
|
-
|
||
|
- ltq_eiu_membase = ioremap_nocache(res.start,
|
||
|
- resource_size(&res));
|
||
|
- if (!ltq_eiu_membase)
|
||
|
- panic("Failed to remap eiu memory");
|
||
|
- }
|
||
|
-
|
||
|
/* turn off all irqs by default */
|
||
|
for (i = 0; i < MAX_IM; i++) {
|
||
|
/* make sure all irqs are turned off by default */
|
||
|
@@ -460,6 +436,30 @@ int __init icu_of_init(struct device_nod
|
||
|
if (MIPS_CPU_TIMER_IRQ != 7)
|
||
|
irq_create_mapping(ltq_domain, MIPS_CPU_TIMER_IRQ);
|
||
|
|
||
|
+ /* the external interrupts are optional and xway only */
|
||
|
+ eiu_node = of_find_compatible_node(NULL, NULL, "lantiq,eiu-xway");
|
||
|
+ if (eiu_node && !of_address_to_resource(eiu_node, 0, &res)) {
|
||
|
+ /* find out how many external irq sources we have */
|
||
|
+ exin_avail = of_irq_count(eiu_node);
|
||
|
+
|
||
|
+ if (exin_avail > MAX_EIU)
|
||
|
+ exin_avail = MAX_EIU;
|
||
|
+
|
||
|
+ ret = of_irq_to_resource_table(eiu_node,
|
||
|
+ ltq_eiu_irq, exin_avail);
|
||
|
+ if (ret != exin_avail)
|
||
|
+ panic("failed to load external irq resources");
|
||
|
+
|
||
|
+ if (request_mem_region(res.start, resource_size(&res),
|
||
|
+ res.name) < 0)
|
||
|
+ pr_err("Failed to request eiu memory");
|
||
|
+
|
||
|
+ ltq_eiu_membase = ioremap_nocache(res.start,
|
||
|
+ resource_size(&res));
|
||
|
+ if (!ltq_eiu_membase)
|
||
|
+ panic("Failed to remap eiu memory");
|
||
|
+ }
|
||
|
+
|
||
|
return 0;
|
||
|
}
|
||
|
|