aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2018-08-13 21:21:08 -0400
committerMax Filippov <jcmvbkbc@gmail.com>2018-08-20 15:28:05 -0400
commit8b5163eb988067093064ecb10265da27fd000cad (patch)
treef1d0d64d9d5612df0a00511f6595e1a70061eaf0
parentfc862ee9976f0490a20b2a2b8ae0c4fbeb7bbf13 (diff)
xtensa: drop variant IRQ support
If an xtensa core provides an additional IRQ controller it should be treated as a separate piece of hardware and be driven by an irqchip driver. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-rw-r--r--arch/xtensa/Kconfig3
-rw-r--r--arch/xtensa/include/asm/irq.h18
-rw-r--r--arch/xtensa/kernel/irq.c1
-rw-r--r--drivers/irqchip/irq-xtensa-mx.c2
-rw-r--r--drivers/irqchip/irq-xtensa-pic.c2
5 files changed, 1 insertions, 25 deletions
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index 4e64c9c1748b..44b20da404be 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -75,9 +75,6 @@ config TRACE_IRQFLAGS_SUPPORT
75config MMU 75config MMU
76 def_bool n 76 def_bool n
77 77
78config VARIANT_IRQ_SWITCH
79 def_bool n
80
81config HAVE_XTENSA_GPIO32 78config HAVE_XTENSA_GPIO32
82 def_bool n 79 def_bool n
83 80
diff --git a/arch/xtensa/include/asm/irq.h b/arch/xtensa/include/asm/irq.h
index 2270d93ab7e6..6c6ed23e0c79 100644
--- a/arch/xtensa/include/asm/irq.h
+++ b/arch/xtensa/include/asm/irq.h
@@ -14,31 +14,15 @@
14#include <linux/init.h> 14#include <linux/init.h>
15#include <variant/core.h> 15#include <variant/core.h>
16 16
17#ifdef CONFIG_VARIANT_IRQ_SWITCH
18#include <variant/irq.h>
19#else
20static inline void variant_irq_enable(unsigned int irq) { }
21static inline void variant_irq_disable(unsigned int irq) { }
22#endif
23
24#ifndef VARIANT_NR_IRQS
25# define VARIANT_NR_IRQS 0
26#endif
27#ifdef CONFIG_PLATFORM_NR_IRQS 17#ifdef CONFIG_PLATFORM_NR_IRQS
28# define PLATFORM_NR_IRQS CONFIG_PLATFORM_NR_IRQS 18# define PLATFORM_NR_IRQS CONFIG_PLATFORM_NR_IRQS
29#else 19#else
30# define PLATFORM_NR_IRQS 0 20# define PLATFORM_NR_IRQS 0
31#endif 21#endif
32#define XTENSA_NR_IRQS XCHAL_NUM_INTERRUPTS 22#define XTENSA_NR_IRQS XCHAL_NUM_INTERRUPTS
33#define NR_IRQS (XTENSA_NR_IRQS + VARIANT_NR_IRQS + PLATFORM_NR_IRQS + 1) 23#define NR_IRQS (XTENSA_NR_IRQS + PLATFORM_NR_IRQS + 1)
34#define XTENSA_PIC_LINUX_IRQ(hwirq) ((hwirq) + 1) 24#define XTENSA_PIC_LINUX_IRQ(hwirq) ((hwirq) + 1)
35 25
36#if VARIANT_NR_IRQS == 0
37static inline void variant_init_irq(void) { }
38#else
39void variant_init_irq(void) __init;
40#endif
41
42static __inline__ int irq_canonicalize(int irq) 26static __inline__ int irq_canonicalize(int irq)
43{ 27{
44 return (irq); 28 return (irq);
diff --git a/arch/xtensa/kernel/irq.c b/arch/xtensa/kernel/irq.c
index 18e4ef34ac45..a48bf2d10ac2 100644
--- a/arch/xtensa/kernel/irq.c
+++ b/arch/xtensa/kernel/irq.c
@@ -158,7 +158,6 @@ void __init init_IRQ(void)
158#ifdef CONFIG_SMP 158#ifdef CONFIG_SMP
159 ipi_init(); 159 ipi_init();
160#endif 160#endif
161 variant_init_irq();
162} 161}
163 162
164#ifdef CONFIG_HOTPLUG_CPU 163#ifdef CONFIG_HOTPLUG_CPU
diff --git a/drivers/irqchip/irq-xtensa-mx.c b/drivers/irqchip/irq-xtensa-mx.c
index a15a9510c904..e539500752d4 100644
--- a/drivers/irqchip/irq-xtensa-mx.c
+++ b/drivers/irqchip/irq-xtensa-mx.c
@@ -98,14 +98,12 @@ static void xtensa_mx_irq_unmask(struct irq_data *d)
98 98
99static void xtensa_mx_irq_enable(struct irq_data *d) 99static void xtensa_mx_irq_enable(struct irq_data *d)
100{ 100{
101 variant_irq_enable(d->hwirq);
102 xtensa_mx_irq_unmask(d); 101 xtensa_mx_irq_unmask(d);
103} 102}
104 103
105static void xtensa_mx_irq_disable(struct irq_data *d) 104static void xtensa_mx_irq_disable(struct irq_data *d)
106{ 105{
107 xtensa_mx_irq_mask(d); 106 xtensa_mx_irq_mask(d);
108 variant_irq_disable(d->hwirq);
109} 107}
110 108
111static void xtensa_mx_irq_ack(struct irq_data *d) 109static void xtensa_mx_irq_ack(struct irq_data *d)
diff --git a/drivers/irqchip/irq-xtensa-pic.c b/drivers/irqchip/irq-xtensa-pic.c
index f728755fa292..000cb5462bcf 100644
--- a/drivers/irqchip/irq-xtensa-pic.c
+++ b/drivers/irqchip/irq-xtensa-pic.c
@@ -55,14 +55,12 @@ static void xtensa_irq_unmask(struct irq_data *d)
55 55
56static void xtensa_irq_enable(struct irq_data *d) 56static void xtensa_irq_enable(struct irq_data *d)
57{ 57{
58 variant_irq_enable(d->hwirq);
59 xtensa_irq_unmask(d); 58 xtensa_irq_unmask(d);
60} 59}
61 60
62static void xtensa_irq_disable(struct irq_data *d) 61static void xtensa_irq_disable(struct irq_data *d)
63{ 62{
64 xtensa_irq_mask(d); 63 xtensa_irq_mask(d);
65 variant_irq_disable(d->hwirq);
66} 64}
67 65
68static void xtensa_irq_ack(struct irq_data *d) 66static void xtensa_irq_ack(struct irq_data *d)