1 /* 2 * arch/arm/mach-ixp4xx/include/mach/uncompress.h 3 * 4 * Copyright (C) 2002 Intel Corporation. 5 * Copyright (C) 2003-2004 MontaVista Software, Inc. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10 * 11 */ 12 13 #ifndef _ARCH_UNCOMPRESS_H_ 14 #define _ARCH_UNCOMPRESS_H_ 15 16 #include "ixp4xx-regs.h" 17 #include <asm/mach-types.h> 18 #include <linux/serial_reg.h> 19 20 #define TX_DONE (UART_LSR_TEMT|UART_LSR_THRE) 21 22 volatile u32* uart_base; 23 putc(int c)24static inline void putc(int c) 25 { 26 /* Check THRE and TEMT bits before we transmit the character. 27 */ 28 while ((uart_base[UART_LSR] & TX_DONE) != TX_DONE) 29 barrier(); 30 31 *uart_base = c; 32 } 33 flush(void)34static void flush(void) 35 { 36 } 37 __arch_decomp_setup(unsigned long arch_id)38static __inline__ void __arch_decomp_setup(unsigned long arch_id) 39 { 40 /* 41 * Some boards are using UART2 as console 42 */ 43 if (machine_is_adi_coyote() || machine_is_gtwx5715() || 44 machine_is_gateway7001() || machine_is_wg302v2() || 45 machine_is_devixp() || machine_is_miccpt() || machine_is_mic256()) 46 uart_base = (volatile u32*) IXP4XX_UART2_BASE_PHYS; 47 else 48 uart_base = (volatile u32*) IXP4XX_UART1_BASE_PHYS; 49 } 50 51 /* 52 * arch_id is a variable in decompress_kernel() 53 */ 54 #define arch_decomp_setup() __arch_decomp_setup(arch_id) 55 56 #define arch_decomp_wdog() 57 58 #endif 59