1/* 2 * arch/arm/mach-tegra/include/mach/uncompress.h 3 * 4 * Copyright (C) 2010 Google, Inc. 5 * 6 * Author: 7 * Colin Cross <ccross@google.com> 8 * Erik Gilling <konkers@google.com> 9 * 10 * This software is licensed under the terms of the GNU General Public 11 * License version 2, as published by the Free Software Foundation, and 12 * may be copied, distributed, and modified under those terms. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 */ 20 21#ifndef __MACH_TEGRA_UNCOMPRESS_H 22#define __MACH_TEGRA_UNCOMPRESS_H 23 24#include <linux/types.h> 25#include <linux/serial_reg.h> 26 27#include <mach/iomap.h> 28 29#if defined(CONFIG_TEGRA_DEBUG_UARTA) 30#define DEBUG_UART_BASE TEGRA_UARTA_BASE 31#elif defined(CONFIG_TEGRA_DEBUG_UARTB) 32#define DEBUG_UART_BASE TEGRA_UARTB_BASE 33#elif defined(CONFIG_TEGRA_DEBUG_UARTC) 34#define DEBUG_UART_BASE TEGRA_UARTC_BASE 35#elif defined(CONFIG_TEGRA_DEBUG_UARTD) 36#define DEBUG_UART_BASE TEGRA_UARTD_BASE 37#elif defined(CONFIG_TEGRA_DEBUG_UARTE) 38#define DEBUG_UART_BASE TEGRA_UARTE_BASE 39#else 40#define DEBUG_UART_BASE NULL 41#endif 42 43static void putc(int c) 44{ 45 volatile u8 *uart = (volatile u8 *)DEBUG_UART_BASE; 46 int shift = 2; 47 48 if (uart == NULL) 49 return; 50 51 while (!(uart[UART_LSR << shift] & UART_LSR_THRE)) 52 barrier(); 53 uart[UART_TX << shift] = c; 54} 55 56static inline void flush(void) 57{ 58} 59 60static inline void arch_decomp_setup(void) 61{ 62 volatile u8 *uart = (volatile u8 *)DEBUG_UART_BASE; 63 int shift = 2; 64 65 if (uart == NULL) 66 return; 67 68 uart[UART_LCR << shift] |= UART_LCR_DLAB; 69 uart[UART_DLL << shift] = 0x75; 70 uart[UART_DLM << shift] = 0x0; 71 uart[UART_LCR << shift] = 3; 72} 73 74static inline void arch_decomp_wdog(void) 75{ 76} 77 78#endif 79