From 375dec92777c96015a13a23eaeb4f23281fb8662 Mon Sep 17 00:00:00 2001 From: Russell King Date: Thu, 23 Feb 2012 14:29:33 +0100 Subject: [PATCH] ARM: 7343/1: sa11x0: convert to sparse IRQ Now that Neponset, UCB1x00 and SA1111 are all converted to use the IRQ allocation interfaces, we can enable sparse IRQ support for SA11x0 platforms. --- arch/arm/Kconfig | 1 + arch/arm/mach-sa1100/badge4.c | 1 - arch/arm/mach-sa1100/include/mach/irqs.h | 21 ++++++++++++--------- arch/arm/mach-sa1100/jornada720.c | 1 - arch/arm/mach-sa1100/neponset.c | 1 - 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index a48aecc17eac..34aed718faed 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -760,6 +760,7 @@ config ARCH_SA1100 select ARCH_REQUIRE_GPIOLIB select HAVE_IDE select NEED_MACH_MEMORY_H + select SPARSE_IRQ help Support for StrongARM 11x0 based boards. diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c index 8c805425b684..e0f0c030258c 100644 --- a/arch/arm/mach-sa1100/badge4.c +++ b/arch/arm/mach-sa1100/badge4.c @@ -57,7 +57,6 @@ static void badge4_sa1111_disable(void *data, unsigned devid) } static struct sa1111_platform_data sa1111_info = { - .irq_base = IRQ_BOARD_END, .disable_devs = SA1111_DEVID_PS2_MSE, .enable = badge4_sa1111_enable, .disable = badge4_sa1111_disable, diff --git a/arch/arm/mach-sa1100/include/mach/irqs.h b/arch/arm/mach-sa1100/include/mach/irqs.h index 0ad78218c9f3..3790298b7142 100644 --- a/arch/arm/mach-sa1100/include/mach/irqs.h +++ b/arch/arm/mach-sa1100/include/mach/irqs.h @@ -71,16 +71,19 @@ /* * Figure out the MAX IRQ number. * - * If we have an SA1111, the max IRQ is S1_BVD1_STSCHG+1. - * If we have an LoCoMo, the max IRQ is IRQ_BOARD_START + 4 - * Otherwise, we have the standard IRQs only. + * Neponset, SA1111 and UCB1x00 are sparse IRQ aware, so can dynamically + * allocate their IRQs above NR_IRQS. + * + * LoCoMo has 4 additional IRQs, but is not sparse IRQ aware, and so has + * to be included in the NR_IRQS calculation. */ -#ifdef CONFIG_SA1111 -#define NR_IRQS (IRQ_BOARD_END + 55) -#elif defined(CONFIG_SHARP_LOCOMO) -#define NR_IRQS (IRQ_BOARD_START + 4) +#ifdef CONFIG_SHARP_LOCOMO +#define NR_IRQS_LOCOMO 4 #else -#define NR_IRQS (IRQ_BOARD_START) +#define NR_IRQS_LOCOMO 0 #endif -#define SA1100_NR_IRQS NR_IRQS +#ifndef NR_IRQS +#define NR_IRQS (IRQ_BOARD_START + NR_IRQS_LOCOMO) +#endif +#define SA1100_NR_IRQS (IRQ_BOARD_START + NR_IRQS_LOCOMO) diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index b7dcb1887aca..ca7a7e834720 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c @@ -195,7 +195,6 @@ static struct resource sa1111_resources[] = { }; static struct sa1111_platform_data sa1111_info = { - .irq_base = IRQ_BOARD_END, .disable_devs = SA1111_DEVID_PS2_MSE, }; diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c index b04a8f1928fc..6c58f01b358a 100644 --- a/arch/arm/mach-sa1100/neponset.c +++ b/arch/arm/mach-sa1100/neponset.c @@ -229,7 +229,6 @@ static struct irq_chip nochip = { }; static struct sa1111_platform_data sa1111_info = { - .irq_base = IRQ_BOARD_END, .disable_devs = SA1111_DEVID_PS2_MSE, }; -- 2.20.1