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 22volatile u32* uart_base; 23 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 34static void flush(void) 35{ 36} 37 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#endif 57