Commit 3d427228 authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

ARM: ixp4xx: enable multiplatform support



After all the work that Linus Walleij did on this platform, it can be
part of a generic kernel build as well.

Note that there are known bugs in little-endian mode on ixp4xx, and
no other ARMv5 platform at this point supports big-endian mode, or is
likely to in the future, so there is limited practical value in this,
but it helps with build testing and ixp4xx little-endian support may
get fixed in the future.

Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Tested-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 5d6f5267
Loading
Loading
Loading
Loading
+0 −16
Original line number Diff line number Diff line
@@ -357,22 +357,6 @@ config ARCH_FOOTBRIDGE
	  Support for systems based on the DC21285 companion chip
	  ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.

config ARCH_IXP4XX
	bool "IXP4xx-based"
	depends on CPU_BIG_ENDIAN
	select ARM_PATCH_PHYS_VIRT
	select CPU_XSCALE
	select GPIO_IXP4XX
	select GPIOLIB
	select HAVE_PCI
	select IXP4XX_IRQ
	select IXP4XX_TIMER
	select SPARSE_IRQ
	select USB_EHCI_BIG_ENDIAN_DESC
	select USB_EHCI_BIG_ENDIAN_MMIO
	help
	  Support for Intel's IXP4XX (XScale) family of processors.

config ARCH_PXA
	bool "PXA2xx/PXA3xx-based"
	depends on CPU_LITTLE_ENDIAN
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ CONFIG_EXPERT=y
CONFIG_MODULES=y
CONFIG_MODVERSIONS=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_ARCH_MULTI_V7 is not set
CONFIG_ARCH_IXP4XX=y
CONFIG_MACH_NSLU2=y
CONFIG_MACH_AVILA=y
+15 −7
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
if ARCH_IXP4XX

menu "Intel IXP4xx Implementation Options"
menuconfig ARCH_IXP4XX
	bool "IXP4xx-based platforms"
	depends on ARCH_MULTI_V5
	depends on CPU_BIG_ENDIAN
	select CPU_XSCALE
	select GPIO_IXP4XX
	select GPIOLIB
	select FORCE_PCI
	select IXP4XX_IRQ
	select IXP4XX_TIMER
	select USB_EHCI_BIG_ENDIAN_DESC
	select USB_EHCI_BIG_ENDIAN_MMIO
	help
	  Support for Intel's IXP4XX (XScale) family of processors.

comment "IXP4xx Platforms"
if ARCH_IXP4XX

config MACH_IXP4XX_OF
	bool
@@ -12,11 +23,8 @@ config MACH_IXP4XX_OF
	select ARM_APPENDED_DTB # Old Redboot bootloaders deployed
	select I2C
	select I2C_IOP3XX
	select PCI
	select USE_OF
	help
	  Say 'Y' here to support Device Tree-based IXP4xx platforms.

endmenu

endif
+0 −4
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
   zreladdr-y	+= 0x00008000
params_phys-y	:= 0x00000100
+0 −54
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * arch/arm/mach-ixp4xx/include/mach/uncompress.h 
 *
 * Copyright (C) 2002 Intel Corporation.
 * Copyright (C) 2003-2004 MontaVista Software, Inc.
 */

#ifndef _ARCH_UNCOMPRESS_H_
#define _ARCH_UNCOMPRESS_H_

#include <asm/mach-types.h>
#include <linux/serial_reg.h>

#define IXP4XX_UART1_BASE_PHYS 0xc8000000
#define IXP4XX_UART2_BASE_PHYS 0xc8001000

#define TX_DONE (UART_LSR_TEMT|UART_LSR_THRE)

volatile u32* uart_base;

static inline void putc(int c)
{
	/* Check THRE and TEMT bits before we transmit the character.
	 */
	while ((uart_base[UART_LSR] & TX_DONE) != TX_DONE)
		barrier();

	*uart_base = c;
}

static void flush(void)
{
}

static __inline__ void __arch_decomp_setup(unsigned long arch_id)
{
	/*
	 * Some boards are using UART2 as console
	 */
	if (machine_is_adi_coyote() || machine_is_gtwx5715() ||
	    machine_is_gateway7001() || machine_is_wg302v2() ||
	    machine_is_devixp() || machine_is_miccpt() || machine_is_mic256())
		uart_base = (volatile u32*) IXP4XX_UART2_BASE_PHYS;
	else
		uart_base = (volatile u32*) IXP4XX_UART1_BASE_PHYS;
}

/*
 * arch_id is a variable in decompress_kernel()
 */
#define arch_decomp_setup()	__arch_decomp_setup(arch_id)

#endif