Commit 7036440e authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

ARM: omap1: enable multiplatform



With all the header files out of the way, and the clock driver
converted to the common framework, nothing stops us from building
OMAP together with the other platforms.

As usual, the decompressor support is a victim here, and is
only available when CONFIG_DEBUG_LL is configured for the
particular board.

Acked-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent c73b9099
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -396,19 +396,6 @@ config ARCH_SA1100
	help
	  Support for StrongARM 11x0 based boards.

config ARCH_OMAP1
	bool "TI OMAP1"
	depends on CPU_LITTLE_ENDIAN
	select CLKSRC_MMIO
	select FORCE_PCI if PCCARD
	select GENERIC_IRQ_CHIP
	select GPIOLIB
	select HAVE_LEGACY_CLK
	select IRQ_DOMAIN
	select SPARSE_IRQ
	help
	  Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)

endchoice

menu "Multiple platform selection"
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@ CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_ARCH_MULTI_V4T=y
CONFIG_ARCH_MULTI_V5=y
# CONFIG_ARCH_MULTI_V7 is not set
CONFIG_ARCH_OMAP=y
CONFIG_ARCH_OMAP1=y
CONFIG_OMAP_RESET_CLOCKS=y
+16 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
menuconfig ARCH_OMAP1
	bool "TI OMAP1"
	depends on ARCH_MULTI_V4T || ARCH_MULTI_V5
	depends on CPU_LITTLE_ENDIAN
	select ARCH_HAS_HOLES_MEMORYMODEL
	select ARCH_OMAP
	select CLKSRC_MMIO
	select FORCE_PCI if PCCARD
	select GPIOLIB
	help
	  Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)

if ARCH_OMAP1

menu "TI OMAP1 specific features"
@@ -6,23 +18,27 @@ menu "TI OMAP1 specific features"
comment "OMAP Core Type"

config ARCH_OMAP730
	depends on ARCH_MULTI_V5
	bool "OMAP730 Based System"
	select ARCH_OMAP_OTG
	select CPU_ARM926T
	select OMAP_MPU_TIMER

config ARCH_OMAP850
	depends on ARCH_MULTI_V5
	bool "OMAP850 Based System"
	select ARCH_OMAP_OTG
	select CPU_ARM926T

config ARCH_OMAP15XX
	depends on ARCH_MULTI_V4T
	default y
	bool "OMAP15xx Based System"
	select CPU_ARM925T
	select OMAP_MPU_TIMER

config ARCH_OMAP16XX
	depends on ARCH_MULTI_V5
	bool "OMAP16xx Based System"
	select ARCH_OMAP_OTG
	select CPU_ARM926T
+1 −1
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ static inline u32 omap_cs3_phys(void)
#define OMAP1_IO_OFFSET		0x00f00000	/* Virtual IO = 0xff0b0000 */
#define OMAP1_IO_ADDRESS(pa)	IOMEM((pa) - OMAP1_IO_OFFSET)

#include <mach/serial.h>
#include "serial.h"

/*
 * ---------------------------------------------------------------------------
+0 −117
Original line number Diff line number Diff line
/*
 * 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);
}
Loading