aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-pxa
diff options
context:
space:
mode:
authorEric Miao <eric.y.miao@gmail.com>2007-06-06 01:45:18 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-07-12 09:28:14 -0400
commit4a3dcd35c82a2a25b2832502290e1a3f1571e9ef (patch)
treeae193ae2a02bf850a1e9c3131aa67968ae7b5e12 /arch/arm/mach-pxa
parent348f2e3b2956e30f07d2507d7234c3f12a8a612d (diff)
[ARM] 4438/1: PXA: remove #ifdef .. #endif from pxa_gpio_demux_handler()
1. use GPIO_IRQ_mask[] to select those bits of interest, actually only those "unmasked" GPIO IRQs with their corresponding bits in GPIO_IRQ_mask[] set to "1" should be checked 2. remove #ifdef PXA_LAST_GPIO > 96 .. #endif, GPIO_IRQ_mask[] is used to mask out the irrelevant bits, so that even though the GEDR3 on PXA25x is reserved, it will be masked, and the following code will never run. Another point is that GPIO85- GPIO95 bits within GEDR2 will also be masked out on PXA25x Signed-off-by: eric miao <eric.miao@marvell.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-pxa')
-rw-r--r--arch/arm/mach-pxa/irq.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index 256f8d2b3d9b..09d2fe19c85f 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -250,7 +250,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
250 do { 250 do {
251 loop = 0; 251 loop = 0;
252 252
253 mask = GEDR0 & ~3; 253 mask = GEDR0 & GPIO_IRQ_mask[0] & ~3;
254 if (mask) { 254 if (mask) {
255 GEDR0 = mask; 255 GEDR0 = mask;
256 irq = IRQ_GPIO(2); 256 irq = IRQ_GPIO(2);
@@ -266,7 +266,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
266 loop = 1; 266 loop = 1;
267 } 267 }
268 268
269 mask = GEDR1; 269 mask = GEDR1 & GPIO_IRQ_mask[1];
270 if (mask) { 270 if (mask) {
271 GEDR1 = mask; 271 GEDR1 = mask;
272 irq = IRQ_GPIO(32); 272 irq = IRQ_GPIO(32);
@@ -281,7 +281,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
281 loop = 1; 281 loop = 1;
282 } 282 }
283 283
284 mask = GEDR2; 284 mask = GEDR2 & GPIO_IRQ_mask[2];
285 if (mask) { 285 if (mask) {
286 GEDR2 = mask; 286 GEDR2 = mask;
287 irq = IRQ_GPIO(64); 287 irq = IRQ_GPIO(64);
@@ -296,8 +296,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
296 loop = 1; 296 loop = 1;
297 } 297 }
298 298
299#if PXA_LAST_GPIO >= 96 299 mask = GEDR3 & GPIO_IRQ_mask[3];
300 mask = GEDR3;
301 if (mask) { 300 if (mask) {
302 GEDR3 = mask; 301 GEDR3 = mask;
303 irq = IRQ_GPIO(96); 302 irq = IRQ_GPIO(96);
@@ -311,7 +310,6 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
311 } while (mask); 310 } while (mask);
312 loop = 1; 311 loop = 1;
313 } 312 }
314#endif
315 } while (loop); 313 } while (loop);
316} 314}
317 315