diff options
Diffstat (limited to 'arch/arm/mach-davinci/include/mach/uncompress.h')
-rw-r--r-- | arch/arm/mach-davinci/include/mach/uncompress.h | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/arch/arm/mach-davinci/include/mach/uncompress.h b/arch/arm/mach-davinci/include/mach/uncompress.h index 8c165def37b6..1e27475f9a23 100644 --- a/arch/arm/mach-davinci/include/mach/uncompress.h +++ b/arch/arm/mach-davinci/include/mach/uncompress.h | |||
@@ -13,11 +13,24 @@ | |||
13 | #include <linux/serial_reg.h> | 13 | #include <linux/serial_reg.h> |
14 | #include <mach/serial.h> | 14 | #include <mach/serial.h> |
15 | 15 | ||
16 | #include <asm/mach-types.h> | ||
17 | |||
18 | extern unsigned int __machine_arch_type; | ||
19 | |||
20 | static u32 *uart; | ||
21 | |||
22 | static u32 *get_uart_base(void) | ||
23 | { | ||
24 | /* Add logic here for new platforms, using __macine_arch_type */ | ||
25 | return (u32 *)DAVINCI_UART0_BASE; | ||
26 | } | ||
27 | |||
16 | /* PORT_16C550A, in polled non-fifo mode */ | 28 | /* PORT_16C550A, in polled non-fifo mode */ |
17 | 29 | ||
18 | static void putc(char c) | 30 | static void putc(char c) |
19 | { | 31 | { |
20 | volatile u32 *uart = (volatile void *) DAVINCI_UART0_BASE; | 32 | if (!uart) |
33 | uart = get_uart_base(); | ||
21 | 34 | ||
22 | while (!(uart[UART_LSR] & UART_LSR_THRE)) | 35 | while (!(uart[UART_LSR] & UART_LSR_THRE)) |
23 | barrier(); | 36 | barrier(); |
@@ -26,7 +39,9 @@ static void putc(char c) | |||
26 | 39 | ||
27 | static inline void flush(void) | 40 | static inline void flush(void) |
28 | { | 41 | { |
29 | volatile u32 *uart = (volatile void *) DAVINCI_UART0_BASE; | 42 | if (!uart) |
43 | uart = get_uart_base(); | ||
44 | |||
30 | while (!(uart[UART_LSR] & UART_LSR_THRE)) | 45 | while (!(uart[UART_LSR] & UART_LSR_THRE)) |
31 | barrier(); | 46 | barrier(); |
32 | } | 47 | } |