From: benoar@dolka.fr (Benjamin Cama)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: orion5x: fix legacy orion5x IRQ numbers
Date: Tue, 14 Jul 2015 16:25:58 +0200 [thread overview]
Message-ID: <1436883958.13048.5.camel@dolka.fr> (raw)
In-Reply-To: <1436710916.5657.169.camel@dolka.fr>
Since v3.18, attempts to deviler IRQ0 are rejected, breaking orion5x.
Fix this by increasing all interrupts by one, as did 5d6bed2a9c8b for
dove. Also, force MULTI_IRQ_HANDLER for all orion platforms (including
dove) as the specific handler is needed to shift back IRQ numbers by
one.
Fixes: a71b092a9c68 ("ARM: Convert handle_IRQ to use __handle_domain_irq")
Signed-off-by: Benjamin Cama <benoar@dolka.fr>
---
Hi everyone,
I finally nailed it: my attempt at copying Russell's patch for dove did
not work because MULTI_IRQ_HANDLER was not set. It is not in the
defconfig; maybe it should be now? I hesitated to put it as a
dependency for PLAT_ORION_LEGACY, but as the platform is globally
broken without it, I added it.
What do you think?
arch/arm/Kconfig | 1 +
arch/arm/mach-orion5x/include/mach/irqs.h | 64 +++++++++++++++----------------
arch/arm/mach-orion5x/irq.c | 4 +-
3 files changed, 35 insertions(+), 34 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 45df48b..a55c63a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -968,6 +968,7 @@ config PLAT_ORION
config PLAT_ORION_LEGACY
bool
select PLAT_ORION
+ select MULTI_IRQ_HANDLER
config PLAT_PXA
bool
diff --git a/arch/arm/mach-orion5x/include/mach/irqs.h b/arch/arm/mach-orion5x/include/mach/irqs.h
index a6fa9d8..2431d99 100644
--- a/arch/arm/mach-orion5x/include/mach/irqs.h
+++ b/arch/arm/mach-orion5x/include/mach/irqs.h
@@ -16,42 +16,42 @@
/*
* Orion Main Interrupt Controller
*/
-#define IRQ_ORION5X_BRIDGE 0
-#define IRQ_ORION5X_DOORBELL_H2C 1
-#define IRQ_ORION5X_DOORBELL_C2H 2
-#define IRQ_ORION5X_UART0 3
-#define IRQ_ORION5X_UART1 4
-#define IRQ_ORION5X_I2C 5
-#define IRQ_ORION5X_GPIO_0_7 6
-#define IRQ_ORION5X_GPIO_8_15 7
-#define IRQ_ORION5X_GPIO_16_23 8
-#define IRQ_ORION5X_GPIO_24_31 9
-#define IRQ_ORION5X_PCIE0_ERR 10
-#define IRQ_ORION5X_PCIE0_INT 11
-#define IRQ_ORION5X_USB1_CTRL 12
-#define IRQ_ORION5X_DEV_BUS_ERR 14
-#define IRQ_ORION5X_PCI_ERR 15
-#define IRQ_ORION5X_USB_BR_ERR 16
-#define IRQ_ORION5X_USB0_CTRL 17
-#define IRQ_ORION5X_ETH_RX 18
-#define IRQ_ORION5X_ETH_TX 19
-#define IRQ_ORION5X_ETH_MISC 20
-#define IRQ_ORION5X_ETH_SUM 21
-#define IRQ_ORION5X_ETH_ERR 22
-#define IRQ_ORION5X_IDMA_ERR 23
-#define IRQ_ORION5X_IDMA_0 24
-#define IRQ_ORION5X_IDMA_1 25
-#define IRQ_ORION5X_IDMA_2 26
-#define IRQ_ORION5X_IDMA_3 27
-#define IRQ_ORION5X_CESA 28
-#define IRQ_ORION5X_SATA 29
-#define IRQ_ORION5X_XOR0 30
-#define IRQ_ORION5X_XOR1 31
+#define IRQ_ORION5X_BRIDGE (1 + 0)
+#define IRQ_ORION5X_DOORBELL_H2C (1 + 1)
+#define IRQ_ORION5X_DOORBELL_C2H (1 + 2)
+#define IRQ_ORION5X_UART0 (1 + 3)
+#define IRQ_ORION5X_UART1 (1 + 4)
+#define IRQ_ORION5X_I2C (1 + 5)
+#define IRQ_ORION5X_GPIO_0_7 (1 + 6)
+#define IRQ_ORION5X_GPIO_8_15 (1 + 7)
+#define IRQ_ORION5X_GPIO_16_23 (1 + 8)
+#define IRQ_ORION5X_GPIO_24_31 (1 + 9)
+#define IRQ_ORION5X_PCIE0_ERR (1 + 10)
+#define IRQ_ORION5X_PCIE0_INT (1 + 11)
+#define IRQ_ORION5X_USB1_CTRL (1 + 12)
+#define IRQ_ORION5X_DEV_BUS_ERR (1 + 14)
+#define IRQ_ORION5X_PCI_ERR (1 + 15)
+#define IRQ_ORION5X_USB_BR_ERR (1 + 16)
+#define IRQ_ORION5X_USB0_CTRL (1 + 17)
+#define IRQ_ORION5X_ETH_RX (1 + 18)
+#define IRQ_ORION5X_ETH_TX (1 + 19)
+#define IRQ_ORION5X_ETH_MISC (1 + 20)
+#define IRQ_ORION5X_ETH_SUM (1 + 21)
+#define IRQ_ORION5X_ETH_ERR (1 + 22)
+#define IRQ_ORION5X_IDMA_ERR (1 + 23)
+#define IRQ_ORION5X_IDMA_0 (1 + 24)
+#define IRQ_ORION5X_IDMA_1 (1 + 25)
+#define IRQ_ORION5X_IDMA_2 (1 + 26)
+#define IRQ_ORION5X_IDMA_3 (1 + 27)
+#define IRQ_ORION5X_CESA (1 + 28)
+#define IRQ_ORION5X_SATA (1 + 29)
+#define IRQ_ORION5X_XOR0 (1 + 30)
+#define IRQ_ORION5X_XOR1 (1 + 31)
/*
* Orion General Purpose Pins
*/
-#define IRQ_ORION5X_GPIO_START 32
+#define IRQ_ORION5X_GPIO_START 33
#define NR_GPIO_IRQS 32
#define NR_IRQS (IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS)
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c
index cd4bac4..086ecb8 100644
--- a/arch/arm/mach-orion5x/irq.c
+++ b/arch/arm/mach-orion5x/irq.c
@@ -42,7 +42,7 @@ __exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
stat = readl_relaxed(MAIN_IRQ_CAUSE);
stat &= readl_relaxed(MAIN_IRQ_MASK);
if (stat) {
- unsigned int hwirq = __fls(stat);
+ unsigned int hwirq = 1 + __fls(stat);
handle_IRQ(hwirq, regs);
return;
}
@@ -51,7 +51,7 @@ __exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
void __init orion5x_init_irq(void)
{
- orion_irq_init(0, MAIN_IRQ_MASK);
+ orion_irq_init(1, MAIN_IRQ_MASK);
#ifdef CONFIG_MULTI_IRQ_HANDLER
set_handle_irq(orion5x_legacy_handle_irq);
--
2.1.4
next prev parent reply other threads:[~2015-07-14 14:25 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-15 13:51 Linkstation Mini and __machine_arch_type problem, not booting since 3.8 Benjamin Cama
2015-06-16 9:20 ` Benjamin Cama
2015-06-18 2:12 ` [PATCH] " Benjamin Cama
2015-06-18 7:52 ` Marc Zyngier
2015-06-18 8:14 ` Arnd Bergmann
2015-06-18 13:23 ` Andrew Lunn
2015-06-19 1:38 ` Benjamin Cama
2015-06-19 9:13 ` Marc Zyngier
2015-06-19 12:16 ` Benjamin Cama
2015-06-19 13:01 ` Jason Cooper
2015-06-19 13:13 ` Russell King - ARM Linux
2015-06-19 13:46 ` Benjamin Cama
2015-06-19 15:25 ` Jason Cooper
2015-06-19 15:48 ` Russell King - ARM Linux
2015-06-19 17:13 ` Jason Cooper
2015-06-21 17:37 ` Benjamin Cama
2015-06-22 12:08 ` Jason Cooper
2015-06-22 17:49 ` Benjamin Cama
2015-06-22 17:58 ` Russell King - ARM Linux
2015-06-22 18:04 ` Jason Cooper
[not found] ` <1436710916.5657.169.camel@dolka.fr>
2015-07-14 14:25 ` Benjamin Cama [this message]
2015-07-14 20:50 ` [PATCH] ARM: orion5x: fix legacy orion5x IRQ numbers Arnd Bergmann
2015-08-14 15:46 ` Gregory CLEMENT
2015-06-19 15:44 ` [PATCH] Re: Linkstation Mini and __machine_arch_type problem, not booting since 3.8 Russell King - ARM Linux
2015-06-20 1:01 ` Benjamin Cama
2015-06-18 8:12 ` Gregory CLEMENT
2015-06-19 1:50 ` Benjamin Cama
2015-06-19 9:33 ` Gregory CLEMENT
2015-06-19 11:41 ` Jason Cooper
2015-06-20 0:28 ` Benjamin Cama
2015-06-20 14:36 ` Andrew Lunn
2015-06-21 17:36 ` Benjamin Cama
2015-06-21 20:07 ` Andrew Lunn
[not found] ` <1434995000.5657.42.camel@dolka.fr>
2015-06-22 18:23 ` SERIAL_OF_PLATFORM default setting for DT headless systems Jason Cooper
2015-06-22 19:42 ` Benjamin Cama
2015-06-22 12:00 ` Linkstation Mini and __machine_arch_type problem, not booting since 3.8 Jason Cooper
2015-06-22 17:44 ` Benjamin Cama
2015-06-19 22:38 ` Andrew Lunn
-- strict thread matches above, loose matches on Subject: below --
2015-08-15 14:17 [PATCH] ARM: orion5x: fix legacy orion5x IRQ numbers Gregory CLEMENT
2015-08-15 14:17 ` Gregory CLEMENT
2015-08-15 20:09 ` Detlef Vollmann
2015-08-21 11:33 ` Benjamin Cama
2015-08-21 11:33 ` Benjamin Cama
2015-08-21 15:55 ` Gregory CLEMENT
2015-08-21 15:55 ` Gregory CLEMENT
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1436883958.13048.5.camel@dolka.fr \
--to=benoar@dolka.fr \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.