diff options
Diffstat (limited to 'arch/arm/mach-ns9xxx')
-rw-r--r-- | arch/arm/mach-ns9xxx/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-ns9xxx/board-a9m9750dev.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-ns9xxx/generic.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ns9xxx/irq.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-ns9xxx/mach-cc9p9360js.c | 2 |
5 files changed, 17 insertions, 6 deletions
diff --git a/arch/arm/mach-ns9xxx/Makefile b/arch/arm/mach-ns9xxx/Makefile index 53213a69f601..4476411b8140 100644 --- a/arch/arm/mach-ns9xxx/Makefile +++ b/arch/arm/mach-ns9xxx/Makefile | |||
@@ -1,6 +1,7 @@ | |||
1 | obj-y := irq.o time.o generic.o | 1 | obj-y := irq.o time.o generic.o |
2 | 2 | ||
3 | obj-$(CONFIG_MACH_CC9P9360DEV) += mach-cc9p9360dev.o | 3 | obj-$(CONFIG_MACH_CC9P9360DEV) += mach-cc9p9360dev.o |
4 | obj-$(CONFIG_MACH_CC9P9360JS) += mach-cc9p9360js.o | ||
4 | 5 | ||
5 | obj-$(CONFIG_BOARD_A9M9750DEV) += board-a9m9750dev.o | 6 | obj-$(CONFIG_BOARD_A9M9750DEV) += board-a9m9750dev.o |
6 | obj-$(CONFIG_BOARD_JSCC9P9360) += board-jscc9p9360.o | 7 | obj-$(CONFIG_BOARD_JSCC9P9360) += board-jscc9p9360.o |
diff --git a/arch/arm/mach-ns9xxx/board-a9m9750dev.c b/arch/arm/mach-ns9xxx/board-a9m9750dev.c index 25289884a607..925048e7adfe 100644 --- a/arch/arm/mach-ns9xxx/board-a9m9750dev.c +++ b/arch/arm/mach-ns9xxx/board-a9m9750dev.c | |||
@@ -77,7 +77,7 @@ static void a9m9750dev_fpga_demux_handler(unsigned int irq, | |||
77 | 77 | ||
78 | desc = irq_desc + FPGA_IRQ(irqno); | 78 | desc = irq_desc + FPGA_IRQ(irqno); |
79 | 79 | ||
80 | desc_handle_irq(irqno, desc); | 80 | desc_handle_irq(FPGA_IRQ(irqno), desc); |
81 | } | 81 | } |
82 | } | 82 | } |
83 | 83 | ||
@@ -91,7 +91,7 @@ void __init board_a9m9750dev_init_irq(void) | |||
91 | * use GPIO 11, because GPIO 32 is used for the LCD | 91 | * use GPIO 11, because GPIO 32 is used for the LCD |
92 | */ | 92 | */ |
93 | /* XXX: proper GPIO handling */ | 93 | /* XXX: proper GPIO handling */ |
94 | BBU_GC(2) &= ~0x2000; | 94 | BBU_GCONFb1(1) &= ~0x2000; |
95 | 95 | ||
96 | for (i = FPGA_IRQ(0); i <= FPGA_IRQ(7); ++i) { | 96 | for (i = FPGA_IRQ(0); i <= FPGA_IRQ(7); ++i) { |
97 | set_irq_chip(i, &a9m9750dev_fpga_chip); | 97 | set_irq_chip(i, &a9m9750dev_fpga_chip); |
@@ -178,7 +178,7 @@ void __init board_a9m9750dev_init_machine(void) | |||
178 | 178 | ||
179 | /* setup static CS0: memory configuration */ | 179 | /* setup static CS0: memory configuration */ |
180 | reg = MEM_SMC(0); | 180 | reg = MEM_SMC(0); |
181 | REGSET(reg, MEM_SMC, WSMC, OFF); | 181 | REGSET(reg, MEM_SMC, PSMC, OFF); |
182 | REGSET(reg, MEM_SMC, BSMC, OFF); | 182 | REGSET(reg, MEM_SMC, BSMC, OFF); |
183 | REGSET(reg, MEM_SMC, EW, OFF); | 183 | REGSET(reg, MEM_SMC, EW, OFF); |
184 | REGSET(reg, MEM_SMC, PB, 1); | 184 | REGSET(reg, MEM_SMC, PB, 1); |
@@ -196,4 +196,3 @@ void __init board_a9m9750dev_init_machine(void) | |||
196 | platform_add_devices(board_a9m9750dev_devices, | 196 | platform_add_devices(board_a9m9750dev_devices, |
197 | ARRAY_SIZE(board_a9m9750dev_devices)); | 197 | ARRAY_SIZE(board_a9m9750dev_devices)); |
198 | } | 198 | } |
199 | |||
diff --git a/arch/arm/mach-ns9xxx/generic.c b/arch/arm/mach-ns9xxx/generic.c index 83e2b6532b22..d742c921e34d 100644 --- a/arch/arm/mach-ns9xxx/generic.c +++ b/arch/arm/mach-ns9xxx/generic.c | |||
@@ -18,6 +18,8 @@ | |||
18 | #include <asm/arch-ns9xxx/regs-mem.h> | 18 | #include <asm/arch-ns9xxx/regs-mem.h> |
19 | #include <asm/arch-ns9xxx/board.h> | 19 | #include <asm/arch-ns9xxx/board.h> |
20 | 20 | ||
21 | #include "generic.h" | ||
22 | |||
21 | static struct map_desc standard_io_desc[] __initdata = { | 23 | static struct map_desc standard_io_desc[] __initdata = { |
22 | { /* BBus */ | 24 | { /* BBus */ |
23 | .virtual = io_p2v(0x90000000), | 25 | .virtual = io_p2v(0x90000000), |
diff --git a/arch/arm/mach-ns9xxx/irq.c b/arch/arm/mach-ns9xxx/irq.c index 83d92724a971..b8c7b00522e6 100644 --- a/arch/arm/mach-ns9xxx/irq.c +++ b/arch/arm/mach-ns9xxx/irq.c | |||
@@ -21,6 +21,15 @@ static void ns9xxx_ack_irq_timer(unsigned int irq) | |||
21 | { | 21 | { |
22 | u32 tc = SYS_TC(irq - IRQ_TIMER0); | 22 | u32 tc = SYS_TC(irq - IRQ_TIMER0); |
23 | 23 | ||
24 | /* | ||
25 | * If the timer is programmed to halt on terminal count, the | ||
26 | * timer must be disabled before clearing the interrupt. | ||
27 | */ | ||
28 | if (REGGET(tc, SYS_TCx, REN) == 0) { | ||
29 | REGSET(tc, SYS_TCx, TEN, DIS); | ||
30 | SYS_TC(irq - IRQ_TIMER0) = tc; | ||
31 | } | ||
32 | |||
24 | REGSET(tc, SYS_TCx, INTC, SET); | 33 | REGSET(tc, SYS_TCx, INTC, SET); |
25 | SYS_TC(irq - IRQ_TIMER0) = tc; | 34 | SYS_TC(irq - IRQ_TIMER0) = tc; |
26 | 35 | ||
@@ -28,7 +37,7 @@ static void ns9xxx_ack_irq_timer(unsigned int irq) | |||
28 | SYS_TC(irq - IRQ_TIMER0) = tc; | 37 | SYS_TC(irq - IRQ_TIMER0) = tc; |
29 | } | 38 | } |
30 | 39 | ||
31 | void (*ns9xxx_ack_irq_functions[NR_IRQS])(unsigned int) = { | 40 | static void (*ns9xxx_ack_irq_functions[NR_IRQS])(unsigned int) = { |
32 | [IRQ_TIMER0] = ns9xxx_ack_irq_timer, | 41 | [IRQ_TIMER0] = ns9xxx_ack_irq_timer, |
33 | [IRQ_TIMER1] = ns9xxx_ack_irq_timer, | 42 | [IRQ_TIMER1] = ns9xxx_ack_irq_timer, |
34 | [IRQ_TIMER2] = ns9xxx_ack_irq_timer, | 43 | [IRQ_TIMER2] = ns9xxx_ack_irq_timer, |
diff --git a/arch/arm/mach-ns9xxx/mach-cc9p9360js.c b/arch/arm/mach-ns9xxx/mach-cc9p9360js.c index d09d5fa5620a..85c8b41105c9 100644 --- a/arch/arm/mach-ns9xxx/mach-cc9p9360js.c +++ b/arch/arm/mach-ns9xxx/mach-cc9p9360js.c | |||
@@ -20,7 +20,7 @@ static void __init mach_cc9p9360js_init_machine(void) | |||
20 | board_jscc9p9360_init_machine(); | 20 | board_jscc9p9360_init_machine(); |
21 | } | 21 | } |
22 | 22 | ||
23 | MACHINE_START(CC9P9360DEV, "Digi ConnectCore 9P 9360 on an JSCC9P9360 Devboard") | 23 | MACHINE_START(CC9P9360JS, "Digi ConnectCore 9P 9360 on an JSCC9P9360 Devboard") |
24 | .map_io = ns9xxx_map_io, | 24 | .map_io = ns9xxx_map_io, |
25 | .init_irq = ns9xxx_init_irq, | 25 | .init_irq = ns9xxx_init_irq, |
26 | .init_machine = mach_cc9p9360js_init_machine, | 26 | .init_machine = mach_cc9p9360js_init_machine, |