Commit ba279044 authored by Arnd Bergmann's avatar Arnd Bergmann

ARM: s3c64xx: enable sparse IRQ support

This is another prerequisite for enabling multiplatform
support, and it is the part I am least certain about.

I assume it will cause the extra boot message "Cannot
allocate irq_descs @ IRQ%d, assuming pre-allocated" to
be printed, but otherwise work ok. This definitely needs
to be tested on real hardware to see if it works.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent a0e157af
...@@ -705,6 +705,7 @@ config ARCH_S3C64XX ...@@ -705,6 +705,7 @@ config ARCH_S3C64XX
select SAMSUNG_ATAGS select SAMSUNG_ATAGS
select SAMSUNG_WAKEMASK select SAMSUNG_WAKEMASK
select SAMSUNG_WDT_RESET select SAMSUNG_WDT_RESET
select SPARSE_IRQ
help help
Samsung S3C64XX series based systems Samsung S3C64XX series based systems
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#include <asm/system_misc.h> #include <asm/system_misc.h>
#include <mach/map.h> #include <mach/map.h>
#include <mach/irqs.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/map.h> #include <mach/map.h>
#include <mach/irqs.h>
#include <plat/devs.h> #include <plat/devs.h>
......
...@@ -156,25 +156,11 @@ ...@@ -156,25 +156,11 @@
#define IRQ_EINT_GROUP(group, no) (IRQ_EINT_GROUP##group##_BASE + (no)) #define IRQ_EINT_GROUP(group, no) (IRQ_EINT_GROUP##group##_BASE + (no))
/* Define a group of interrupts for board-specific use (eg, for MFD /* Some boards have their own IRQs behind this */
* interrupt controllers). */
#define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1) #define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1)
#ifdef CONFIG_MACH_WLF_CRAGG_6410 /* Set the default nr_irqs, boards can override if necessary */
#define IRQ_BOARD_NR 160 #define S3C64XX_NR_IRQS IRQ_BOARD_START
#elif defined(CONFIG_SMDK6410_WM1190_EV1)
#define IRQ_BOARD_NR 64
#elif defined(CONFIG_SMDK6410_WM1192_EV1)
#define IRQ_BOARD_NR 64
#else
#define IRQ_BOARD_NR 16
#endif
#define IRQ_BOARD_END (IRQ_BOARD_START + IRQ_BOARD_NR)
/* Set the default NR_IRQS */
#define NR_IRQS (IRQ_BOARD_END + 1)
/* Compatibility */ /* Compatibility */
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/serial_s3c.h> #include <linux/serial_s3c.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/regs-clock.h>
static inline void s3c_pm_debug_init_uart(void) static inline void s3c_pm_debug_init_uart(void)
{ {
......
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <mach/irqs.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
#include <plat/samsung-time.h> #include <plat/samsung-time.h>
...@@ -229,7 +230,7 @@ static void __init anw6410_machine_init(void) ...@@ -229,7 +230,7 @@ static void __init anw6410_machine_init(void)
MACHINE_START(ANW6410, "A&W6410") MACHINE_START(ANW6410, "A&W6410")
/* Maintainer: Kwangwoo Lee <kwangwoo.lee@gmail.com> */ /* Maintainer: Kwangwoo Lee <kwangwoo.lee@gmail.com> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = anw6410_map_io, .map_io = anw6410_map_io,
.init_machine = anw6410_machine_init, .init_machine = anw6410_machine_init,
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#include <linux/platform_data/spi-s3c64xx.h> #include <linux/platform_data/spi-s3c64xx.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <mach/irqs.h>
#include "crag6410.h" #include "crag6410.h"
static struct s3c64xx_spi_csinfo wm0010_spi_csinfo = { static struct s3c64xx_spi_csinfo wm0010_spi_csinfo = {
......
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
#include <mach/map.h> #include <mach/map.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
#include <mach/irqs.h>
#include <plat/fb.h> #include <plat/fb.h>
#include <plat/sdhci.h> #include <plat/sdhci.h>
...@@ -860,6 +861,7 @@ static void __init crag6410_machine_init(void) ...@@ -860,6 +861,7 @@ static void __init crag6410_machine_init(void)
MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410") MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
/* Maintainer: Mark Brown <broonie@opensource.wolfsonmicro.com> */ /* Maintainer: Mark Brown <broonie@opensource.wolfsonmicro.com> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = crag6410_map_io, .map_io = crag6410_map_io,
.init_machine = crag6410_machine_init, .init_machine = crag6410_machine_init,
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <video/samsung_fimd.h> #include <video/samsung_fimd.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/map.h> #include <mach/map.h>
#include <mach/irqs.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -279,6 +280,7 @@ static void __init hmt_machine_init(void) ...@@ -279,6 +280,7 @@ static void __init hmt_machine_init(void)
MACHINE_START(HMT, "Airgoo-HMT") MACHINE_START(HMT, "Airgoo-HMT")
/* Maintainer: Peter Korsgaard <jacmet@sunsite.dk> */ /* Maintainer: Peter Korsgaard <jacmet@sunsite.dk> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = hmt_map_io, .map_io = hmt_map_io,
.init_machine = hmt_machine_init, .init_machine = hmt_machine_init,
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include <linux/platform_data/mmc-sdhci-s3c.h> #include <linux/platform_data/mmc-sdhci-s3c.h>
#include <plat/sdhci.h> #include <plat/sdhci.h>
#include <linux/platform_data/touchscreen-s3c2410.h> #include <linux/platform_data/touchscreen-s3c2410.h>
#include <mach/irqs.h>
#include <video/platform_lcd.h> #include <video/platform_lcd.h>
#include <video/samsung_fimd.h> #include <video/samsung_fimd.h>
...@@ -363,6 +364,7 @@ static void __init mini6410_machine_init(void) ...@@ -363,6 +364,7 @@ static void __init mini6410_machine_init(void)
MACHINE_START(MINI6410, "MINI6410") MACHINE_START(MINI6410, "MINI6410")
/* Maintainer: Darius Augulis <augulis.darius@gmail.com> */ /* Maintainer: Darius Augulis <augulis.darius@gmail.com> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = mini6410_map_io, .map_io = mini6410_map_io,
.init_machine = mini6410_machine_init, .init_machine = mini6410_machine_init,
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <mach/irqs.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/map.h> #include <mach/map.h>
...@@ -100,6 +101,7 @@ static void __init ncp_machine_init(void) ...@@ -100,6 +101,7 @@ static void __init ncp_machine_init(void)
MACHINE_START(NCP, "NCP") MACHINE_START(NCP, "NCP")
/* Maintainer: Samsung Electronics */ /* Maintainer: Samsung Electronics */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = ncp_map_io, .map_io = ncp_map_io,
.init_machine = ncp_machine_init, .init_machine = ncp_machine_init,
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include <mach/map.h> #include <mach/map.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
#include <mach/irqs.h>
#include <plat/adc.h> #include <plat/adc.h>
#include <plat/cpu.h> #include <plat/cpu.h>
...@@ -331,7 +332,7 @@ static void __init real6410_machine_init(void) ...@@ -331,7 +332,7 @@ static void __init real6410_machine_init(void)
MACHINE_START(REAL6410, "REAL6410") MACHINE_START(REAL6410, "REAL6410")
/* Maintainer: Darius Augulis <augulis.darius@gmail.com> */ /* Maintainer: Darius Augulis <augulis.darius@gmail.com> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = real6410_map_io, .map_io = real6410_map_io,
.init_machine = real6410_machine_init, .init_machine = real6410_machine_init,
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <video/samsung_fimd.h> #include <video/samsung_fimd.h>
#include <mach/irqs.h>
#include <mach/map.h> #include <mach/map.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
...@@ -153,6 +154,7 @@ static void __init smartq5_machine_init(void) ...@@ -153,6 +154,7 @@ static void __init smartq5_machine_init(void)
MACHINE_START(SMARTQ5, "SmartQ 5") MACHINE_START(SMARTQ5, "SmartQ 5")
/* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */ /* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = smartq_map_io, .map_io = smartq_map_io,
.init_machine = smartq5_machine_init, .init_machine = smartq5_machine_init,
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <video/samsung_fimd.h> #include <video/samsung_fimd.h>
#include <mach/irqs.h>
#include <mach/map.h> #include <mach/map.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
...@@ -169,6 +170,7 @@ static void __init smartq7_machine_init(void) ...@@ -169,6 +170,7 @@ static void __init smartq7_machine_init(void)
MACHINE_START(SMARTQ7, "SmartQ 7") MACHINE_START(SMARTQ7, "SmartQ 7")
/* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */ /* Maintainer: Maurus Cuelenaere <mcuelenaere AT gmail DOT com> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = smartq_map_io, .map_io = smartq_map_io,
.init_machine = smartq7_machine_init, .init_machine = smartq7_machine_init,
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <mach/irqs.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/map.h> #include <mach/map.h>
...@@ -88,7 +89,7 @@ static void __init smdk6400_machine_init(void) ...@@ -88,7 +89,7 @@ static void __init smdk6400_machine_init(void)
MACHINE_START(SMDK6400, "SMDK6400") MACHINE_START(SMDK6400, "SMDK6400")
/* Maintainer: Ben Dooks <ben-linux@fluff.org> */ /* Maintainer: Ben Dooks <ben-linux@fluff.org> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6400_init_irq, .init_irq = s3c6400_init_irq,
.map_io = smdk6400_map_io, .map_io = smdk6400_map_io,
.init_machine = smdk6400_machine_init, .init_machine = smdk6400_machine_init,
......
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/irqs.h>
#include <mach/map.h> #include <mach/map.h>
#include <asm/irq.h> #include <asm/irq.h>
...@@ -707,7 +708,7 @@ static void __init smdk6410_machine_init(void) ...@@ -707,7 +708,7 @@ static void __init smdk6410_machine_init(void)
MACHINE_START(SMDK6410, "SMDK6410") MACHINE_START(SMDK6410, "SMDK6410")
/* Maintainer: Ben Dooks <ben-linux@fluff.org> */ /* Maintainer: Ben Dooks <ben-linux@fluff.org> */
.atag_offset = 0x100, .atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq, .init_irq = s3c6410_init_irq,
.map_io = smdk6410_map_io, .map_io = smdk6410_map_io,
.init_machine = smdk6410_machine_init, .init_machine = smdk6410_machine_init,
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <asm/irq.h> #include <asm/irq.h>
#include <mach/irqs.h>
#include <mach/map.h> #include <mach/map.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment