Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8fe82a55 authored by Ludovic Desroches's avatar Ludovic Desroches Committed by Nicolas Ferre
Browse files

ARM: at91: sparse irq support



Enable sparse irq support for multisoc image. It involves to add the
NR_IRQS_LEGACY offset to static SoC irq number definitions since NR_IRQS_LEGACY
irq descs are allocated before AIC requests irq descs allocation.
Move NR_AIC_IRQS macro to a more appropiate place with the purpose to
remove mach/irqs.h later.

Signed-off-by: default avatarLudovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
parent 3e135466
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ config SOC_AT91SAM9
	bool
	select CPU_ARM926T
	select MULTI_IRQ_HANDLER
	select SPARSE_IRQ
	select AT91_SAM9_TIME
	select AT91_SAM9_SMC

+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#include <asm/mach/map.h>
#include <asm/system_misc.h>
#include <mach/at91rm9200.h>
#include <mach/at91_aic.h>
#include <mach/at91_pmc.h>
#include <mach/at91_st.h>
#include <mach/cpu.h>
+42 −42
Original line number Diff line number Diff line
@@ -41,8 +41,8 @@ static struct resource usbh_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_UHP,
		.end	= AT91RM9200_ID_UHP,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_UHP,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_UHP,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -94,8 +94,8 @@ static struct resource udc_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_UDP,
		.end	= AT91RM9200_ID_UDP,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_UDP,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_UDP,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -145,8 +145,8 @@ static struct resource eth_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_EMAC,
		.end	= AT91RM9200_ID_EMAC,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_EMAC,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_EMAC,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -305,8 +305,8 @@ static struct resource mmc_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_MCI,
		.end	= AT91RM9200_ID_MCI,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_MCI,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_MCI,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -488,8 +488,8 @@ static struct resource twi_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_TWI,
		.end	= AT91RM9200_ID_TWI,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_TWI,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_TWI,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -532,8 +532,8 @@ static struct resource spi_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_SPI,
		.end	= AT91RM9200_ID_SPI,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_SPI,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_SPI,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -598,18 +598,18 @@ static struct resource tcb0_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_TC0,
		.end	= AT91RM9200_ID_TC0,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_TC0,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_TC0,
		.flags	= IORESOURCE_IRQ,
	},
	[2] = {
		.start	= AT91RM9200_ID_TC1,
		.end	= AT91RM9200_ID_TC1,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_TC1,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_TC1,
		.flags	= IORESOURCE_IRQ,
	},
	[3] = {
		.start	= AT91RM9200_ID_TC2,
		.end	= AT91RM9200_ID_TC2,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_TC2,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_TC2,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -628,18 +628,18 @@ static struct resource tcb1_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_TC3,
		.end	= AT91RM9200_ID_TC3,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_TC3,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_TC3,
		.flags	= IORESOURCE_IRQ,
	},
	[2] = {
		.start	= AT91RM9200_ID_TC4,
		.end	= AT91RM9200_ID_TC4,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_TC4,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_TC4,
		.flags	= IORESOURCE_IRQ,
	},
	[3] = {
		.start	= AT91RM9200_ID_TC5,
		.end	= AT91RM9200_ID_TC5,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_TC5,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_TC5,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -673,8 +673,8 @@ static struct resource rtc_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91_ID_SYS,
		.end	= AT91_ID_SYS,
		.start	= NR_IRQS_LEGACY + AT91_ID_SYS,
		.end	= NR_IRQS_LEGACY + AT91_ID_SYS,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -729,8 +729,8 @@ static struct resource ssc0_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_SSC0,
		.end	= AT91RM9200_ID_SSC0,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_SSC0,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_SSC0,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -771,8 +771,8 @@ static struct resource ssc1_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_SSC1,
		.end	= AT91RM9200_ID_SSC1,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_SSC1,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_SSC1,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -813,8 +813,8 @@ static struct resource ssc2_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_SSC2,
		.end	= AT91RM9200_ID_SSC2,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_SSC2,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_SSC2,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -897,8 +897,8 @@ static struct resource dbgu_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91_ID_SYS,
		.end	= AT91_ID_SYS,
		.start	= NR_IRQS_LEGACY + AT91_ID_SYS,
		.end	= NR_IRQS_LEGACY + AT91_ID_SYS,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -935,8 +935,8 @@ static struct resource uart0_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_US0,
		.end	= AT91RM9200_ID_US0,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_US0,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_US0,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -984,8 +984,8 @@ static struct resource uart1_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_US1,
		.end	= AT91RM9200_ID_US1,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_US1,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_US1,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -1035,8 +1035,8 @@ static struct resource uart2_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_US2,
		.end	= AT91RM9200_ID_US2,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_US2,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_US2,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -1078,8 +1078,8 @@ static struct resource uart3_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91RM9200_ID_US3,
		.end	= AT91RM9200_ID_US3,
		.start	= NR_IRQS_LEGACY + AT91RM9200_ID_US3,
		.end	= NR_IRQS_LEGACY + AT91RM9200_ID_US3,
		.flags	= IORESOURCE_IRQ,
	},
};
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <mach/cpu.h>
#include <mach/at91_dbgu.h>
#include <mach/at91sam9260.h>
#include <mach/at91_aic.h>
#include <mach/at91_pmc.h>
#include <mach/at91_rstc.h>

