aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/mips/Kconfig1
-rw-r--r--arch/mips/include/asm/irq.h5
-rw-r--r--arch/mips/kernel/prom.c14
-rw-r--r--kernel/irq/irqdomain.c12
4 files changed, 14 insertions, 18 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 5ab6e89603c5..edbbae17e820 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2327,6 +2327,7 @@ config USE_OF
2327 bool "Flattened Device Tree support" 2327 bool "Flattened Device Tree support"
2328 select OF 2328 select OF
2329 select OF_EARLY_FLATTREE 2329 select OF_EARLY_FLATTREE
2330 select IRQ_DOMAIN
2330 help 2331 help
2331 Include support for flattened device tree machine descriptions. 2332 Include support for flattened device tree machine descriptions.
2332 2333
diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h
index 2354c870a63a..fb698dc09bc9 100644
--- a/arch/mips/include/asm/irq.h
+++ b/arch/mips/include/asm/irq.h
@@ -11,15 +11,12 @@
11 11
12#include <linux/linkage.h> 12#include <linux/linkage.h>
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/irqdomain.h>
14 15
15#include <asm/mipsmtregs.h> 16#include <asm/mipsmtregs.h>
16 17
17#include <irq.h> 18#include <irq.h>
18 19
19static inline void irq_dispose_mapping(unsigned int virq)
20{
21}
22
23#ifdef CONFIG_I8259 20#ifdef CONFIG_I8259
24static inline int irq_canonicalize(int irq) 21static inline int irq_canonicalize(int irq)
25{ 22{
diff --git a/arch/mips/kernel/prom.c b/arch/mips/kernel/prom.c
index 6b8b4208481e..558b5395795d 100644
--- a/arch/mips/kernel/prom.c
+++ b/arch/mips/kernel/prom.c
@@ -60,20 +60,6 @@ void __init early_init_dt_setup_initrd_arch(unsigned long start,
60} 60}
61#endif 61#endif
62 62
63/*
64 * irq_create_of_mapping - Hook to resolve OF irq specifier into a Linux irq#
65 *
66 * Currently the mapping mechanism is trivial; simple flat hwirq numbers are
67 * mapped 1:1 onto Linux irq numbers. Cascaded irq controllers are not
68 * supported.
69 */
70unsigned int irq_create_of_mapping(struct device_node *controller,
71 const u32 *intspec, unsigned int intsize)
72{
73 return intspec[0];
74}
75EXPORT_SYMBOL_GPL(irq_create_of_mapping);
76
77void __init early_init_devtree(void *params) 63void __init early_init_devtree(void *params)
78{ 64{
79 /* Setup flat device-tree pointer */ 65 /* Setup flat device-tree pointer */
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index 25a498eb98a3..af48e59bc2ff 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -411,6 +411,18 @@ unsigned int irq_create_of_mapping(struct device_node *controller,
411 411
412 domain = controller ? irq_find_host(controller) : irq_default_domain; 412 domain = controller ? irq_find_host(controller) : irq_default_domain;
413 if (!domain) { 413 if (!domain) {
414#ifdef CONFIG_MIPS
415 /*
416 * Workaround to avoid breaking interrupt controller drivers
417 * that don't yet register an irq_domain. This is temporary
418 * code. ~~~gcl, Feb 24, 2012
419 *
420 * Scheduled for removal in Linux v3.6. That should be enough
421 * time.
422 */
423 if (intsize > 0)
424 return intspec[0];
425#endif
414 printk(KERN_WARNING "irq: no irq domain found for %s !\n", 426 printk(KERN_WARNING "irq: no irq domain found for %s !\n",
415 controller->full_name); 427 controller->full_name);
416 return 0; 428 return 0;