diff options
author | eric miao <eric.miao@marvell.com> | 2008-03-04 00:53:05 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-04-19 06:29:04 -0400 |
commit | f6fb7af4768bc1ddc2349f6eaefedd746c8e4913 (patch) | |
tree | ade9682bb833f1b576609b4344b4e55ce20a8500 /include/asm-arm/arch-pxa | |
parent | e3630db1fa7677b350fd5a1ac5498cc48448ae28 (diff) |
[ARM] pxa: integrate low IRQ chip (ICIP) and high IRQ chip (ICIP2) into one
This makes the code better organized and simplified a bit. The change
will lose a bit of performance when performing IRQ ack/mask/unmask,but
that's not too much after checking the result binary.
This patch also removes the ugly #ifdef CONFIG_PXA27x .. #endif by
carefully not to access those pxa{27x,3xx} specific registers, this
is done by keeping an internal IRQ number variable. The pxa-regs.h
is also modified so registers for IRQ > PXA_IRQ(31) are made public
even if CONFIG_PXA{27x,3xx} isn't defined (for pxa25x's sake)
The incorrect assumption in the original code that internal irq starts
from 0 is also corrected by comparing with PXA_IRQ(0).
"struct sys_device" for the IRQ are reduced into one single device on
pxa{27x,3xx}.
Signed-off-by: eric miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/arch-pxa')
-rw-r--r-- | include/asm-arm/arch-pxa/pxa-regs.h | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/include/asm-arm/arch-pxa/pxa-regs.h b/include/asm-arm/arch-pxa/pxa-regs.h index fd81e559f15d..e659be4df3ac 100644 --- a/include/asm-arm/arch-pxa/pxa-regs.h +++ b/include/asm-arm/arch-pxa/pxa-regs.h | |||
@@ -1129,6 +1129,11 @@ | |||
1129 | #define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */ | 1129 | #define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */ |
1130 | #define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */ | 1130 | #define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */ |
1131 | 1131 | ||
1132 | #define ICIP2 __REG(0x40D0009C) /* Interrupt Controller IRQ Pending Register 2 */ | ||
1133 | #define ICMR2 __REG(0x40D000A0) /* Interrupt Controller Mask Register 2 */ | ||
1134 | #define ICLR2 __REG(0x40D000A4) /* Interrupt Controller Level Register 2 */ | ||
1135 | #define ICFP2 __REG(0x40D000A8) /* Interrupt Controller FIQ Pending Register 2 */ | ||
1136 | #define ICPR2 __REG(0x40D000AC) /* Interrupt Controller Pending Register 2 */ | ||
1132 | 1137 | ||
1133 | /* | 1138 | /* |
1134 | * General Purpose I/O | 1139 | * General Purpose I/O |
@@ -1200,12 +1205,6 @@ | |||
1200 | 1205 | ||
1201 | /* Interrupt Controller */ | 1206 | /* Interrupt Controller */ |
1202 | 1207 | ||
1203 | #define ICIP2 __REG(0x40D0009C) /* Interrupt Controller IRQ Pending Register 2 */ | ||
1204 | #define ICMR2 __REG(0x40D000A0) /* Interrupt Controller Mask Register 2 */ | ||
1205 | #define ICLR2 __REG(0x40D000A4) /* Interrupt Controller Level Register 2 */ | ||
1206 | #define ICFP2 __REG(0x40D000A8) /* Interrupt Controller FIQ Pending Register 2 */ | ||
1207 | #define ICPR2 __REG(0x40D000AC) /* Interrupt Controller Pending Register 2 */ | ||
1208 | |||
1209 | #define _GPLR(x) __REG2(0x40E00000, ((x) & 0x60) >> 3) | 1208 | #define _GPLR(x) __REG2(0x40E00000, ((x) & 0x60) >> 3) |
1210 | #define _GPDR(x) __REG2(0x40E0000C, ((x) & 0x60) >> 3) | 1209 | #define _GPDR(x) __REG2(0x40E0000C, ((x) & 0x60) >> 3) |
1211 | #define _GPSR(x) __REG2(0x40E00018, ((x) & 0x60) >> 3) | 1210 | #define _GPSR(x) __REG2(0x40E00018, ((x) & 0x60) >> 3) |