]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ARM: 9298/1: Drop custom mdesc->handle_irq()
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 9 May 2023 12:57:28 +0000 (13:57 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Mon, 19 Jun 2023 08:35:48 +0000 (09:35 +0100)
ARM exclusively uses GENERIC_IRQ_MULTI_HANDLER, so at some point
set_handle_irq() needs to be called to handle system-wide
interrupts.

For all DT-enabled boards, this call happens down in the
drivers/irqchip subsystem, after locating the target irqchip
driver from the device tree.

We still have a few instances of the boardfiles with machine
descriptors passing a machine-specific .handle_irq() to the
ARM kernel core.

Get rid of this by letting the few remaining machines consistently
call set_handle_irq() from the end of the .init_irq() callback
instead and diet down one member from the machine descriptor.

Cc: Marc Zyngier <maz@kernel.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
15 files changed:
arch/arm/include/asm/mach/arch.h
arch/arm/kernel/setup.c
arch/arm/mach-mxs/mach-mxs.c
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/board-nokia770.c
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-sx1.c
arch/arm/mach-omap1/irq.c
arch/arm/mach-pxa/gumstix.c
arch/arm/mach-pxa/pxa25x.c
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/spitz.c
drivers/irqchip/irq-mxs.c
include/linux/irqchip/mxs.h [deleted file]

index 9349e7a82c9c4e249725178a1c67b18a453a8f00..2b18a258204d734cf060bd10dd2633caa6f96c78 100644 (file)
@@ -56,7 +56,6 @@ struct machine_desc {
        void                    (*init_time)(void);
        void                    (*init_machine)(void);
        void                    (*init_late)(void);
-       void                    (*handle_irq)(struct pt_regs *);
        void                    (*restart)(enum reboot_mode, const char *);
 };
 
index 75cd4699e7b3eed073e6c29311cdb1dca94f0947..0a26585f5027853a1c5dd42d68b5815421bb9e2d 100644 (file)
@@ -1198,10 +1198,6 @@ void __init setup_arch(char **cmdline_p)
 
        reserve_crashkernel();
 
-#ifdef CONFIG_GENERIC_IRQ_MULTI_HANDLER
-       handle_arch_irq = mdesc->handle_irq;
-#endif
-
 #ifdef CONFIG_VT
 #if defined(CONFIG_VGA_CONSOLE)
        conswitchp = &vga_con;
index 51e47053c81667d7d89dce10f518e02c241f2146..3faf9a1e3e36aa6b70f7858fc61bb4727cea034f 100644 (file)
@@ -11,7 +11,6 @@
 #include <linux/err.h>
 #include <linux/gpio.h>
 #include <linux/init.h>
-#include <linux/irqchip/mxs.h>
 #include <linux/reboot.h>
 #include <linux/micrel_phy.h>
 #include <linux/of_address.h>
@@ -472,7 +471,6 @@ static const char *const mxs_dt_compat[] __initconst = {
 };
 
 DT_MACHINE_START(MXS, "Freescale MXS (Device Tree)")
-       .handle_irq     = icoll_handle_irq,
        .init_machine   = mxs_machine_init,
        .init_late      = mxs_pm_init,
        .dt_compat      = mxs_dt_compat,
index 9108c871d129a82401de41ce7344f06499a18389..88139200449ef62948329ea60cfa690257c3a0ac 100644 (file)
@@ -877,7 +877,6 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
        .map_io         = ams_delta_map_io,
        .init_early     = omap1_init_early,
        .init_irq       = omap1_init_irq,
-       .handle_irq     = omap1_handle_irq,
        .init_machine   = ams_delta_init,
        .init_late      = ams_delta_init_late,
        .init_time      = omap1_timer_init,
index a501a473ffd6824a4628a5637aababa92439dd26..b56cea9f9d2f1ce8ebac69d0e87a0459c3b115a6 100644 (file)
@@ -291,7 +291,6 @@ MACHINE_START(NOKIA770, "Nokia 770")
        .map_io         = omap1_map_io,
        .init_early     = omap1_init_early,
        .init_irq       = omap1_init_irq,
-       .handle_irq     = omap1_handle_irq,
        .init_machine   = omap_nokia770_init,
        .init_late      = omap1_init_late,
        .init_time      = omap1_timer_init,
index df758c1f92373bbfc0e0e6aa2b0c109da6d500ab..46eda4ff47974712ca7d544b3a5e6eda8056007d 100644 (file)
@@ -389,7 +389,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
        .map_io         = omap1_map_io,
        .init_early     = omap1_init_early,
        .init_irq       = omap1_init_irq,
-       .handle_irq     = omap1_handle_irq,
        .init_machine   = osk_init,
        .init_late      = omap1_init_late,
        .init_time      = omap1_timer_init,
index f79c497f04d5723ff7fe384fd987438ef16f927d..91df3dc365afc5f3aa4a74c19c19d44ce7676cc8 100644 (file)
@@ -259,7 +259,6 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
        .map_io         = omap1_map_io,
        .init_early     = omap1_init_early,
        .init_irq       = omap1_init_irq,
-       .handle_irq     = omap1_handle_irq,
        .init_machine   = omap_palmte_init,
        .init_late      = omap1_init_late,
        .init_time      = omap1_timer_init,
index 0c0cdd5e77c795b93d2a0ba6a8f592eefb4fb1cc..3ae295af96fd271d5cb27c6056baff7bc5721714 100644 (file)
@@ -338,7 +338,6 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")
        .map_io         = omap1_map_io,
        .init_early     = omap1_init_early,
        .init_irq       = omap1_init_irq,
-       .handle_irq     = omap1_handle_irq,
        .init_machine   = omap_sx1_init,
        .init_late      = omap1_init_late,
        .init_time      = omap1_timer_init,
index bfc7ab010ae28d147d9bc6fec79c8749462bda1f..3d9e72e1eddc2002913af6774d36560e4da991aa 100644 (file)
@@ -37,6 +37,7 @@
  */
 #include <linux/gpio.h>
 #include <linux/init.h>
+#include <linux/irq.h>
 #include <linux/module.h>
 #include <linux/sched.h>
 #include <linux/interrupt.h>
@@ -254,4 +255,6 @@ void __init omap1_init_irq(void)
                ct = irq_data_get_chip_type(d);
                ct->chip.irq_unmask(d);
        }
