On Thu, Jan 21, 2010 at 08:56:49AM +0900, Kukjin Kim wrote: > This patch adds IRQ support for S5PV210. This patch adds interrupt > register definitions, IRQ definitions for various interrupt sources > and new VIC base for VIC2 and VIC3 in plat-s5p common irq code. > > Signed-off-by: Kukjin Kim <kgene.kim@xxxxxxxxxxx> > --- > arch/arm/mach-s5pv210/include/mach/irqs.h | 146 +++++++++++++++++++++++++ > arch/arm/mach-s5pv210/include/mach/regs-irq.h | 19 +++ > arch/arm/plat-s5p/include/plat/irqs.h | 6 +- > 3 files changed, 170 insertions(+), 1 deletions(-) > create mode 100644 arch/arm/mach-s5pv210/include/mach/irqs.h > create mode 100644 arch/arm/mach-s5pv210/include/mach/regs-irq.h > > diff --git a/arch/arm/mach-s5pv210/include/mach/irqs.h b/arch/arm/mach-s5pv210/include/mach/irqs.h > new file mode 100644 > index 0000000..82bf5e2 > --- /dev/null > +++ b/arch/arm/mach-s5pv210/include/mach/irqs.h > @@ -0,0 +1,146 @@ > +/* linux/arch/arm/mach-s5pv210/include/mach/irqs.h > + * > + * Copyright 2010 Samsung Electronics Co., Ltd. > + * http://www.samsung.com/ > + * > + * S5PV210 - IRQ definitions > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > +*/ > + > +#ifndef __ASM_ARCH_IRQS_H > +#define __ASM_ARCH_IRQS_H __FILE__ > + > +#include <plat/irqs.h> > + > +/* VIC0: System, DMA, Timer */ > + > +#define IRQ_EINT0 S5P_IRQ_VIC0(0) > +#define IRQ_EINT1 S5P_IRQ_VIC0(1) > +#define IRQ_EINT2 S5P_IRQ_VIC0(2) > +#define IRQ_EINT3 S5P_IRQ_VIC0(3) > +#define IRQ_EINT4 S5P_IRQ_VIC0(4) > +#define IRQ_EINT5 S5P_IRQ_VIC0(5) > +#define IRQ_EINT6 S5P_IRQ_VIC0(6) > +#define IRQ_EINT7 S5P_IRQ_VIC0(7) > +#define IRQ_EINT8 S5P_IRQ_VIC0(8) > +#define IRQ_EINT9 S5P_IRQ_VIC0(9) > +#define IRQ_EINT10 S5P_IRQ_VIC0(10) > +#define IRQ_EINT11 S5P_IRQ_VIC0(11) > +#define IRQ_EINT12 S5P_IRQ_VIC0(12) > +#define IRQ_EINT13 S5P_IRQ_VIC0(13) > +#define IRQ_EINT14 S5P_IRQ_VIC0(14) > +#define IRQ_EINT15 S5P_IRQ_VIC0(15) > +#define IRQ_EINT16_31 S5P_IRQ_VIC0(16) > +#define IRQ_BATF S5P_IRQ_VIC0(17) > +#define IRQ_MDMA S5P_IRQ_VIC0(18) > +#define IRQ_PDMA0 S5P_IRQ_VIC0(19) > +#define IRQ_PDMA1 S5P_IRQ_VIC0(20) > +#define IRQ_TIMER0_VIC S5P_IRQ_VIC0(21) > +#define IRQ_TIMER1_VIC S5P_IRQ_VIC0(22) > +#define IRQ_TIMER2_VIC S5P_IRQ_VIC0(23) > +#define IRQ_TIMER3_VIC S5P_IRQ_VIC0(24) > +#define IRQ_TIMER4_VIC S5P_IRQ_VIC0(25) > +#define IRQ_SYSTIMER S5P_IRQ_VIC0(26) > +#define IRQ_WDT S5P_IRQ_VIC0(27) > +#define IRQ_RTC_ALARM S5P_IRQ_VIC0(28) > +#define IRQ_RTC_TIC S5P_IRQ_VIC0(29) > +#define IRQ_GPIOINT S5P_IRQ_VIC0(30) > +#define IRQ_FIMC3 S5P_IRQ_VIC0(31) > + > +/* VIC1: ARM, Power, Memory, Connectivity, Storage */ > + > +#define IRQ_CORTEX0 S5P_IRQ_VIC1(0) > +#define IRQ_CORTEX1 S5P_IRQ_VIC1(1) > +#define IRQ_CORTEX2 S5P_IRQ_VIC1(2) > +#define IRQ_CORTEX3 S5P_IRQ_VIC1(3) > +#define IRQ_CORTEX4 S5P_IRQ_VIC1(4) > +#define IRQ_IEMAPC S5P_IRQ_VIC1(5) > +#define IRQ_IEMIEC S5P_IRQ_VIC1(6) > +#define IRQ_ONENAND S5P_IRQ_VIC1(7) > +#define IRQ_NFC S5P_IRQ_VIC1(8) > +#define IRQ_CFC S5P_IRQ_VIC1(9) > +#define IRQ_UART0 S5P_IRQ_VIC1(10) > +#define IRQ_UART1 S5P_IRQ_VIC1(11) > +#define IRQ_UART2 S5P_IRQ_VIC1(12) > +#define IRQ_UART3 S5P_IRQ_VIC1(13) > +#define IRQ_IIC S5P_IRQ_VIC1(14) > +#define IRQ_SPI0 S5P_IRQ_VIC1(15) > +#define IRQ_SPI1 S5P_IRQ_VIC1(16) > +#define IRQ_SPI2 S5P_IRQ_VIC1(17) > +#define IRQ_IRDA S5P_IRQ_VIC1(18) > +#define IRQ_CAN0 S5P_IRQ_VIC1(19) > +#define IRQ_CAN1 S5P_IRQ_VIC1(20) > +#define IRQ_HSIRX S5P_IRQ_VIC1(21) > +#define IRQ_HSITX S5P_IRQ_VIC1(22) > +#define IRQ_UHOST S5P_IRQ_VIC1(23) > +#define IRQ_OTG S5P_IRQ_VIC1(24) > +#define IRQ_MSM S5P_IRQ_VIC1(25) > +#define IRQ_HSMMC0 S5P_IRQ_VIC1(26) > +#define IRQ_HSMMC1 S5P_IRQ_VIC1(27) > +#define IRQ_HSMMC2 S5P_IRQ_VIC1(28) > +#define IRQ_MIPICSI S5P_IRQ_VIC1(29) > +#define IRQ_MIPIDSI S5P_IRQ_VIC1(30) > +#define IRQ_ONENAND_AUDI S5P_IRQ_VIC1(31) > + > +/* VIC2: Multimedia, Audio, Security */ > + > +#define IRQ_LCD0 S5P_IRQ_VIC2(0) > +#define IRQ_LCD1 S5P_IRQ_VIC2(1) > +#define IRQ_LCD2 S5P_IRQ_VIC2(2) > +#define IRQ_LCD3 S5P_IRQ_VIC2(3) > +#define IRQ_ROTATOR S5P_IRQ_VIC2(4) > +#define IRQ_FIMC0 S5P_IRQ_VIC2(5) > +#define IRQ_FIMC1 S5P_IRQ_VIC2(6) > +#define IRQ_FIMC2 S5P_IRQ_VIC2(7) > +#define IRQ_JPEG S5P_IRQ_VIC2(8) > +#define IRQ_2D S5P_IRQ_VIC2(9) > +#define IRQ_3D S5P_IRQ_VIC2(10) > +#define IRQ_MIXER S5P_IRQ_VIC2(11) > +#define IRQ_HDMI S5P_IRQ_VIC2(12) > +#define IRQ_IIC1 S5P_IRQ_VIC2(13) > +#define IRQ_MFC S5P_IRQ_VIC2(14) > +#define IRQ_TVENC S5P_IRQ_VIC2(15) > +#define IRQ_I2S0 S5P_IRQ_VIC2(16) > +#define IRQ_I2S1 S5P_IRQ_VIC2(17) > +#define IRQ_I2S2 S5P_IRQ_VIC2(18) > +#define IRQ_AC97 S5P_IRQ_VIC2(19) > +#define IRQ_PCM0 S5P_IRQ_VIC2(20) > +#define IRQ_PCM1 S5P_IRQ_VIC2(21) > +#define IRQ_SPDIF S5P_IRQ_VIC2(22) > +#define IRQ_ADC S5P_IRQ_VIC2(23) > +#define IRQ_PENDN S5P_IRQ_VIC2(24) > +#define IRQ_TC IRQ_PENDN > +#define IRQ_KEYPAD S5P_IRQ_VIC2(25) > +#define IRQ_CG S5P_IRQ_VIC2(26) > +#define IRQ_SEC S5P_IRQ_VIC2(27) > +#define IRQ_SECRX S5P_IRQ_VIC2(28) > +#define IRQ_SECTX S5P_IRQ_VIC2(29) > +#define IRQ_SDMIRQ S5P_IRQ_VIC2(30) > +#define IRQ_SDMFIQ S5P_IRQ_VIC2(31) > + > +/* VIC3: Etc */ > + > +#define IRQ_IPC S5P_IRQ_VIC3(0) > +#define IRQ_HOSTIF S5P_IRQ_VIC3(1) > +#define IRQ_MMC3 S5P_IRQ_VIC3(2) > +#define IRQ_CEC S5P_IRQ_VIC3(3) > +#define IRQ_TSI S5P_IRQ_VIC3(4) > +#define IRQ_MDNIE0 S5P_IRQ_VIC3(5) > +#define IRQ_MDNIE1 S5P_IRQ_VIC3(6) > +#define IRQ_MDNIE2 S5P_IRQ_VIC3(7) > +#define IRQ_MDNIE3 S5P_IRQ_VIC3(8) > +#define IRQ_VIC_END S5P_IRQ_VIC3(31) > + > +#define S5P_IRQ_EINT_BASE (IRQ_VIC_END + 1) > + > +#define S5P_EINT(x) ((x) + S5P_IRQ_EINT_BASE) > +#define IRQ_EINT(x) S5P_EINT(x) > + > +/* Set the default NR_IRQS */ > + > +#define NR_IRQS (IRQ_EINT(31) + 1) > + > +#endif /* ASM_ARCH_IRQS_H */ > diff --git a/arch/arm/mach-s5pv210/include/mach/regs-irq.h b/arch/arm/mach-s5pv210/include/mach/regs-irq.h > new file mode 100644 > index 0000000..5c3b104 > --- /dev/null > +++ b/arch/arm/mach-s5pv210/include/mach/regs-irq.h > @@ -0,0 +1,19 @@ > +/* linux/arch/arm/mach-s5pv210/include/mach/regs-irq.h > + * > + * Copyright (c) 2010 Samsung Electronics Co., Ltd. > + * http://www.samsung.com/ > + * > + * S5PV210 - IRQ register definitions > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > +*/ > + > +#ifndef __ASM_ARCH_REGS_IRQ_H > +#define __ASM_ARCH_REGS_IRQ_H __FILE__ > + > +#include <asm/hardware/vic.h> > +#include <mach/map.h> > + > +#endif /* __ASM_ARCH_REGS_IRQ_H */ > diff --git a/arch/arm/plat-s5p/include/plat/irqs.h b/arch/arm/plat-s5p/include/plat/irqs.h > index 5d7937d..81d5c38 100644 > --- a/arch/arm/plat-s5p/include/plat/irqs.h > +++ b/arch/arm/plat-s5p/include/plat/irqs.h > @@ -28,6 +28,8 @@ > > #define S5P_VIC0_BASE S5P_IRQ(0) > #define S5P_VIC1_BASE S5P_IRQ(32) > +#define S5P_VIC2_BASE S5P_IRQ(64) > +#define S5P_VIC3_BASE S5P_IRQ(96) > > #define IRQ_VIC0_BASE S5P_VIC0_BASE > #define IRQ_VIC1_BASE S5P_VIC1_BASE > @@ -71,8 +73,10 @@ > > #define S5P_IRQ_VIC0(x) (S5P_VIC0_BASE + (x)) > #define S5P_IRQ_VIC1(x) (S5P_VIC1_BASE + (x)) > +#define S5P_IRQ_VIC2(x) (S5P_VIC2_BASE + (x)) > +#define S5P_IRQ_VIC3(x) (S5P_VIC3_BASE + (x)) > > -#define S5P_TIMER_IRQ(x) S5P_IRQ(64 + (x)) > +#define S5P_TIMER_IRQ(x) S5P_IRQ(128 + (x)) > > #define IRQ_TIMER0 S5P_TIMER_IRQ(0) > #define IRQ_TIMER1 S5P_TIMER_IRQ(1) Ok, this seems to have been fixed. -- Ben Q: What's a light-year? A: One-third less calories than a regular year. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html