1 /* 2 * Copyright (C) 2009 ST-Ericsson 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 */ 18 #ifndef __ASM_ARCH_UNCOMPRESS_H 19 #define __ASM_ARCH_UNCOMPRESS_H 20 21 #include <asm/setup.h> 22 #include <asm/mach-types.h> 23 #include <linux/io.h> 24 #include <linux/amba/serial.h> 25 #include <mach/hardware.h> 26 27 u32 ux500_uart_base; 28 putc(const char c)29static void putc(const char c) 30 { 31 /* Do nothing if the UART is not enabled. */ 32 if (!(__raw_readb(ux500_uart_base + UART011_CR) & 0x1)) 33 return; 34 35 if (c == '\n') 36 putc('\r'); 37 38 while (__raw_readb(ux500_uart_base + UART01x_FR) & (1 << 5)) 39 barrier(); 40 __raw_writeb(c, ux500_uart_base + UART01x_DR); 41 } 42 flush(void)43static void flush(void) 44 { 45 if (!(__raw_readb(ux500_uart_base + UART011_CR) & 0x1)) 46 return; 47 while (__raw_readb(ux500_uart_base + UART01x_FR) & (1 << 3)) 48 barrier(); 49 } 50 arch_decomp_setup(void)51static inline void arch_decomp_setup(void) 52 { 53 /* Check in run time if we run on an U8500 or U5500 */ 54 if (machine_is_u5500()) 55 ux500_uart_base = U5500_UART0_BASE; 56 else 57 ux500_uart_base = U8500_UART2_BASE; 58 } 59 60 #define arch_decomp_wdog() /* nothing to do here */ 61 62 #endif /* __ASM_ARCH_UNCOMPRESS_H */ 63