forked from Minki/linux
4d2b7d4cb4
When CONFIG_DEBUG_ICEDCC is set, we don't use the platform specific putc() function, but use icedcc_putc() instead, so putc is unused and causes a compile time warning: In file included from ../arch/arm/boot/compressed/misc.c:28:0: arch/arm/mach-rpc/include/mach/uncompress.h:79:13: warning: 'putc' defined but not used [-Wunused-function] arch/arm/mach-w90x900/include/mach/uncompress.h:30:13: warning: 'putc' defined but not used [-Wunused-function] On most platforms, this does not happen, because putc is defined as 'static inline' so the compiler will automatically drop it when it's unused. This changes the remaining seven platforms to behave the same way. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
118 lines
2.9 KiB
C
118 lines
2.9 KiB
C
/*
|
|
* arch/arm/plat-omap/include/mach/uncompress.h
|
|
*
|
|
* Serial port stubs for kernel decompress status messages
|
|
*
|
|
* Initially based on:
|
|
* linux-2.4.15-rmk1-dsplinux1.6/arch/arm/plat-omap/include/mach1510/uncompress.h
|
|
* Copyright (C) 2000 RidgeRun, Inc.
|
|
* Author: Greg Lonnon <glonnon@ridgerun.com>
|
|
*
|
|
* Rewritten by:
|
|
* Author: <source@mvista.com>
|
|
* 2004 (c) MontaVista Software, Inc.
|
|
*
|
|
* This file is licensed under the terms of the GNU General Public License
|
|
* version 2. This program is licensed "as is" without any warranty of any
|
|
* kind, whether express or implied.
|
|
*/
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/serial_reg.h>
|
|
|
|
#include <asm/memory.h>
|
|
#include <asm/mach-types.h>
|
|
|
|
#include "serial.h"
|
|
|
|
#define MDR1_MODE_MASK 0x07
|
|
|
|
volatile u8 *uart_base;
|
|
int uart_shift;
|
|
|
|
/*
|
|
* Store the DEBUG_LL uart number into memory.
|
|
* See also debug-macro.S, and serial.c for related code.
|
|
*/
|
|
static void set_omap_uart_info(unsigned char port)
|
|
{
|
|
/*
|
|
* Get address of some.bss variable and round it down
|
|
* a la CONFIG_AUTO_ZRELADDR.
|
|
*/
|
|
u32 ram_start = (u32)&uart_shift & 0xf8000000;
|
|
u32 *uart_info = (u32 *)(ram_start + OMAP_UART_INFO_OFS);
|
|
*uart_info = port;
|
|
}
|
|
|
|
static inline void putc(int c)
|
|
{
|
|
if (!uart_base)
|
|
return;
|
|
|
|
/* Check for UART 16x mode */
|
|
if ((uart_base[UART_OMAP_MDR1 << uart_shift] & MDR1_MODE_MASK) != 0)
|
|
return;
|
|
|
|
while (!(uart_base[UART_LSR << uart_shift] & UART_LSR_THRE))
|
|
barrier();
|
|
uart_base[UART_TX << uart_shift] = c;
|
|
}
|
|
|
|
static inline void flush(void)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* Macros to configure UART1 and debug UART
|
|
*/
|
|
#define _DEBUG_LL_ENTRY(mach, dbg_uart, dbg_shft, dbg_id) \
|
|
if (machine_is_##mach()) { \
|
|
uart_base = (volatile u8 *)(dbg_uart); \
|
|
uart_shift = (dbg_shft); \
|
|
port = (dbg_id); \
|
|
set_omap_uart_info(port); \
|
|
break; \
|
|
}
|
|
|
|
#define DEBUG_LL_OMAP7XX(p, mach) \
|
|
_DEBUG_LL_ENTRY(mach, OMAP1_UART##p##_BASE, OMAP7XX_PORT_SHIFT, \
|
|
OMAP1UART##p)
|
|
|
|
#define DEBUG_LL_OMAP1(p, mach) \
|
|
_DEBUG_LL_ENTRY(mach, OMAP1_UART##p##_BASE, OMAP_PORT_SHIFT, \
|
|
OMAP1UART##p)
|
|
|
|
static inline void arch_decomp_setup(void)
|
|
{
|
|
int port = 0;
|
|
|
|
/*
|
|
* Initialize the port based on the machine ID from the bootloader.
|
|
* Note that we're using macros here instead of switch statement
|
|
* as machine_is functions are optimized out for the boards that
|
|
* are not selected.
|
|
*/
|
|
do {
|
|
/* omap7xx/8xx based boards using UART1 with shift 0 */
|
|
DEBUG_LL_OMAP7XX(1, herald);
|
|
DEBUG_LL_OMAP7XX(1, omap_perseus2);
|
|
|
|
/* omap15xx/16xx based boards using UART1 */
|
|
DEBUG_LL_OMAP1(1, ams_delta);
|
|
DEBUG_LL_OMAP1(1, nokia770);
|
|
DEBUG_LL_OMAP1(1, omap_h2);
|
|
DEBUG_LL_OMAP1(1, omap_h3);
|
|
DEBUG_LL_OMAP1(1, omap_innovator);
|
|
DEBUG_LL_OMAP1(1, omap_osk);
|
|
DEBUG_LL_OMAP1(1, omap_palmte);
|
|
DEBUG_LL_OMAP1(1, omap_palmz71);
|
|
|
|
/* omap15xx/16xx based boards using UART2 */
|
|
DEBUG_LL_OMAP1(2, omap_palmtt);
|
|
|
|
/* omap15xx/16xx based boards using UART3 */
|
|
DEBUG_LL_OMAP1(3, sx1);
|
|
} while (0);
|
|
}
|