diff options
| author | Nicolas Pitre <nicolas.pitre@linaro.org> | 2011-08-31 13:57:37 -0400 |
|---|---|---|
| committer | Nicolas Pitre <nico@fluxnic.net> | 2011-09-26 10:11:25 -0400 |
| commit | dd185456efce7f326c058fc12fd0df17bd8466eb (patch) | |
| tree | 78abc6ff08a905c25eda49b7f67e6790c6257f7c | |
| parent | 639da5ee374ba8f070690bbd355ca30139ce145a (diff) | |
ARM: plat-omap: make OMAP_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>
Tested-by: Tony Lindgren <tony@atomide.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
| -rw-r--r-- | arch/arm/mach-omap1/include/mach/debug-macro.S | 8 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/include/mach/debug-macro.S | 9 | ||||
| -rw-r--r-- | arch/arm/plat-omap/include/plat/serial.h | 6 | ||||
| -rw-r--r-- | arch/arm/plat-omap/include/plat/uncompress.h | 8 |
4 files changed, 17 insertions, 14 deletions
diff --git a/arch/arm/mach-omap1/include/mach/debug-macro.S b/arch/arm/mach-omap1/include/mach/debug-macro.S index f944ae8abc9..6a171181986 100644 --- a/arch/arm/mach-omap1/include/mach/debug-macro.S +++ b/arch/arm/mach-omap1/include/mach/debug-macro.S | |||
| @@ -46,11 +46,9 @@ omap_uart_virt: .word 0x0 | |||
| 46 | bne 99f @ already configured | 46 | bne 99f @ already configured |
| 47 | 47 | ||
| 48 | /* Check the debug UART configuration set in uncompress.h */ | 48 | /* Check the debug UART configuration set in uncompress.h */ |
| 49 | mrc p15, 0, \rp, c1, c0 | 49 | and \rp, pc, #0xff000000 |
| 50 | tst \rp, #1 @ MMU enabled? | 50 | ldr \rv, =OMAP_UART_INFO_OFS |
| 51 | ldreq \rp, =OMAP_UART_INFO @ MMU not enabled | 51 | ldr \rp, [\rp, \rv] |
| 52 | ldrne \rp, =omap_uart_p2v(OMAP_UART_INFO) @ MMU enabled | ||
| 53 | ldr \rp, [\rp, #0] | ||
| 54 | 52 | ||
| 55 | /* Select the UART to use based on the UART1 scratchpad value */ | 53 | /* Select the UART to use based on the UART1 scratchpad value */ |
| 56 | 10: cmp \rp, #0 @ no port configured? | 54 | 10: cmp \rp, #0 @ no port configured? |
diff --git a/arch/arm/mach-omap2/include/mach/debug-macro.S b/arch/arm/mach-omap2/include/mach/debug-macro.S index fbd23ec81a2..745e2ff3e90 100644 --- a/arch/arm/mach-omap2/include/mach/debug-macro.S +++ b/arch/arm/mach-omap2/include/mach/debug-macro.S | |||
| @@ -49,11 +49,10 @@ omap_uart_lsr: .word 0 | |||
| 49 | bne 99f @ already configured | 49 | bne 99f @ already configured |
| 50 | 50 | ||
| 51 | /* Check the debug UART configuration set in uncompress.h */ | 51 | /* Check the debug UART configuration set in uncompress.h */ |
| 52 | mrc p15, 0, \rp, c1, c0 | 52 | mov \rp, pc |
| 53 | tst \rp, #1 @ MMU enabled? | 53 | ldr \rv, =OMAP_UART_INFO_OFS |
| 54 | ldreq \rp, =OMAP_UART_INFO @ MMU not enabled | 54 | and \rp, \rp, #0xff000000 |
| 55 | ldrne \rp, =omap_uart_p2v(OMAP_UART_INFO) @ MMU enabled | 55 | ldr \rp, [\rp, \rv] |
| 56 | ldr \rp, [\rp, #0] | ||
| 57 | 56 | ||
| 58 | /* Select the UART to use based on the UART1 scratchpad value */ | 57 | /* Select the UART to use based on the UART1 scratchpad value */ |
| 59 | cmp \rp, #0 @ no port configured? | 58 | cmp \rp, #0 @ no port configured? |
diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h index de3b10c1812..1ab9fd6abe6 100644 --- a/arch/arm/plat-omap/include/plat/serial.h +++ b/arch/arm/plat-omap/include/plat/serial.h | |||
| @@ -16,8 +16,8 @@ | |||
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | 17 | ||
| 18 | /* | 18 | /* |
| 19 | * Memory entry used for the DEBUG_LL UART configuration. See also | 19 | * Memory entry used for the DEBUG_LL UART configuration, relative to |
| 20 | * uncompress.h and debug-macro.S. | 20 | * start of RAM. See also uncompress.h and debug-macro.S. |
| 21 | * | 21 | * |
| 22 | * Note that using a memory location for storing the UART configuration | 22 | * Note that using a memory location for storing the UART configuration |
| 23 | * has at least two limitations: | 23 | * has at least two limitations: |
| @@ -27,7 +27,7 @@ | |||
| 27 | * 2. We assume printascii is called at least once before paging_init, | 27 | * 2. We assume printascii is called at least once before paging_init, |
| 28 | * and addruart has a chance to read OMAP_UART_INFO | 28 | * and addruart has a chance to read OMAP_UART_INFO |
| 29 | */ | 29 | */ |
| 30 | #define OMAP_UART_INFO (PLAT_PHYS_OFFSET + 0x3ffc) | 30 | #define OMAP_UART_INFO_OFS 0x3ffc |
| 31 | 31 | ||
| 32 | /* OMAP1 serial ports */ | 32 | /* OMAP1 serial ports */ |
| 33 | #define OMAP1_UART1_BASE 0xfffb0000 | 33 | #define OMAP1_UART1_BASE 0xfffb0000 |
diff --git a/arch/arm/plat-omap/include/plat/uncompress.h b/arch/arm/plat-omap/include/plat/uncompress.h index a067484cc4a..2f472e989ec 100644 --- a/arch/arm/plat-omap/include/plat/uncompress.h +++ b/arch/arm/plat-omap/include/plat/uncompress.h | |||
| @@ -36,7 +36,13 @@ int uart_shift; | |||
| 36 | */ | 36 | */ |
| 37 | static void set_omap_uart_info(unsigned char port) | 37 | static void set_omap_uart_info(unsigned char port) |
| 38 | { | 38 | { |
| 39 | *(volatile u32 *)OMAP_UART_INFO = port; | 39 | /* |
| 40 | * Get address of some.bss variable and round it down | ||
| 41 | * a la CONFIG_AUTO_ZRELADDR. | ||
| 42 | */ | ||
| 43 | u32 ram_start = (u32)&uart_shift & 0xf8000000; | ||
| 44 | u32 *uart_info = (u32 *)(ram_start + OMAP_UART_INFO_OFS); | ||
| 45 | *uart_info = port; | ||
| 40 | } | 46 | } |
| 41 | 47 | ||
| 42 | static void putc(int c) | 48 | static void putc(int c) |
