aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorNicolas Pitre <nicolas.pitre@linaro.org>2011-09-01 20:32:21 -0400
committerNicolas Pitre <nico@fluxnic.net>2011-09-26 10:11:27 -0400
commite020fe34f8fc5cb42c2f518ea120005b4d01923d (patch)
treebd24cc2095fa77cb7d5a89abebf8a089250cd2af /arch
parentfa808a1ba5f9d40ad47c31f63691b1ded03a46f8 (diff)
ARM: mach-davinci: make DAVINCI_UART_INFO into a relative offset
This is the first step to remove PLAT_PHYS_OFFSET usage from the debug UART code. Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org> Reviewed-by: Kevin Hilman <khilman@ti.com> Tested-by: Kevin Hilman <khilman@ti.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-davinci/include/mach/debug-macro.S21
-rw-r--r--arch/arm/mach-davinci/include/mach/serial.h3
-rw-r--r--arch/arm/mach-davinci/include/mach/uncompress.h7
3 files changed, 18 insertions, 13 deletions
diff --git a/arch/arm/mach-davinci/include/mach/debug-macro.S b/arch/arm/mach-davinci/include/mach/debug-macro.S
index 3cf4c1b4f33a..45fff2c61f48 100644
--- a/arch/arm/mach-davinci/include/mach/debug-macro.S
+++ b/arch/arm/mach-davinci/include/mach/debug-macro.S
@@ -50,21 +50,20 @@ davinci_uart_virt: .word 0
50 mrc p15, 0, \rp, c1, c0 50 mrc p15, 0, \rp, c1, c0
51 tst \rp, #1 @ MMU enabled? 51 tst \rp, #1 @ MMU enabled?
52 52
53 /* Copy uart phys address from decompressor uart info */ 53 and \rp, pc, #0xff000000
54 ldr \rv, =DAVINCI_UART_INFO_OFS
55 add \rp, \rp, \rv
56
54 ldreq \rv, =davinci_uart_v2p(davinci_uart_phys) 57 ldreq \rv, =davinci_uart_v2p(davinci_uart_phys)
55 ldrne \rv, =davinci_uart_phys 58 ldrne \rv, =davinci_uart_phys
56 ldreq \rp, =DAVINCI_UART_INFO 59
57 ldrne \rp, =davinci_uart_p2v(DAVINCI_UART_INFO) 60 /* Copy uart phys address from decompressor uart info */
58 ldr \rp, [\rp, #0] 61 ldr \tmp, [\rp, #0]
59 str \rp, [\rv] 62 str \tmp, [\rv, #0]
60 63
61 /* Copy uart virt address from decompressor uart info */ 64 /* Copy uart virt address from decompressor uart info */
62 ldreq \rv, =davinci_uart_v2p(davinci_uart_virt) 65 ldr \tmp, [\rp, #4]
63 ldrne \rv, =davinci_uart_virt 66 str \tmp, [\rv, #4]
64 ldreq \rp, =DAVINCI_UART_INFO
65 ldrne \rp, =davinci_uart_p2v(DAVINCI_UART_INFO)
66 ldr \rp, [\rp, #4]
67 str \rp, [\rv]
68 67
69 b 10b 68 b 10b
7099: 6999:
diff --git a/arch/arm/mach-davinci/include/mach/serial.h b/arch/arm/mach-davinci/include/mach/serial.h
index c9e6ce185a66..e347d88fef91 100644
--- a/arch/arm/mach-davinci/include/mach/serial.h
+++ b/arch/arm/mach-davinci/include/mach/serial.h
@@ -21,8 +21,9 @@
21 * macros in debug-macro.S. 21 * macros in debug-macro.S.
22 * 22 *
23 * This area sits just below the page tables (see arch/arm/kernel/head.S). 23 * This area sits just below the page tables (see arch/arm/kernel/head.S).
24 * We define it as a relative offset from start of usable RAM.
24 */ 25 */
25#define DAVINCI_UART_INFO (PLAT_PHYS_OFFSET + 0x3ff8) 26#define DAVINCI_UART_INFO_OFS 0x3ff8
26 27
27#define DAVINCI_UART0_BASE (IO_PHYS + 0x20000) 28#define DAVINCI_UART0_BASE (IO_PHYS + 0x20000)
28#define DAVINCI_UART1_BASE (IO_PHYS + 0x20400) 29#define DAVINCI_UART1_BASE (IO_PHYS + 0x20400)
diff --git a/arch/arm/mach-davinci/include/mach/uncompress.h b/arch/arm/mach-davinci/include/mach/uncompress.h
index 78d80683cdc2..9dc7cf9664fe 100644
--- a/arch/arm/mach-davinci/include/mach/uncompress.h
+++ b/arch/arm/mach-davinci/include/mach/uncompress.h
@@ -43,7 +43,12 @@ static inline void flush(void)
43 43
44static inline void set_uart_info(u32 phys, void * __iomem virt) 44static inline void set_uart_info(u32 phys, void * __iomem virt)
45{ 45{
46 u32 *uart_info = (u32 *)(DAVINCI_UART_INFO); 46 /*
47 * Get address of some.bss variable and round it down
48 * a la CONFIG_AUTO_ZRELADDR.
49 */
50 u32 ram_start = (u32)&uart & 0xf8000000;
51 u32 *uart_info = (u32 *)(ram_start + DAVINCI_UART_INFO_OFS);
47 52
48 uart = (u32 *)phys; 53 uart = (u32 *)phys;
49 uart_info[0] = phys; 54 uart_info[0] = phys;