diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2011-09-06 08:27:10 -0400 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2011-11-15 13:14:02 -0500 |
commit | 08d33b27f7063ba2b4a29f9e3a2dcb65f30dec0b (patch) | |
tree | e338de68f8b56238b91d9979857be253310f0200 | |
parent | ab65be268adaae59da5b1306b425a7859f955669 (diff) |
ARM: GIC: Make MULTI_IRQ_HANDLER mandatory
Now that MULTI_IRQ_HANDLER is selected by all the in-tree
GIC users, make it mandatory and remove the unused macros.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
-rw-r--r-- | arch/arm/Kconfig | 6 | ||||
-rw-r--r-- | arch/arm/common/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/common/gic.c | 4 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/entry-macro-gic.S | 60 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/gic.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-msm/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-ux500/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/Kconfig | 1 |
10 files changed, 2 insertions, 76 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index d99ee9ba2324..44789eff983f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -278,7 +278,6 @@ config ARCH_REALVIEW | |||
278 | select ARM_TIMER_SP804 | 278 | select ARM_TIMER_SP804 |
279 | select GPIO_PL061 if GPIOLIB | 279 | select GPIO_PL061 if GPIOLIB |
280 | select NEED_MACH_MEMORY_H | 280 | select NEED_MACH_MEMORY_H |
281 | select MULTI_IRQ_HANDLER | ||
282 | help | 281 | help |
283 | This enables support for ARM Ltd RealView boards. | 282 | This enables support for ARM Ltd RealView boards. |
284 | 283 | ||
@@ -311,7 +310,6 @@ config ARCH_VEXPRESS | |||
311 | select ICST | 310 | select ICST |
312 | select PLAT_VERSATILE | 311 | select PLAT_VERSATILE |
313 | select PLAT_VERSATILE_CLCD | 312 | select PLAT_VERSATILE_CLCD |
314 | select MULTI_IRQ_HANDLER | ||
315 | help | 313 | help |
316 | This enables support for the ARM Ltd Versatile Express boards. | 314 | This enables support for the ARM Ltd Versatile Express boards. |
317 | 315 | ||
@@ -347,7 +345,6 @@ config ARCH_HIGHBANK | |||
347 | select GENERIC_CLOCKEVENTS | 345 | select GENERIC_CLOCKEVENTS |
348 | select HAVE_ARM_SCU | 346 | select HAVE_ARM_SCU |
349 | select USE_OF | 347 | select USE_OF |
350 | select MULTI_IRQ_HANDLER | ||
351 | help | 348 | help |
352 | Support for the Calxeda Highbank SoC based boards. | 349 | Support for the Calxeda Highbank SoC based boards. |
353 | 350 | ||
@@ -366,7 +363,6 @@ config ARCH_CNS3XXX | |||
366 | select ARM_GIC | 363 | select ARM_GIC |
367 | select MIGHT_HAVE_PCI | 364 | select MIGHT_HAVE_PCI |
368 | select PCI_DOMAINS if PCI | 365 | select PCI_DOMAINS if PCI |
369 | select MULTI_IRQ_HANDLER | ||
370 | help | 366 | help |
371 | Support for Cavium Networks CNS3XXX platform. | 367 | Support for Cavium Networks CNS3XXX platform. |
372 | 368 | ||
@@ -855,7 +851,6 @@ config ARCH_EXYNOS | |||
855 | select HAVE_S3C2410_I2C if I2C | 851 | select HAVE_S3C2410_I2C if I2C |
856 | select HAVE_S3C2410_WATCHDOG if WATCHDOG | 852 | select HAVE_S3C2410_WATCHDOG if WATCHDOG |
857 | select NEED_MACH_MEMORY_H | 853 | select NEED_MACH_MEMORY_H |
858 | select MULTI_IRQ_HANDLER | ||
859 | help | 854 | help |
860 | Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5) | 855 | Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5) |
861 | 856 | ||
@@ -979,7 +974,6 @@ config ARCH_ZYNQ | |||
979 | select ARM_AMBA | 974 | select ARM_AMBA |
980 | select ICST | 975 | select ICST |
981 | select USE_OF | 976 | select USE_OF |
982 | select MULTI_IRQ_HANDLER | ||
983 | help | 977 | help |
984 | Support for Xilinx Zynq ARM Cortex A9 Platform | 978 | Support for Xilinx Zynq ARM Cortex A9 Platform |
985 | endchoice | 979 | endchoice |
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig index a3beda1213da..a11cee523cd4 100644 --- a/arch/arm/common/Kconfig +++ b/arch/arm/common/Kconfig | |||
@@ -1,5 +1,6 @@ | |||
1 | config ARM_GIC | 1 | config ARM_GIC |
2 | select IRQ_DOMAIN | 2 | select IRQ_DOMAIN |
3 | select MULTI_IRQ_HANDLER | ||
3 | bool | 4 | bool |
4 | 5 | ||
5 | config GIC_NON_BANKED | 6 | config GIC_NON_BANKED |
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c index 3c78b7c60691..a1feb6b4f9f5 100644 --- a/arch/arm/common/gic.c +++ b/arch/arm/common/gic.c | |||
@@ -71,9 +71,6 @@ struct gic_chip_data { | |||
71 | 71 | ||
72 | static DEFINE_RAW_SPINLOCK(irq_controller_lock); | 72 | static DEFINE_RAW_SPINLOCK(irq_controller_lock); |
73 | 73 | ||
74 | /* Address of GIC 0 CPU interface */ | ||
75 | void __iomem *gic_cpu_base_addr __read_mostly; | ||
76 | |||
77 | /* | 74 | /* |
78 | * Supported arch specific GIC irq extension. | 75 | * Supported arch specific GIC irq extension. |
79 | * Default make them NULL. | 76 | * Default make them NULL. |
@@ -700,7 +697,6 @@ void __init gic_init_bases(unsigned int gic_nr, int irq_start, | |||
700 | * For secondary GICs, skip over PPIs, too. | 697 | * For secondary GICs, skip over PPIs, too. |
701 | */ | 698 | */ |
702 | if (gic_nr == 0) { | 699 | if (gic_nr == 0) { |
703 | gic_cpu_base_addr = cpu_base; | ||
704 | domain->hwirq_base = 16; | 700 | domain->hwirq_base = 16; |
705 | if (irq_start > 0) | 701 | if (irq_start > 0) |
706 | irq_start = (irq_start & ~31) + 16; | 702 | irq_start = (irq_start & ~31) + 16; |
diff --git a/arch/arm/include/asm/hardware/entry-macro-gic.S b/arch/arm/include/asm/hardware/entry-macro-gic.S deleted file mode 100644 index 74ebc803904d..000000000000 --- a/arch/arm/include/asm/hardware/entry-macro-gic.S +++ /dev/null | |||
@@ -1,60 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/include/asm/hardware/entry-macro-gic.S | ||
3 | * | ||
4 | * Low-level IRQ helper macros for GIC | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <asm/hardware/gic.h> | ||
12 | |||
13 | #ifndef HAVE_GET_IRQNR_PREAMBLE | ||
14 | .macro get_irqnr_preamble, base, tmp | ||
15 | ldr \base, =gic_cpu_base_addr | ||
16 | ldr \base, [\base] | ||
17 | .endm | ||
18 | #endif | ||
19 | |||
20 | /* | ||
21 | * The interrupt numbering scheme is defined in the | ||
22 | * interrupt controller spec. To wit: | ||
23 | * | ||
24 | * Interrupts 0-15 are IPI | ||
25 | * 16-31 are local. We allow 30 to be used for the watchdog. | ||
26 | * 32-1020 are global | ||
27 | * 1021-1022 are reserved | ||
28 | * 1023 is "spurious" (no interrupt) | ||
29 | * | ||
30 | * A simple read from the controller will tell us the number of the highest | ||
31 | * priority enabled interrupt. We then just need to check whether it is in the | ||
32 | * valid range for an IRQ (30-1020 inclusive). | ||
33 | */ | ||
34 | |||
35 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
36 | |||
37 | ldr \irqstat, [\base, #GIC_CPU_INTACK] | ||
38 | /* bits 12-10 = src CPU, 9-0 = int # */ | ||
39 | |||
40 | ldr \tmp, =1021 | ||
41 | bic \irqnr, \irqstat, #0x1c00 | ||
42 | cmp \irqnr, #15 | ||
43 | cmpcc \irqnr, \irqnr | ||
44 | cmpne \irqnr, \tmp | ||
45 | cmpcs \irqnr, \irqnr | ||
46 | .endm | ||
47 | |||
48 | /* We assume that irqstat (the raw value of the IRQ acknowledge | ||
49 | * register) is preserved from the macro above. | ||
50 | * If there is an IPI, we immediately signal end of interrupt on the | ||
51 | * controller, since this requires the original irqstat value which | ||
52 | * we won't easily be able to recreate later. | ||
53 | */ | ||
54 | |||
55 | .macro test_for_ipi, irqnr, irqstat, base, tmp | ||
56 | bic \irqnr, \irqstat, #0x1c00 | ||
57 | cmp \irqnr, #16 | ||
58 | strcc \irqstat, [\base, #GIC_CPU_EOI] | ||
59 | cmpcs \irqnr, \irqnr | ||
60 | .endm | ||
diff --git a/arch/arm/include/asm/hardware/gic.h b/arch/arm/include/asm/hardware/gic.h index ecf7c02fa16c..4bdfe0018696 100644 --- a/arch/arm/include/asm/hardware/gic.h +++ b/arch/arm/include/asm/hardware/gic.h | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/irqdomain.h> | 36 | #include <linux/irqdomain.h> |
37 | struct device_node; | 37 | struct device_node; |
38 | 38 | ||
39 | extern void __iomem *gic_cpu_base_addr; | ||
40 | extern struct irq_chip gic_arch_extn; | 39 | extern struct irq_chip gic_arch_extn; |
41 | 40 | ||
42 | void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *, | 41 | void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *, |
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig index ba36b74881c6..ebde97f5d5f0 100644 --- a/arch/arm/mach-msm/Kconfig +++ b/arch/arm/mach-msm/Kconfig | |||
@@ -50,7 +50,6 @@ config ARCH_MSM8X60 | |||
50 | select GPIO_MSM_V2 | 50 | select GPIO_MSM_V2 |
51 | select MSM_GPIOMUX | 51 | select MSM_GPIOMUX |
52 | select MSM_SCM if SMP | 52 | select MSM_SCM if SMP |
53 | select MULTI_IRQ_HANDLER | ||
54 | 53 | ||
55 | config ARCH_MSM8960 | 54 | config ARCH_MSM8960 |
56 | bool "MSM8960" | 55 | bool "MSM8960" |
@@ -61,7 +60,6 @@ config ARCH_MSM8960 | |||
61 | select MSM_V2_TLMM | 60 | select MSM_V2_TLMM |
62 | select MSM_GPIOMUX | 61 | select MSM_GPIOMUX |
63 | select MSM_SCM if SMP | 62 | select MSM_SCM if SMP |
64 | select MULTI_IRQ_HANDLER | ||
65 | 63 | ||
66 | endchoice | 64 | endchoice |
67 | 65 | ||
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 9a6d81873426..22f7c97a2728 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -37,6 +37,7 @@ config ARCH_OMAP3 | |||
37 | select ARCH_HAS_OPP | 37 | select ARCH_HAS_OPP |
38 | select PM_OPP if PM | 38 | select PM_OPP if PM |
39 | select ARM_CPU_SUSPEND if PM | 39 | select ARM_CPU_SUSPEND if PM |
40 | select MULTI_IRQ_HANDLER | ||
40 | 41 | ||
41 | config ARCH_OMAP4 | 42 | config ARCH_OMAP4 |
42 | bool "TI OMAP4" | 43 | bool "TI OMAP4" |
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig index a6faa5033507..91aff7cb8284 100644 --- a/arch/arm/mach-tegra/Kconfig +++ b/arch/arm/mach-tegra/Kconfig | |||
@@ -13,7 +13,6 @@ config ARCH_TEGRA_2x_SOC | |||
13 | select USB_ARCH_HAS_EHCI if USB_SUPPORT | 13 | select USB_ARCH_HAS_EHCI if USB_SUPPORT |
14 | select USB_ULPI if USB_SUPPORT | 14 | select USB_ULPI if USB_SUPPORT |
15 | select USB_ULPI_VIEWPORT if USB_SUPPORT | 15 | select USB_ULPI_VIEWPORT if USB_SUPPORT |
16 | select MULTI_IRQ_HANDLER | ||
17 | help | 16 | help |
18 | Support for NVIDIA Tegra AP20 and T20 processors, based on the | 17 | Support for NVIDIA Tegra AP20 and T20 processors, based on the |
19 | ARM CortexA9MP CPU and the ARM PL310 L2 cache controller | 18 | ARM CortexA9MP CPU and the ARM PL310 L2 cache controller |
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index bb2b52b03904..a3e0c8692f0d 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig | |||
@@ -7,7 +7,6 @@ config UX500_SOC_COMMON | |||
7 | select HAS_MTU | 7 | select HAS_MTU |
8 | select ARM_ERRATA_753970 | 8 | select ARM_ERRATA_753970 |
9 | select ARM_ERRATA_754322 | 9 | select ARM_ERRATA_754322 |
10 | select MULTI_IRQ_HANDLER | ||
11 | 10 | ||
12 | menu "Ux500 SoC" | 11 | menu "Ux500 SoC" |
13 | 12 | ||
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig index 4a1cc5891682..aa59f4247dc5 100644 --- a/arch/arm/plat-omap/Kconfig +++ b/arch/arm/plat-omap/Kconfig | |||
@@ -24,7 +24,6 @@ config ARCH_OMAP2PLUS | |||
24 | select CLKDEV_LOOKUP | 24 | select CLKDEV_LOOKUP |
25 | select GENERIC_IRQ_CHIP | 25 | select GENERIC_IRQ_CHIP |
26 | select OMAP_DM_TIMER | 26 | select OMAP_DM_TIMER |
27 | select MULTI_IRQ_HANDLER | ||
28 | help | 27 | help |
29 | "Systems based on OMAP2, OMAP3 or OMAP4" | 28 | "Systems based on OMAP2, OMAP3 or OMAP4" |
30 | 29 | ||