[PATCH] ARM: riscpc: convert to sparse IRQs
Ethan Nelson-Moore
enelsonmoore at gmail.com
Sat May 9 20:46:38 PDT 2026
To improve future maintainability, change the interrupt handling for
mach-rpc to use sparse IRQs.
Since the number of possible interrupts is already fixed and relatively
small, just make it use all legacy interrupts preallocated using the
.nr_irqs field in the machine descriptor, rather than actually
allocating domains on the fly.
Several files had to be adjusted to include <mach/irqs.h>
explicitly because it is no longer implicitly included with sparse
IRQs.
Description adapted from commit c78a41fc04f0 ("ARM: s3c24xx: convert
to sparse-irq").
Signed-off-by: Ethan Nelson-Moore <enelsonmoore at gmail.com>
---
This commit depends on my previous submission "ARM: <asm/floppy.h>: fix
build with sparse IRQs".
arch/arm/Kconfig | 2 +-
arch/arm/mach-rpc/dma.c | 1 +
arch/arm/mach-rpc/ecard.c | 2 +-
arch/arm/mach-rpc/include/mach/irqs.h | 2 +-
arch/arm/mach-rpc/irq.c | 3 ++-
arch/arm/mach-rpc/riscpc.c | 2 ++
arch/arm/mach-rpc/time.c | 1 +
drivers/input/mouse/rpcmouse.c | 2 +-
drivers/input/serio/rpckbd.c | 1 +
9 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 71fc5dd4123f..09b2767fee0f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -153,7 +153,7 @@ config ARM
select PCI_SYSCALL if PCI
select PERF_USE_VMALLOC
select RTC_LIB
- select SPARSE_IRQ if !(ARCH_FOOTBRIDGE || ARCH_RPC)
+ select SPARSE_IRQ if !ARCH_FOOTBRIDGE
select SYS_SUPPORTS_APM_EMULATION
select THREAD_INFO_IN_TASK
select TIMER_OF if OF
diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c
index 717a81475670..238aa59612a8 100644
--- a/arch/arm/mach-rpc/dma.c
+++ b/arch/arm/mach-rpc/dma.c
@@ -17,6 +17,7 @@
#include <asm/fiq.h>
#include <asm/irq.h>
#include <mach/hardware.h>
+#include <mach/irqs.h>
#include <linux/uaccess.h>
#include <asm/mach/dma.h>
diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
index 972465840548..27af35bd6a79 100644
--- a/arch/arm/mach-rpc/ecard.c
+++ b/arch/arm/mach-rpc/ecard.c
@@ -46,9 +46,9 @@
#include <asm/dma.h>
#include <asm/ecard.h>
#include <mach/hardware.h>
+#include <mach/irqs.h>
#include <asm/irq.h>
#include <asm/mmu_context.h>
-#include <asm/mach/irq.h>
#include <asm/tlbflush.h>
#include "ecard.h"
diff --git a/arch/arm/mach-rpc/include/mach/irqs.h b/arch/arm/mach-rpc/include/mach/irqs.h
index 0c3428fd9729..738a9457c473 100644
--- a/arch/arm/mach-rpc/include/mach/irqs.h
+++ b/arch/arm/mach-rpc/include/mach/irqs.h
@@ -39,4 +39,4 @@
*/
#define FIQ_START 64
-#define NR_IRQS 128
+#define RPC_NR_IRQS 128
diff --git a/arch/arm/mach-rpc/irq.c b/arch/arm/mach-rpc/irq.c
index 649d81874c86..5e3414fc3657 100644
--- a/arch/arm/mach-rpc/irq.c
+++ b/arch/arm/mach-rpc/irq.c
@@ -5,6 +5,7 @@
#include <asm/mach/irq.h>
#include <mach/iomd.h>
+#include <mach/irqs.h>
#include <asm/irq.h>
#include <asm/fiq.h>
@@ -177,7 +178,7 @@ void __init rpc_init_irq(void)
set_handle_irq(iomd_handle_irq);
- for (irq = 0; irq < NR_IRQS; irq++) {
+ for (irq = 0; irq < RPC_NR_IRQS; irq++) {
clr = IRQ_NOREQUEST;
set = 0;
diff --git a/arch/arm/mach-rpc/riscpc.c b/arch/arm/mach-rpc/riscpc.c
index d068f5e4873d..bdad13226c6d 100644
--- a/arch/arm/mach-rpc/riscpc.c
+++ b/arch/arm/mach-rpc/riscpc.c
@@ -23,6 +23,7 @@
#include <asm/mach-types.h>
#include <mach/hardware.h>
#include <mach/iomd.h>
+#include <mach/irqs.h>
#include <asm/page.h>
#include <asm/domain.h>
#include <asm/setup.h>
@@ -219,6 +220,7 @@ MACHINE_START(RISCPC, "Acorn-RiscPC")
.reserve_lp0 = 1,
.reserve_lp1 = 1,
.map_io = rpc_map_io,
+ .nr_irqs = RPC_NR_IRQS,
.init_irq = rpc_init_irq,
.init_time = ioc_timer_init,
.restart = rpc_restart,
diff --git a/arch/arm/mach-rpc/time.c b/arch/arm/mach-rpc/time.c
index 566113f9774f..02f0fd58c7da 100644
--- a/arch/arm/mach-rpc/time.c
+++ b/arch/arm/mach-rpc/time.c
@@ -18,6 +18,7 @@
#include <mach/hardware.h>
#include <mach/iomd.h>
+#include <mach/irqs.h>
#include <asm/mach/time.h>
diff --git a/drivers/input/mouse/rpcmouse.c b/drivers/input/mouse/rpcmouse.c
index 475c3ca22fd4..cead12069319 100644
--- a/drivers/input/mouse/rpcmouse.c
+++ b/drivers/input/mouse/rpcmouse.c
@@ -22,8 +22,8 @@
#include <linux/io.h>
#include <mach/hardware.h>
-#include <asm/irq.h>
#include <mach/iomd.h>
+#include <mach/irqs.h>
MODULE_AUTHOR("Vojtech Pavlik, Russell King");
MODULE_DESCRIPTION("Acorn RiscPC mouse driver");
diff --git a/drivers/input/serio/rpckbd.c b/drivers/input/serio/rpckbd.c
index e452ad07e2fa..7bcaed28c7a4 100644
--- a/drivers/input/serio/rpckbd.c
+++ b/drivers/input/serio/rpckbd.c
@@ -18,6 +18,7 @@
#include <mach/hardware.h>
#include <mach/iomd.h>
+#include <mach/irqs.h>
MODULE_AUTHOR("Vojtech Pavlik, Russell King");
MODULE_DESCRIPTION("Acorn RiscPC PS/2 keyboard controller driver");
--
2.43.0
More information about the linux-arm-kernel
mailing list