diff options
Diffstat (limited to 'target/linux/ixp4xx/patches-2.6.28/120-compex_support.patch')
| -rw-r--r-- | target/linux/ixp4xx/patches-2.6.28/120-compex_support.patch | 212 | 
1 files changed, 212 insertions, 0 deletions
| diff --git a/target/linux/ixp4xx/patches-2.6.28/120-compex_support.patch b/target/linux/ixp4xx/patches-2.6.28/120-compex_support.patch new file mode 100644 index 000000000..571a480ff --- /dev/null +++ b/target/linux/ixp4xx/patches-2.6.28/120-compex_support.patch @@ -0,0 +1,212 @@ +From 24025a2dcf1248079dd3019fac6ed955252d277f Mon Sep 17 00:00:00 2001 +From: Imre Kaloz <kaloz@openwrt.org> +Date: Mon, 14 Jul 2008 21:56:34 +0200 +Subject: [PATCH] Add support for the Compex WP18 / NP18A boards + +Signed-off-by: Imre Kaloz <kaloz@openwrt.org> +--- + arch/arm/mach-ixp4xx/Kconfig        |    8 ++ + arch/arm/mach-ixp4xx/Makefile       |    2 + + arch/arm/mach-ixp4xx/compex-setup.c |  136 +++++++++++++++++++++++++++++++++++ + arch/arm/mach-ixp4xx/ixdp425-pci.c  |    3 +- + arch/arm/tools/mach-types           |    2 +- + 5 files changed, 149 insertions(+), 2 deletions(-) + create mode 100644 arch/arm/mach-ixp4xx/compex-setup.c + +--- a/arch/arm/mach-ixp4xx/Kconfig ++++ b/arch/arm/mach-ixp4xx/Kconfig +@@ -89,6 +89,14 @@ config MACH_SIDEWINDER + 	  Engineering Sidewinder board. For more information on this + 	  platform, see http://www.adiengineering.com +  ++config MACH_COMPEX ++	bool "Compex WP18 / NP18A" ++	select PCI ++	help ++	  Say 'Y' here if you want your kernel to support Compex'  ++	  WP18 or NP18A boards. For more information on this ++	  platform, see http://www.compex.com.sg/home/OEM/product_ap.htm ++ + config ARCH_IXDP425 + 	bool "IXDP425" + 	help +--- a/arch/arm/mach-ixp4xx/Makefile ++++ b/arch/arm/mach-ixp4xx/Makefile +@@ -19,6 +19,7 @@ obj-pci-$(CONFIG_MACH_WG302V2)		+= wg302 + obj-pci-$(CONFIG_MACH_FSG)		+= fsg-pci.o + obj-pci-$(CONFIG_MACH_PRONGHORN)	+= pronghorn-pci.o + obj-pci-$(CONFIG_MACH_SIDEWINDER)	+= sidewinder-pci.o ++obj-pci-$(CONFIG_MACH_COMPEX)		+= ixdp425-pci.o +  + obj-y	+= common.o +  +@@ -36,6 +37,7 @@ obj-$(CONFIG_MACH_WG302V2)	+= wg302v2-se + obj-$(CONFIG_MACH_FSG)		+= fsg-setup.o + obj-$(CONFIG_MACH_PRONGHORN)	+= pronghorn-setup.o + obj-$(CONFIG_MACH_SIDEWINDER)	+= sidewinder-setup.o ++obj-$(CONFIG_MACH_COMPEX)	+= compex-setup.o +  + obj-$(CONFIG_PCI)		+= $(obj-pci-$(CONFIG_PCI)) common-pci.o + obj-$(CONFIG_IXP4XX_QMGR)	+= ixp4xx_qmgr.o +--- /dev/null ++++ b/arch/arm/mach-ixp4xx/compex-setup.c +@@ -0,0 +1,136 @@ ++/* ++ * arch/arm/mach-ixp4xx/compex-setup.c ++ * ++ * Compex WP18 / NP18A board-setup ++ * ++ * Copyright (C) 2008 Imre Kaloz <Kaloz@openwrt.org> ++ * ++ * based on coyote-setup.c: ++ *	Copyright (C) 2003-2005 MontaVista Software, Inc. ++ * ++ * Author: Imre Kaloz <Kaloz@openwrt.org> ++ */ ++ ++#include <linux/kernel.h> ++#include <linux/serial.h> ++#include <linux/serial_8250.h> ++ ++#include <asm/mach-types.h> ++#include <asm/mach/arch.h> ++#include <asm/mach/flash.h> ++ ++static struct flash_platform_data compex_flash_data = { ++	.map_name	= "cfi_probe", ++	.width		= 2, ++}; ++ ++static struct resource compex_flash_resource = { ++	.flags		= IORESOURCE_MEM, ++}; ++ ++static struct platform_device compex_flash = { ++	.name		= "IXP4XX-Flash", ++	.id		= 0, ++	.dev		= { ++		.platform_data = &compex_flash_data, ++	}, ++	.num_resources	= 1, ++	.resource	= &compex_flash_resource, ++}; ++ ++static struct resource compex_uart_resources[] = { ++	{ ++		.start		= IXP4XX_UART1_BASE_PHYS, ++		.end		= IXP4XX_UART1_BASE_PHYS + 0x0fff, ++		.flags		= IORESOURCE_MEM ++	}, ++	{ ++		.start		= IXP4XX_UART2_BASE_PHYS, ++		.end		= IXP4XX_UART2_BASE_PHYS + 0x0fff, ++		.flags		= IORESOURCE_MEM ++	} ++}; ++ ++static struct plat_serial8250_port compex_uart_data[] = { ++	{ ++		.mapbase	= IXP4XX_UART1_BASE_PHYS, ++		.membase	= (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET, ++		.irq		= IRQ_IXP4XX_UART1, ++		.flags		= UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, ++		.iotype		= UPIO_MEM, ++		.regshift	= 2, ++		.uartclk	= IXP4XX_UART_XTAL, ++	}, ++	{ ++		.mapbase	= IXP4XX_UART2_BASE_PHYS, ++		.membase	= (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, ++		.irq		= IRQ_IXP4XX_UART2, ++		.flags		= UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, ++		.iotype		= UPIO_MEM, ++		.regshift	= 2, ++		.uartclk	= IXP4XX_UART_XTAL, ++	}, ++	{ }, ++}; ++ ++static struct platform_device compex_uart = { ++	.name			= "serial8250", ++	.id			= PLAT8250_DEV_PLATFORM, ++	.dev.platform_data	= compex_uart_data, ++	.num_resources		= 2, ++	.resource		= compex_uart_resources, ++}; ++ ++static struct eth_plat_info compex_plat_eth[] = { ++	{ ++		.phy		= IXP4XX_ETH_PHY_MAX_ADDR, ++		.phy_mask	= 0xf0000, ++		.rxq		= 3, ++		.txreadyq	= 20, ++	}, { ++		.phy		= 3, ++		.rxq		= 4, ++		.txreadyq	= 21, ++	} ++}; ++ ++static struct platform_device compex_eth[] = { ++	{ ++		.name			= "ixp4xx_eth", ++		.id			= IXP4XX_ETH_NPEB, ++		.dev.platform_data	= compex_plat_eth, ++	}, { ++		.name			= "ixp4xx_eth", ++		.id			= IXP4XX_ETH_NPEC, ++		.dev.platform_data	= compex_plat_eth + 1, ++	} ++}; ++ ++static struct platform_device *compex_devices[] __initdata = { ++	&compex_flash, ++	&compex_uart, ++	&compex_eth[0], ++	&compex_eth[1], ++}; ++ ++static void __init compex_init(void) ++{ ++	ixp4xx_sys_init(); ++ ++	compex_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); ++	compex_flash_resource.end = ++		IXP4XX_EXP_BUS_BASE(0) + SZ_32M - 1; ++ ++	platform_add_devices(compex_devices, ARRAY_SIZE(compex_devices)); ++} ++ ++MACHINE_START(COMPEX, "Compex WP18 / NP18A") ++	/* Maintainer: Imre Kaloz <Kaloz@openwrt.org> */ ++	.phys_io	= IXP4XX_PERIPHERAL_BASE_PHYS, ++	.io_pg_offst	= ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, ++	.map_io		= ixp4xx_map_io, ++	.init_irq	= ixp4xx_init_irq, ++	.timer		= &ixp4xx_timer, ++	.boot_params	= 0x0100, ++	.init_machine	= compex_init, ++MACHINE_END +--- a/arch/arm/mach-ixp4xx/ixdp425-pci.c ++++ b/arch/arm/mach-ixp4xx/ixdp425-pci.c +@@ -66,7 +66,8 @@ struct hw_pci ixdp425_pci __initdata = { + int __init ixdp425_pci_init(void) + { + 	if (machine_is_ixdp425() || machine_is_ixcdp1100() || +-			machine_is_ixdp465() || machine_is_kixrp435()) ++			machine_is_ixdp465() || machine_is_kixrp435() || ++			machine_is_compex()) + 		pci_common_init(&ixdp425_pci); + 	return 0; + } +--- a/arch/arm/tools/mach-types ++++ b/arch/arm/tools/mach-types +@@ -1273,7 +1273,7 @@ oiab			MACH_OIAB		OIAB			1269 + smdk6400		MACH_SMDK6400		SMDK6400		1270 + nokia_n800		MACH_NOKIA_N800		NOKIA_N800		1271 + greenphone		MACH_GREENPHONE		GREENPHONE		1272 +-compex42x		MACH_COMPEXWP18		COMPEXWP18		1273 ++compex			MACH_COMPEX		COMPEX			1273 + xmate			MACH_XMATE		XMATE			1274 + energizer		MACH_ENERGIZER		ENERGIZER		1275 + ime1			MACH_IME1		IME1			1276 | 