+46 −46
Original line number Diff line number Diff line
@@ -45,8 +45,8 @@ static struct resource usbh_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_UHP,
		.end	= AT91SAM9260_ID_UHP,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_UHP,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_UHP,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -98,8 +98,8 @@ static struct resource udc_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_UDP,
		.end	= AT91SAM9260_ID_UDP,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_UDP,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_UDP,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -149,8 +149,8 @@ static struct resource eth_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_EMAC,
		.end	= AT91SAM9260_ID_EMAC,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_EMAC,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_EMAC,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -223,8 +223,8 @@ static struct resource mmc_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_MCI,
		.end	= AT91SAM9260_ID_MCI,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_MCI,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_MCI,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -305,8 +305,8 @@ static struct resource mmc_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_MCI,
		.end	= AT91SAM9260_ID_MCI,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_MCI,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_MCI,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -496,8 +496,8 @@ static struct resource twi_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_TWI,
		.end	= AT91SAM9260_ID_TWI,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_TWI,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_TWI,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -540,8 +540,8 @@ static struct resource spi0_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_SPI0,
		.end	= AT91SAM9260_ID_SPI0,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_SPI0,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_SPI0,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -566,8 +566,8 @@ static struct resource spi1_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_SPI1,
		.end	= AT91SAM9260_ID_SPI1,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_SPI1,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_SPI1,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -652,18 +652,18 @@ static struct resource tcb0_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_TC0,
		.end	= AT91SAM9260_ID_TC0,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC0,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC0,
		.flags	= IORESOURCE_IRQ,
	},
	[2] = {
		.start	= AT91SAM9260_ID_TC1,
		.end	= AT91SAM9260_ID_TC1,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC1,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC1,
		.flags	= IORESOURCE_IRQ,
	},
	[3] = {
		.start	= AT91SAM9260_ID_TC2,
		.end	= AT91SAM9260_ID_TC2,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC2,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC2,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -682,18 +682,18 @@ static struct resource tcb1_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_TC3,
		.end	= AT91SAM9260_ID_TC3,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC3,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC3,
		.flags	= IORESOURCE_IRQ,
	},
	[2] = {
		.start	= AT91SAM9260_ID_TC4,
		.end	= AT91SAM9260_ID_TC4,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC4,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC4,
		.flags	= IORESOURCE_IRQ,
	},
	[3] = {
		.start	= AT91SAM9260_ID_TC5,
		.end	= AT91SAM9260_ID_TC5,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC5,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_TC5,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -807,8 +807,8 @@ static struct resource ssc_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_SSC,
		.end	= AT91SAM9260_ID_SSC,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_SSC,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_SSC,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -882,8 +882,8 @@ static struct resource dbgu_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91_ID_SYS,
		.end	= AT91_ID_SYS,
		.start	= NR_IRQS_LEGACY + AT91_ID_SYS,
		.end	= NR_IRQS_LEGACY + AT91_ID_SYS,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -920,8 +920,8 @@ static struct resource uart0_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_US0,
		.end	= AT91SAM9260_ID_US0,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_US0,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_US0,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -971,8 +971,8 @@ static struct resource uart1_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_US1,
		.end	= AT91SAM9260_ID_US1,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_US1,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_US1,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -1014,8 +1014,8 @@ static struct resource uart2_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_US2,
		.end	= AT91SAM9260_ID_US2,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_US2,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_US2,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -1057,8 +1057,8 @@ static struct resource uart3_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_US3,
		.end	= AT91SAM9260_ID_US3,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_US3,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_US3,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -1100,8 +1100,8 @@ static struct resource uart4_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_US4,
		.end	= AT91SAM9260_ID_US4,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_US4,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_US4,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -1138,8 +1138,8 @@ static struct resource uart5_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_US5,
		.end	= AT91SAM9260_ID_US5,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_US5,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_US5,
		.flags	= IORESOURCE_IRQ,
	},
};
@@ -1357,8 +1357,8 @@ static struct resource adc_resources[] = {
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= AT91SAM9260_ID_ADC,
		.end	= AT91SAM9260_ID_ADC,
		.start	= NR_IRQS_LEGACY + AT91SAM9260_ID_ADC,
		.end	= NR_IRQS_LEGACY + AT91SAM9260_ID_ADC,
		.flags	= IORESOURCE_IRQ,
	},
};
Loading