aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Song <bs14@csr.com>2011-07-08 05:40:13 -0400
committerBarry Song <21cnbao@gmail.com>2011-07-08 19:20:51 -0400
commit31adb06f9d68f9d033284c9ab0e264b2d581bceb (patch)
treee43a95fdfd66d0a5fad0597d00d6e0a0707d4dd2
parent02c981c07bc95ac1e42ec6c817f0c28cf3fe993a (diff)
ARM: CSR: mapping early DEBUG_LL uart
Signed-off-by: Barry Song <baohua.song@csr.com> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r--arch/arm/mach-prima2/Makefile1
-rw-r--r--arch/arm/mach-prima2/common.h6
-rw-r--r--arch/arm/mach-prima2/lluart.c25
-rw-r--r--arch/arm/mach-prima2/prima2.c1
4 files changed, 33 insertions, 0 deletions
diff --git a/arch/arm/mach-prima2/Makefile b/arch/arm/mach-prima2/Makefile
index d44f7aedda87..f2fba666c109 100644
--- a/arch/arm/mach-prima2/Makefile
+++ b/arch/arm/mach-prima2/Makefile
@@ -3,3 +3,4 @@ obj-y += irq.o
3obj-y += clock.o 3obj-y += clock.o
4obj-y += rstc.o 4obj-y += rstc.o
5obj-y += prima2.o 5obj-y += prima2.o
6obj-$(CONFIG_DEBUG_LL) += lluart.o
diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h
index fa4a3b5c674a..83e5d2128118 100644
--- a/arch/arm/mach-prima2/common.h
+++ b/arch/arm/mach-prima2/common.h
@@ -17,4 +17,10 @@ extern struct sys_timer sirfsoc_timer;
17extern void __init sirfsoc_of_irq_init(void); 17extern void __init sirfsoc_of_irq_init(void);
18extern void __init sirfsoc_of_clk_init(void); 18extern void __init sirfsoc_of_clk_init(void);
19 19
20#ifndef CONFIG_DEBUG_LL
21static inline void sirfsoc_map_lluart(void) {}
22#else
23extern void __init sirfsoc_map_lluart(void);
24#endif
25
20#endif 26#endif
diff --git a/arch/arm/mach-prima2/lluart.c b/arch/arm/mach-prima2/lluart.c
new file mode 100644
index 000000000000..a89f9b3c8cc5
--- /dev/null
+++ b/arch/arm/mach-prima2/lluart.c
@@ -0,0 +1,25 @@
1/*
2 * Static memory mapping for DEBUG_LL
3 *
4 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
5 *
6 * Licensed under GPLv2 or later.
7 */
8
9#include <linux/kernel.h>
10#include <asm/page.h>
11#include <asm/mach/map.h>
12#include <mach/map.h>
13#include <mach/uart.h>
14
15void __init sirfsoc_map_lluart(void)
16{
17 struct map_desc sirfsoc_lluart_map = {
18 .virtual = SIRFSOC_UART1_VA_BASE,
19 .pfn = __phys_to_pfn(SIRFSOC_UART1_PA_BASE),
20 .length = SIRFSOC_UART1_SIZE,
21 .type = MT_DEVICE,
22 };
23
24 iotable_init(&sirfsoc_lluart_map, 1);
25}
diff --git a/arch/arm/mach-prima2/prima2.c b/arch/arm/mach-prima2/prima2.c
index c26947d76e12..f57124bdd143 100644
--- a/arch/arm/mach-prima2/prima2.c
+++ b/arch/arm/mach-prima2/prima2.c
@@ -33,6 +33,7 @@ MACHINE_START(PRIMA2_EVB, "prima2cb")
33 /* Maintainer: Barry Song <baohua.song@csr.com> */ 33 /* Maintainer: Barry Song <baohua.song@csr.com> */
34 .boot_params = 0x00000100, 34 .boot_params = 0x00000100,
35 .init_early = sirfsoc_of_clk_init, 35 .init_early = sirfsoc_of_clk_init,
36 .map_io = sirfsoc_map_lluart,
36 .init_irq = sirfsoc_of_irq_init, 37 .init_irq = sirfsoc_of_irq_init,
37 .timer = &sirfsoc_timer, 38 .timer = &sirfsoc_timer,
38 .init_machine = sirfsoc_mach_init, 39 .init_machine = sirfsoc_mach_init,