diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-02-15 18:35:40 +0800 |
---|---|---|
committer | Nicolas Ferre <nicolas.ferre@atmel.com> | 2012-04-17 10:58:03 +0200 |
commit | c40a763be603867c226505dbe0845ea16a4ee538 (patch) | |
tree | f36a647f470ecc601947fe5c4d1107f7dd8dd1f0 /arch/arm/mach-at91 | |
parent | 1234f4bada54cfcd4dfeeebccf0295d49174da40 (diff) | |
download | op-kernel-dev-c40a763be603867c226505dbe0845ea16a4ee538.zip op-kernel-dev-c40a763be603867c226505dbe0845ea16a4ee538.tar.gz |
ARM: at91: uncompress Store UART address in a variable
This will allow a future change to auto-detect which UART to use.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Diffstat (limited to 'arch/arm/mach-at91')
-rw-r--r-- | arch/arm/mach-at91/include/mach/uncompress.h | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/arch/arm/mach-at91/include/mach/uncompress.h b/arch/arm/mach-at91/include/mach/uncompress.h index 4218647..d985af7 100644 --- a/arch/arm/mach-at91/include/mach/uncompress.h +++ b/arch/arm/mach-at91/include/mach/uncompress.h @@ -43,6 +43,14 @@ #define UART_OFFSET AT91_USART5 #endif +void __iomem *at91_uart; + +static inline void arch_decomp_setup(void) +{ +#ifdef UART_OFFSET + at91_uart = (void __iomem *) UART_OFFSET; /* physical address */ +#endif +} /* * The following code assumes the serial port has already been * initialized by the bootloader. If you didn't setup a port in @@ -53,27 +61,21 @@ static void putc(int c) { #ifdef UART_OFFSET - void __iomem *sys = (void __iomem *) UART_OFFSET; /* physical address */ - - while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXRDY)) + while (!(__raw_readl(at91_uart + ATMEL_US_CSR) & ATMEL_US_TXRDY)) barrier(); - __raw_writel(c, sys + ATMEL_US_THR); + __raw_writel(c, at91_uart + ATMEL_US_THR); #endif } static inline void flush(void) { #ifdef UART_OFFSET - void __iomem *sys = (void __iomem *) UART_OFFSET; /* physical address */ - /* wait for transmission to complete */ - while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXEMPTY)) + while (!(__raw_readl(at91_uart + ATMEL_US_CSR) & ATMEL_US_TXEMPTY)) barrier(); #endif } -#define arch_decomp_setup() - #define arch_decomp_wdog() #endif |