+
+       set_handle_irq(omap1_handle_irq);
 }
index 72b08a9bf0fd2a70962c4e943d3acfed851567a5..6b7197ae3c72f72561ba2c30e477f46c4cabffe1 100644 (file)
@@ -233,7 +233,6 @@ MACHINE_START(GUMSTIX, "Gumstix")
        .map_io         = pxa25x_map_io,
        .nr_irqs        = PXA_NR_IRQS,
        .init_irq       = pxa25x_init_irq,
-       .handle_irq     = pxa25x_handle_irq,
        .init_time      = pxa_timer_init,
        .init_machine   = gumstix_init,
        .restart        = pxa_restart,
index 1b83be181bab3f9eb3a2548c9fb3e583d6f3e635..032dc897fe94cdf630dc4581454bd529544f02e9 100644 (file)
@@ -143,6 +143,7 @@ set_pwer:
 void __init pxa25x_init_irq(void)
 {
        pxa_init_irq(32, pxa25x_set_wake);
+       set_handle_irq(pxa25x_handle_irq);
 }
 
 static int __init __init
index 4135ba2877c4f2fd556d4c28271bce2f139052d3..c9b56424b653799dfbf7eb385fed1dc901066c71 100644 (file)
@@ -228,6 +228,7 @@ static int pxa27x_set_wake(struct irq_data *d, unsigned int on)
 void __init pxa27x_init_irq(void)
 {
        pxa_init_irq(34, pxa27x_set_wake);
+       set_handle_irq(pxa27x_handle_irq);
 }
 
 static int __init
index 4325bdc2b9ff8b4168b50e361de436caa954a676..042922a0a9d6cb946c82bc725700e4a4f7cb2d4c 100644 (file)
@@ -1043,7 +1043,6 @@ MACHINE_START(SPITZ, "SHARP Spitz")
        .map_io         = pxa27x_map_io,
        .nr_irqs        = PXA_NR_IRQS,
        .init_irq       = pxa27x_init_irq,
-       .handle_irq     = pxa27x_handle_irq,
        .init_machine   = spitz_init,
        .init_time      = pxa_timer_init,
        .restart        = spitz_restart,
@@ -1056,7 +1055,6 @@ MACHINE_START(BORZOI, "SHARP Borzoi")
        .map_io         = pxa27x_map_io,
        .nr_irqs        = PXA_NR_IRQS,
        .init_irq       = pxa27x_init_irq,
-       .handle_irq     = pxa27x_handle_irq,
        .init_machine   = spitz_init,
        .init_time      = pxa_timer_init,
        .restart        = spitz_restart,
@@ -1069,7 +1067,6 @@ MACHINE_START(AKITA, "SHARP Akita")
        .map_io         = pxa27x_map_io,
        .nr_irqs        = PXA_NR_IRQS,
        .init_irq       = pxa27x_init_irq,
-       .handle_irq     = pxa27x_handle_irq,
        .init_machine   = spitz_init,
        .init_time      = pxa_timer_init,
        .restart        = spitz_restart,
index 55cb6b5a686e955310bfbc57ed6f5ed02e040211..be96806455458b19ee8f72f3141fa0b866989d00 100644 (file)
@@ -201,6 +201,7 @@ static int __init icoll_of_init(struct device_node *np,
        stmp_reset_block(icoll_priv.ctrl);
 
        icoll_add_domain(np, ICOLL_NUM_IRQS);
+       set_handle_irq(icoll_handle_irq);
 
        return 0;
 }
diff --git a/include/linux/irqchip/mxs.h b/include/linux/irqchip/mxs.h
deleted file mode 100644 (file)
index 4f447e3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (C) 2013 Freescale Semiconductor, Inc.
- */
-
-#ifndef __LINUX_IRQCHIP_MXS_H
-#define __LINUX_IRQCHIP_MXS_H
-
-extern void icoll_handle_irq(struct pt_regs *);
-
-#endif