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 /arch/arm/mach-pxa/pxa3xx.c | |
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 'arch/arm/mach-pxa/pxa3xx.c')
-rw-r--r-- | arch/arm/mach-pxa/pxa3xx.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index 93f3236b4100..8f8179b2fc38 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -513,8 +513,7 @@ void __init pxa3xx_init_irq(void) | |||
513 | value |= (1 << 6); | 513 | value |= (1 << 6); |
514 | __asm__ __volatile__("mcr p15, 0, %0, c15, c1, 0\n": :"r"(value)); | 514 | __asm__ __volatile__("mcr p15, 0, %0, c15, c1, 0\n": :"r"(value)); |
515 | 515 | ||
516 | pxa_init_irq_low(); | 516 | pxa_init_irq(56); |
517 | pxa_init_irq_high(); | ||
518 | pxa_init_irq_gpio(128); | 517 | pxa_init_irq_gpio(128); |
519 | pxa3xx_init_irq_pm(); | 518 | pxa3xx_init_irq_pm(); |
520 | } | 519 | } |
@@ -538,10 +537,6 @@ static struct platform_device *devices[] __initdata = { | |||
538 | 537 | ||
539 | static struct sys_device pxa3xx_sysdev[] = { | 538 | static struct sys_device pxa3xx_sysdev[] = { |
540 | { | 539 | { |
541 | .id = 0, | ||
542 | .cls = &pxa_irq_sysclass, | ||
543 | }, { | ||
544 | .id = 1, | ||
545 | .cls = &pxa_irq_sysclass, | 540 | .cls = &pxa_irq_sysclass, |
546 | }, { | 541 | }, { |
547 | .cls = &pxa_gpio_sysclass, | 542 | .cls = &pxa_gpio_sysclass, |