diff options
| author | Max Filippov <jcmvbkbc@gmail.com> | 2018-08-13 21:21:08 -0400 |
|---|---|---|
| committer | Max Filippov <jcmvbkbc@gmail.com> | 2018-08-20 15:28:05 -0400 |
| commit | 8b5163eb988067093064ecb10265da27fd000cad (patch) | |
| tree | f1d0d64d9d5612df0a00511f6595e1a70061eaf0 | |
| parent | fc862ee9976f0490a20b2a2b8ae0c4fbeb7bbf13 (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/Kconfig | 3 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/irq.h | 18 | ||||
| -rw-r--r-- | arch/xtensa/kernel/irq.c | 1 | ||||
| -rw-r--r-- | drivers/irqchip/irq-xtensa-mx.c | 2 | ||||
| -rw-r--r-- | drivers/irqchip/irq-xtensa-pic.c | 2 |
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 | |||
| 75 | config MMU | 75 | config MMU |
| 76 | def_bool n | 76 | def_bool n |
| 77 | 77 | ||
| 78 | config VARIANT_IRQ_SWITCH | ||
| 79 | def_bool n | ||
| 80 | |||
| 81 | config HAVE_XTENSA_GPIO32 | 78 | config 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 | ||
| 20 | static inline void variant_irq_enable(unsigned int irq) { } | ||
| 21 | static 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 | ||
| 37 | static inline void variant_init_irq(void) { } | ||
| 38 | #else | ||
| 39 | void variant_init_irq(void) __init; | ||
| 40 | #endif | ||
| 41 | |||
| 42 | static __inline__ int irq_canonicalize(int irq) | 26 | static __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 | ||
| 99 | static void xtensa_mx_irq_enable(struct irq_data *d) | 99 | static 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 | ||
| 105 | static void xtensa_mx_irq_disable(struct irq_data *d) | 104 | static 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 | ||
| 111 | static void xtensa_mx_irq_ack(struct irq_data *d) | 109 | static 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 | ||
| 56 | static void xtensa_irq_enable(struct irq_data *d) | 56 | static 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 | ||
| 62 | static void xtensa_irq_disable(struct irq_data *d) | 61 | static 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 | ||
| 68 | static void xtensa_irq_ack(struct irq_data *d) | 66 | static void xtensa_irq_ack(struct irq_data *d) |
