Path: blob/master/arch/arm/mach-davinci/include/mach/uncompress.h
17686 views
/*1* Serial port stubs for kernel decompress status messages2*3* Initially based on:4* arch/arm/plat-omap/include/mach/uncompress.h5*6* Original copyrights follow.7*8* Copyright (C) 2000 RidgeRun, Inc.9* Author: Greg Lonnon <[email protected]>10*11* Rewritten by:12* Author: <[email protected]>13* 2004 (c) MontaVista Software, Inc.14*15* This file is licensed under the terms of the GNU General Public License16* version 2. This program is licensed "as is" without any warranty of any17* kind, whether express or implied.18*/1920#include <linux/types.h>21#include <linux/serial_reg.h>2223#include <asm/mach-types.h>2425#include <mach/serial.h>2627u32 *uart;2829/* PORT_16C550A, in polled non-fifo mode */30static void putc(char c)31{32while (!(uart[UART_LSR] & UART_LSR_THRE))33barrier();34uart[UART_TX] = c;35}3637static inline void flush(void)38{39while (!(uart[UART_LSR] & UART_LSR_THRE))40barrier();41}4243static inline void set_uart_info(u32 phys, void * __iomem virt)44{45u32 *uart_info = (u32 *)(DAVINCI_UART_INFO);4647uart = (u32 *)phys;48uart_info[0] = phys;49uart_info[1] = (u32)virt;50}5152#define _DEBUG_LL_ENTRY(machine, phys, virt) \53if (machine_is_##machine()) { \54set_uart_info(phys, virt); \55break; \56}5758#define DEBUG_LL_DAVINCI(machine, port) \59_DEBUG_LL_ENTRY(machine, DAVINCI_UART##port##_BASE, \60IO_ADDRESS(DAVINCI_UART##port##_BASE))6162#define DEBUG_LL_DA8XX(machine, port) \63_DEBUG_LL_ENTRY(machine, DA8XX_UART##port##_BASE, \64IO_ADDRESS(DA8XX_UART##port##_BASE))6566#define DEBUG_LL_TNETV107X(machine, port) \67_DEBUG_LL_ENTRY(machine, TNETV107X_UART##port##_BASE, \68TNETV107X_UART##port##_VIRT)6970static inline void __arch_decomp_setup(unsigned long arch_id)71{72/*73* Initialize the port based on the machine ID from the bootloader.74* Note that we're using macros here instead of switch statement75* as machine_is functions are optimized out for the boards that76* are not selected.77*/78do {79/* Davinci boards */80DEBUG_LL_DAVINCI(davinci_evm, 0);81DEBUG_LL_DAVINCI(sffsdr, 0);82DEBUG_LL_DAVINCI(neuros_osd2, 0);83DEBUG_LL_DAVINCI(davinci_dm355_evm, 0);84DEBUG_LL_DAVINCI(dm355_leopard, 0);85DEBUG_LL_DAVINCI(davinci_dm6467_evm, 0);86DEBUG_LL_DAVINCI(davinci_dm365_evm, 0);8788/* DA8xx boards */89DEBUG_LL_DA8XX(davinci_da830_evm, 2);90DEBUG_LL_DA8XX(davinci_da850_evm, 2);91DEBUG_LL_DA8XX(mityomapl138, 1);92DEBUG_LL_DA8XX(omapl138_hawkboard, 2);9394/* TNETV107x boards */95DEBUG_LL_TNETV107X(tnetv107x, 1);96} while (0);97}9899#define arch_decomp_setup() __arch_decomp_setup(arch_id)100#define arch_decomp_wdog()101102103