From: Imre Kaloz Date: Wed, 2 Jul 2008 21:37:46 +0000 (+0000) Subject: ixp4xx patches cleanup, round one X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=5ec09dd287b06c82bad03d093bdc4217caa3f091;p=openwrt%2Fstaging%2Fmans0n.git ixp4xx patches cleanup, round one SVN-Revision: 11619 --- diff --git a/target/linux/ixp4xx/patches-2.6.26/030-ixp4xx_fsg_board_support.patch b/target/linux/ixp4xx/patches-2.6.26/030-ixp4xx_fsg_board_support.patch index 8fb7280e07..048b9f7465 100644 --- a/target/linux/ixp4xx/patches-2.6.26/030-ixp4xx_fsg_board_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/030-ixp4xx_fsg_board_support.patch @@ -1,50 +1,3 @@ -From: Rod Whitby -Subject: [PATCH] ixp4xx: Add support for the Freecom FSG-3 board (Patch #4874) - -The Freecom-FSG3 is a small network-attached-storage device with the -following feature set: - -* Intel IXP422 -* 4MB Flash (ixp4xx flash driver) -* 64MB RAM -* 4 USB 2.0 host ports (ehci and ohci drivers) -* 1 WAN (eth1) and 3 LAN (eth0) ethernet ports - * Supported by the open source ixp4xx ethernet driver -* Via VT6421 disk controller (libata and sata-via drivers) - * Internal hard disk (PATA supported, SATA not yet supported) - * External SATA port (not yet supported) -* ISL1208 RTC chip -* Winbond 83782 temp sensor and fan controller -* MiniPCI slot - -The ixp4xx_defconfig is also updated to support this device (the -leds-fsg driver is to be submitted separately via the leds tree after -this initial support is merged, as it depends on header gpio defines). - -Signed-off-by: Rod Whitby - -PATCH FOLLOWS -KernelVersion: v2.6.25-rc6-74-g264e3e8 ---- - -Updated to correct all issues found by RMK. - -The front power button calls ctrl_alt_del() and the rear reset button -now calls machine_restart() directly. - - arch/arm/configs/ixp4xx_defconfig | 9 +- - arch/arm/mach-ixp4xx/Kconfig | 9 + - arch/arm/mach-ixp4xx/Makefile | 2 + - arch/arm/mach-ixp4xx/fsg-pci.c | 71 ++++++++ - arch/arm/mach-ixp4xx/fsg-setup.c | 276 ++++++++++++++++++++++++++++++++ - include/asm-arm/arch-ixp4xx/fsg.h | 50 ++++++ - include/asm-arm/arch-ixp4xx/hardware.h | 1 + - include/asm-arm/arch-ixp4xx/irqs.h | 7 + - 8 files changed, 421 insertions(+), 4 deletions(-) - create mode 100644 arch/arm/mach-ixp4xx/fsg-pci.c - create mode 100644 arch/arm/mach-ixp4xx/fsg-setup.c - create mode 100644 include/asm-arm/arch-ixp4xx/fsg.h - --- a/arch/arm/configs/ixp4xx_defconfig +++ b/arch/arm/configs/ixp4xx_defconfig @@ -165,6 +165,7 @@ diff --git a/target/linux/ixp4xx/patches-2.6.26/100-gateway7001_mac_plat_info.patch b/target/linux/ixp4xx/patches-2.6.26/100-gateway7001_mac_plat_info.patch deleted file mode 100644 index a2ebb1a83a..0000000000 --- a/target/linux/ixp4xx/patches-2.6.26/100-gateway7001_mac_plat_info.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- a/arch/arm/mach-ixp4xx/gateway7001-setup.c -+++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c -@@ -76,9 +76,36 @@ - .resource = &gateway7001_uart_resource, - }; - -+/* Built-in 10/100 Ethernet MAC interfaces */ -+static struct eth_plat_info gateway7001_plat_eth[] = { -+ { -+ .phy = 1, -+ .rxq = 3, -+ .txreadyq = 20, -+ }, { -+ .phy = 2, -+ .rxq = 4, -+ .txreadyq = 21, -+ } -+}; -+ -+static struct platform_device gateway7001_eth[] = { -+ { -+ .name = "ixp4xx_eth", -+ .id = IXP4XX_ETH_NPEB, -+ .dev.platform_data = gateway7001_plat_eth, -+ }, { -+ .name = "ixp4xx_eth", -+ .id = IXP4XX_ETH_NPEC, -+ .dev.platform_data = gateway7001_plat_eth + 1, -+ } -+}; -+ - static struct platform_device *gateway7001_devices[] __initdata = { - &gateway7001_flash, -- &gateway7001_uart -+ &gateway7001_uart, -+ &gateway7001_eth[0], -+ &gateway7001_eth[1], - }; - - static void __init gateway7001_init(void) diff --git a/target/linux/ixp4xx/patches-2.6.26/100-wg302v2_gateway7001_mac_plat_info.patch b/target/linux/ixp4xx/patches-2.6.26/100-wg302v2_gateway7001_mac_plat_info.patch new file mode 100644 index 0000000000..bbdd00c80f --- /dev/null +++ b/target/linux/ixp4xx/patches-2.6.26/100-wg302v2_gateway7001_mac_plat_info.patch @@ -0,0 +1,68 @@ +--- a/arch/arm/mach-ixp4xx/gateway7001-setup.c ++++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c +@@ -76,9 +76,35 @@ + .resource = &gateway7001_uart_resource, + }; + ++static struct eth_plat_info gateway7001_plat_eth[] = { ++ { ++ .phy = 1, ++ .rxq = 3, ++ .txreadyq = 20, ++ }, { ++ .phy = 2, ++ .rxq = 4, ++ .txreadyq = 21, ++ } ++}; ++ ++static struct platform_device gateway7001_eth[] = { ++ { ++ .name = "ixp4xx_eth", ++ .id = IXP4XX_ETH_NPEB, ++ .dev.platform_data = gateway7001_plat_eth, ++ }, { ++ .name = "ixp4xx_eth", ++ .id = IXP4XX_ETH_NPEC, ++ .dev.platform_data = gateway7001_plat_eth + 1, ++ } ++}; ++ + static struct platform_device *gateway7001_devices[] __initdata = { + &gateway7001_flash, +- &gateway7001_uart ++ &gateway7001_uart, ++ &gateway7001_eth[0], ++ &gateway7001_eth[1], + }; + + static void __init gateway7001_init(void) +--- a/arch/arm/mach-ixp4xx/wg302v2-setup.c ++++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c +@@ -77,9 +77,26 @@ + .resource = &wg302v2_uart_resource, + }; + ++static struct eth_plat_info wg302v2_plat_eth[] = { ++ { ++ .phy = 8, ++ .rxq = 3, ++ .txreadyq = 20, ++ } ++}; ++ ++static struct platform_device wg302v2_eth[] = { ++ { ++ .name = "ixp4xx_eth", ++ .id = IXP4XX_ETH_NPEB, ++ .dev.platform_data = wg302v2_plat_eth, ++ } ++}; ++ + static struct platform_device *wg302v2_devices[] __initdata = { + &wg302v2_flash, + &wg302v2_uart, ++ &wg302v2_eth[0], + }; + + static void __init wg302v2_init(void) diff --git a/target/linux/ixp4xx/patches-2.6.26/101-wg302_mac_plat_info.patch b/target/linux/ixp4xx/patches-2.6.26/101-wg302_mac_plat_info.patch deleted file mode 100644 index 850947fc89..0000000000 --- a/target/linux/ixp4xx/patches-2.6.26/101-wg302_mac_plat_info.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/arch/arm/mach-ixp4xx/wg302v2-setup.c -+++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c -@@ -77,9 +77,27 @@ - .resource = &wg302v2_uart_resource, - }; - -+/* Built-in 10/100 Ethernet MAC interfaces */ -+static struct eth_plat_info wg302_plat_eth[] = { -+ { -+ .phy = 8, -+ .rxq = 3, -+ .txreadyq = 20, -+ } -+}; -+ -+static struct platform_device wg302_eth[] = { -+ { -+ .name = "ixp4xx_eth", -+ .id = IXP4XX_ETH_NPEB, -+ .dev.platform_data = wg302_plat_eth, -+ } -+}; -+ - static struct platform_device *wg302v2_devices[] __initdata = { - &wg302v2_flash, - &wg302v2_uart, -+ &wg302_eth[0], - }; - - static void __init wg302v2_init(void) diff --git a/target/linux/ixp4xx/patches-2.6.26/105-wg302v1_support.patch b/target/linux/ixp4xx/patches-2.6.26/105-wg302v1_support.patch new file mode 100644 index 0000000000..102342322a --- /dev/null +++ b/target/linux/ixp4xx/patches-2.6.26/105-wg302v1_support.patch @@ -0,0 +1,241 @@ +--- a/arch/arm/configs/ixp4xx_defconfig ++++ b/arch/arm/configs/ixp4xx_defconfig +@@ -155,6 +155,7 @@ + CONFIG_MACH_LOFT=y + CONFIG_ARCH_ADI_COYOTE=y + CONFIG_MACH_GATEWAY7001=y ++CONFIG_MACH_WG302V1=y + CONFIG_MACH_WG302V2=y + CONFIG_ARCH_IXDP425=y + CONFIG_MACH_IXDPG425=y +--- a/arch/arm/mach-ixp4xx/Kconfig ++++ b/arch/arm/mach-ixp4xx/Kconfig +@@ -49,6 +49,14 @@ + 7001 Access Point. For more information on this platform, + see http://openwrt.org + ++config MACH_WG302V1 ++ bool "Netgear WG302 v1 / WAG302 v1" ++ select PCI ++ help ++ Say 'Y' here if you want your kernel to support Netgear's ++ WG302 v1 or WAG302 v1 Access Points. For more information ++ on this platform, see http://openwrt.org ++ + config MACH_WG302V2 + bool "Netgear WG302 v2 / WAG302 v2" + select PCI +--- a/arch/arm/mach-ixp4xx/Makefile ++++ b/arch/arm/mach-ixp4xx/Makefile +@@ -14,6 +14,7 @@ + obj-pci-$(CONFIG_MACH_NAS100D) += nas100d-pci.o + obj-pci-$(CONFIG_MACH_DSMG600) += dsmg600-pci.o + obj-pci-$(CONFIG_MACH_GATEWAY7001) += gateway7001-pci.o ++obj-pci-$(CONFIG_MACH_WG302V1) += wg302v1-pci.o + obj-pci-$(CONFIG_MACH_WG302V2) += wg302v2-pci.o + obj-pci-$(CONFIG_MACH_FSG) += fsg-pci.o + +@@ -28,6 +29,7 @@ + obj-$(CONFIG_MACH_NAS100D) += nas100d-setup.o + obj-$(CONFIG_MACH_DSMG600) += dsmg600-setup.o + obj-$(CONFIG_MACH_GATEWAY7001) += gateway7001-setup.o ++obj-$(CONFIG_MACH_WG302V1) += wg302v1-setup.o + obj-$(CONFIG_MACH_WG302V2) += wg302v2-setup.o + obj-$(CONFIG_MACH_FSG) += fsg-setup.o + +--- /dev/null ++++ b/arch/arm/mach-ixp4xx/wg302v1-pci.c +@@ -0,0 +1,64 @@ ++/* ++ * arch/arch/mach-ixp4xx/wg302v1-pci.c ++ * ++ * PCI setup routines for the Netgear WG302 v1 and WAG302 v1 ++ * ++ * Copyright (C) 2008 Imre Kaloz ++ * ++ * based on coyote-pci.c: ++ * Copyright (C) 2002 Jungo Software Technologies. ++ * Copyright (C) 2003 MontaVista Software, Inc. ++ * ++ * Maintainer: Imre Kaloz ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include ++ ++void __init wg302v1_pci_preinit(void) ++{ ++ set_irq_type(IRQ_IXP4XX_GPIO8, IRQT_LOW); ++ set_irq_type(IRQ_IXP4XX_GPIO10, IRQT_LOW); ++ ++ ixp4xx_pci_preinit(); ++} ++ ++static int __init wg302v1_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ++{ ++ if (slot == 1) ++ return IRQ_IXP4XX_GPIO8; ++ else if (slot == 2) ++ return IRQ_IXP4XX_GPIO10; ++ else ++ return -1; ++} ++ ++struct hw_pci wg302v1_pci __initdata = { ++ .nr_controllers = 1, ++ .preinit = wg302v1_pci_preinit, ++ .swizzle = pci_std_swizzle, ++ .setup = ixp4xx_setup, ++ .scan = ixp4xx_scan_bus, ++ .map_irq = wg302v1_map_irq, ++}; ++ ++int __init wg302v1_pci_init(void) ++{ ++ if (machine_is_wg302v1()) ++ pci_common_init(&wg302v1_pci); ++ return 0; ++} ++ ++subsys_initcall(wg302v1_pci_init); +--- /dev/null ++++ b/arch/arm/mach-ixp4xx/wg302v1-setup.c +@@ -0,0 +1,126 @@ ++/* ++ * arch/arm/mach-ixp4xx/wg302v1-setup.c ++ * ++ * Board setup for the Netgear WG302 v1 and WAG302 v1 ++ * ++ * Copyright (C) 2008 Imre Kaloz ++ * ++ * based on coyote-setup.c: ++ * Copyright (C) 2003-2005 MontaVista Software, Inc. ++ * ++ * Author: Imre Kaloz ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static struct flash_platform_data wg302v1_flash_data = { ++ .map_name = "cfi_probe", ++ .width = 2, ++}; ++ ++static struct resource wg302v1_flash_resource = { ++ .flags = IORESOURCE_MEM, ++}; ++ ++static struct platform_device wg302v1_flash = { ++ .name = "IXP4XX-Flash", ++ .id = 0, ++ .dev = { ++ .platform_data = &wg302v1_flash_data, ++ }, ++ .num_resources = 1, ++ .resource = &wg302v1_flash_resource, ++}; ++ ++static struct resource wg302v1_uart_resource = { ++ .start = IXP4XX_UART1_BASE_PHYS, ++ .end = IXP4XX_UART1_BASE_PHYS + 0x0fff, ++ .flags = IORESOURCE_MEM, ++}; ++ ++static struct plat_serial8250_port wg302v1_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, ++ }, ++ { }, ++}; ++ ++static struct platform_device wg302v1_uart = { ++ .name = "serial8250", ++ .id = PLAT8250_DEV_PLATFORM, ++ .dev = { ++ .platform_data = wg302v1_uart_data, ++ }, ++ .num_resources = 1, ++ .resource = &wg302v1_uart_resource, ++}; ++ ++static struct eth_plat_info wg302v1_plat_eth[] = { ++ { ++ .phy = 30, ++ .rxq = 3, ++ .txreadyq = 20, ++ } ++}; ++ ++static struct platform_device wg302v1_eth[] = { ++ { ++ .name = "ixp4xx_eth", ++ .id = IXP4XX_ETH_NPEB, ++ .dev.platform_data = wg302v1_plat_eth, ++ } ++}; ++ ++static struct platform_device *wg302v1_devices[] __initdata = { ++ &wg302v1_flash, ++ &wg302v1_uart, ++ &wg302v1_eth[0], ++}; ++ ++static void __init wg302v1_init(void) ++{ ++ ixp4xx_sys_init(); ++ ++ wg302v1_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); ++ wg302v1_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_32M - 1; ++ ++ *IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; ++ *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; ++ ++ platform_add_devices(wg302v1_devices, ARRAY_SIZE(wg302v1_devices)); ++} ++ ++#ifdef CONFIG_MACH_WG302V1 ++MACHINE_START(WG302V1, "Netgear WG302 v1 / WAG302 v1") ++ /* Maintainer: Imre Kaloz */ ++ .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 = wg302v1_init, ++MACHINE_END ++#endif diff --git a/target/linux/ixp4xx/patches-2.6.26/110-pronghorn_metro_support.patch b/target/linux/ixp4xx/patches-2.6.26/110-pronghorn_metro_support.patch index 6908a28adb..a35663a9b0 100644 --- a/target/linux/ixp4xx/patches-2.6.26/110-pronghorn_metro_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/110-pronghorn_metro_support.patch @@ -1,47 +1,68 @@ +--- a/arch/arm/configs/ixp4xx_defconfig ++++ b/arch/arm/configs/ixp4xx_defconfig +@@ -157,6 +157,8 @@ + CONFIG_MACH_GATEWAY7001=y + CONFIG_MACH_WG302V1=y + CONFIG_MACH_WG302V2=y ++CONFIG_MACH_PRONGHORN=y ++CONFIG_MACH_PRONGHORNMETRO=y + CONFIG_ARCH_IXDP425=y + CONFIG_MACH_IXDPG425=y + CONFIG_MACH_IXDP465=y --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -57,6 +57,14 @@ +@@ -65,6 +65,24 @@ WG302 v2 or WAG302 v2 Access Points. For more information on this platform, see http://openwrt.org -+config MACH_PRONGHORNMETRO -+ bool "Pronghorn Metro" ++config MACH_PRONGHORN ++ bool "ADI Pronghorn series" + select PCI + help + Say 'Y' here if you want your kernel to support the ADI -+ Engineering Pronghorn Metro Platform. For more -+ information on this platform, see . ++ Engineering Pronghorn series. For more ++ information on this platform, see http://www.adiengineering.com ++ ++# ++# There're only minimal differences kernel-wise between the Pronghorn and ++# Pronghorn Metro boards - they use different chip selects to drive the ++# CF slot connected to the expansion bus, so we just enable them together. ++# ++config MACH_PRONGHORNMETRO ++ bool ++ depends on MACH_PRONGHORN ++ default y + config ARCH_IXDP425 bool "IXDP425" help --- a/arch/arm/mach-ixp4xx/Makefile +++ b/arch/arm/mach-ixp4xx/Makefile -@@ -16,6 +16,7 @@ - obj-pci-$(CONFIG_MACH_GATEWAY7001) += gateway7001-pci.o +@@ -17,6 +17,7 @@ + obj-pci-$(CONFIG_MACH_WG302V1) += wg302v1-pci.o obj-pci-$(CONFIG_MACH_WG302V2) += wg302v2-pci.o obj-pci-$(CONFIG_MACH_FSG) += fsg-pci.o -+obj-pci-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-pci.o ++obj-pci-$(CONFIG_MACH_PRONGHORN) += pronghorn-pci.o obj-y += common.o -@@ -30,6 +31,7 @@ - obj-$(CONFIG_MACH_GATEWAY7001) += gateway7001-setup.o +@@ -32,6 +33,7 @@ + obj-$(CONFIG_MACH_WG302V1) += wg302v1-setup.o obj-$(CONFIG_MACH_WG302V2) += wg302v2-setup.o obj-$(CONFIG_MACH_FSG) += fsg-setup.o -+obj-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-setup.o ++obj-$(CONFIG_MACH_PRONGHORN) += pronghorn-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/pronghornmetro-pci.c -@@ -0,0 +1,74 @@ ++++ b/arch/arm/mach-ixp4xx/pronghorn-pci.c +@@ -0,0 +1,70 @@ +/* -+ * arch/arch/mach-ixp4xx/pronghornmetro-pci.c ++ * arch/arch/mach-ixp4xx/pronghorn-pci.c + * -+ * PCI setup routines for ADI Engineering Pronghorn Metro ++ * PCI setup routines for ADI Engineering Pronghorn series + * -+ * Copyright (C) 2007 Imre Kaloz ++ * Copyright (C) 2008 Imre Kaloz + * + * based on coyote-pci.c: + * Copyright (C) 2002 Jungo Software Technologies. @@ -62,15 +83,10 @@ + +#include +#include -+#include + +#include + -+extern void ixp4xx_pci_preinit(void); -+extern int ixp4xx_setup(int nr, struct pci_sys_data *sys); -+extern struct pci_bus *ixp4xx_scan_bus(int nr, struct pci_sys_data *sys); -+ -+void __init pronghornmetro_pci_preinit(void) ++void __init pronghorn_pci_preinit(void) +{ + set_irq_type(IRQ_IXP4XX_GPIO4, IRQT_LOW); + set_irq_type(IRQ_IXP4XX_GPIO6, IRQT_LOW); @@ -80,7 +96,7 @@ + ixp4xx_pci_preinit(); +} + -+static int __init pronghornmetro_map_irq(struct pci_dev *dev, u8 slot, u8 pin) ++static int __init pronghorn_map_irq(struct pci_dev *dev, u8 slot, u8 pin) +{ + if (slot == 13) + return IRQ_IXP4XX_GPIO4; @@ -90,35 +106,36 @@ + return IRQ_IXP4XX_GPIO11; + else if (slot == 16) + return IRQ_IXP4XX_GPIO1; -+ else return -1; ++ else ++ return -1; +} + -+struct hw_pci pronghornmetro_pci __initdata = { -+ .nr_controllers = 1, -+ .preinit = pronghornmetro_pci_preinit, -+ .swizzle = pci_std_swizzle, -+ .setup = ixp4xx_setup, -+ .scan = ixp4xx_scan_bus, -+ .map_irq = pronghornmetro_map_irq, ++struct hw_pci pronghorn_pci __initdata = { ++ .nr_controllers = 1, ++ .preinit = pronghorn_pci_preinit, ++ .swizzle = pci_std_swizzle, ++ .setup = ixp4xx_setup, ++ .scan = ixp4xx_scan_bus, ++ .map_irq = pronghorn_map_irq, +}; + -+int __init pronghornmetro_pci_init(void) ++int __init pronghorn_pci_init(void) +{ -+ if (machine_is_pronghorn_metro()) -+ pci_common_init(&pronghornmetro_pci); ++ if (machine_is_pronghorn() || machine_is_pronghorn_metro()) ++ pci_common_init(&pronghorn_pci); + return 0; +} + -+subsys_initcall(pronghornmetro_pci_init); ++subsys_initcall(pronghorn_pci_init); --- /dev/null -+++ b/arch/arm/mach-ixp4xx/pronghornmetro-setup.c -@@ -0,0 +1,147 @@ ++++ b/arch/arm/mach-ixp4xx/pronghorn-setup.c +@@ -0,0 +1,245 @@ +/* -+ * arch/arm/mach-ixp4xx/pronghornmetro-setup.c ++ * arch/arm/mach-ixp4xx/pronghorn-setup.c + * -+ * Board setup for the ADI Engineering Pronghorn Metro ++ * Board setup for the ADI Engineering Pronghorn series + * -+ * Copyright (C) 2007 Imre Kaloz ++ * Copyright (C) 2008 Imre Kaloz + * + * based on coyote-setup.c: + * Copyright (C) 2003-2005 MontaVista Software, Inc. @@ -133,42 +150,59 @@ +#include +#include +#include ++#include ++#include ++#include + -+#include +#include -+#include +#include +#include +#include +#include +#include + -+static struct flash_platform_data pronghornmetro_flash_data = { ++static struct flash_platform_data pronghorn_flash_data = { + .map_name = "cfi_probe", + .width = 2, +}; + -+static struct resource pronghornmetro_flash_resource = { ++static struct resource pronghorn_flash_resource = { + .flags = IORESOURCE_MEM, +}; + -+static struct platform_device pronghornmetro_flash = { ++static struct platform_device pronghorn_flash = { + .name = "IXP4XX-Flash", + .id = 0, + .dev = { -+ .platform_data = &pronghornmetro_flash_data, ++ .platform_data = &pronghorn_flash_data, + }, + .num_resources = 1, -+ .resource = &pronghornmetro_flash_resource, ++ .resource = &pronghorn_flash_resource, +}; + -+static struct resource pronghornmetro_uart_resource = { -+ .start = IXP4XX_UART2_BASE_PHYS, -+ .end = IXP4XX_UART2_BASE_PHYS + 0x0fff, -+ .flags = IORESOURCE_MEM, ++static struct resource pronghorn_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 pronghornmetro_uart_data[] = { ++static struct plat_serial8250_port pronghorn_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, @@ -181,17 +215,49 @@ + { }, +}; + -+static struct platform_device pronghornmetro_uart = { ++static struct platform_device pronghorn_uart = { + .name = "serial8250", + .id = PLAT8250_DEV_PLATFORM, -+ .dev = { -+ .platform_data = pronghornmetro_uart_data, ++ .dev = { ++ .platform_data = pronghorn_uart_data, + }, -+ .num_resources = 1, -+ .resource = &pronghornmetro_uart_resource, ++ .num_resources = 2, ++ .resource = pronghorn_uart_resources, ++}; ++ ++static struct i2c_gpio_platform_data pronghorn_i2c_gpio_data = { ++ .sda_pin = 9, ++ .scl_pin = 10, ++}; ++ ++static struct platform_device pronghorn_i2c_gpio = { ++ .name = "i2c-gpio", ++ .id = 0, ++ .dev = { ++ .platform_data = &pronghorn_i2c_gpio_data, ++ }, ++}; ++ ++static struct gpio_led pronghorn_led_pin[] = { ++ { ++ .name = "pronghorn:green:status", ++ .gpio = 7, ++ }, ++ { }, ++}; ++ ++static struct gpio_led_platform_data pronghorn_led_data = { ++ .num_leds = ARRAY_SIZE(pronghorn_led_pin), ++ .leds = pronghorn_led_pin, +}; + -+static struct resource pronghornmetro_pata_resources[] = { ++static struct platform_device pronghorn_led = { ++ .name = "leds-gpio", ++ .id = -1, ++ .dev.platform_data = &pronghorn_led_data, ++}; ++ ++static struct resource pronghorn_pata_resources[] = { + { + .flags = IORESOURCE_MEM + }, @@ -206,50 +272,89 @@ + }, +}; + -+static struct ixp4xx_pata_data pronghornmetro_pata_data = { ++static struct ixp4xx_pata_data pronghorn_pata_data = { + .cs0_bits = 0xbfff0043, + .cs1_bits = 0xbfff0043, +}; + -+static struct platform_device pronghornmetro_pata = { ++static struct platform_device pronghorn_pata = { + .name = "pata_ixp4xx_cf", + .id = 0, -+ .dev.platform_data = &pronghornmetro_pata_data, -+ .num_resources = ARRAY_SIZE(pronghornmetro_pata_resources), -+ .resource = pronghornmetro_pata_resources, ++ .dev.platform_data = &pronghorn_pata_data, ++ .num_resources = ARRAY_SIZE(pronghorn_pata_resources), ++ .resource = pronghorn_pata_resources, +}; + -+static struct platform_device *pronghornmetro_devices[] __initdata = { -+ &pronghornmetro_flash, -+ &pronghornmetro_uart, ++static struct eth_plat_info pronghorn_plat_eth[] = { ++ { ++ .phy = 0, ++ .rxq = 3, ++ .txreadyq = 20, ++ }, { ++ .phy = 1, ++ .rxq = 4, ++ .txreadyq = 21, ++ } +}; + -+static void __init pronghornmetro_init(void) ++static struct platform_device pronghorn_eth[] = { ++ { ++ .name = "ixp4xx_eth", ++ .id = IXP4XX_ETH_NPEB, ++ .dev.platform_data = pronghorn_plat_eth, ++ }, { ++ .name = "ixp4xx_eth", ++ .id = IXP4XX_ETH_NPEC, ++ .dev.platform_data = pronghorn_plat_eth + 1, ++ } ++}; ++ ++static struct platform_device *pronghorn_devices[] __initdata = { ++ &pronghorn_flash, ++ &pronghorn_uart, ++ &pronghorn_led, ++ &pronghorn_eth[0], ++ &pronghorn_eth[1], ++}; ++ ++static void __init pronghorn_init(void) +{ + ixp4xx_sys_init(); + -+ pronghornmetro_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); -+ pronghornmetro_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_16M - 1; ++ pronghorn_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); ++ pronghorn_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_16M - 1; + + *IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; + *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; + -+ platform_add_devices(pronghornmetro_devices, ARRAY_SIZE(pronghornmetro_devices)); ++ platform_add_devices(pronghorn_devices, ARRAY_SIZE(pronghorn_devices)); ++ ++ if (machine_is_pronghorn()) { ++ pronghorn_pata_resources[0].start = IXP4XX_EXP_BUS_BASE(3); ++ pronghorn_pata_resources[0].end = IXP4XX_EXP_BUS_END(3); ++ ++ pronghorn_pata_resources[1].start = IXP4XX_EXP_BUS_BASE(4); ++ pronghorn_pata_resources[1].end = IXP4XX_EXP_BUS_END(4); + -+ pronghornmetro_pata_resources[0].start = IXP4XX_EXP_BUS_BASE(1); -+ pronghornmetro_pata_resources[0].end = IXP4XX_EXP_BUS_END(1); ++ pronghorn_pata_data.cs0_cfg = IXP4XX_EXP_CS3; ++ pronghorn_pata_data.cs1_cfg = IXP4XX_EXP_CS4; ++ } else { ++ pronghorn_pata_resources[0].start = IXP4XX_EXP_BUS_BASE(2); ++ pronghorn_pata_resources[0].end = IXP4XX_EXP_BUS_END(2); + -+ pronghornmetro_pata_resources[1].start = IXP4XX_EXP_BUS_BASE(2); -+ pronghornmetro_pata_resources[1].end = IXP4XX_EXP_BUS_END(2); ++ pronghorn_pata_resources[1].start = IXP4XX_EXP_BUS_BASE(3); ++ pronghorn_pata_resources[1].end = IXP4XX_EXP_BUS_END(3); + -+ pronghornmetro_pata_data.cs0_cfg = IXP4XX_EXP_CS1; -+ pronghornmetro_pata_data.cs1_cfg = IXP4XX_EXP_CS2; ++ pronghorn_pata_data.cs0_cfg = IXP4XX_EXP_CS2; ++ pronghorn_pata_data.cs1_cfg = IXP4XX_EXP_CS3; + -+ platform_device_register(&pronghornmetro_pata); ++ platform_device_register(&pronghorn_i2c_gpio); ++ } ++ ++ platform_device_register(&pronghorn_pata); +} + -+#ifdef CONFIG_MACH_PRONGHORNMETRO -+MACHINE_START(PRONGHORNMETRO, "ADI Engineering Pronghorn Metro") ++MACHINE_START(PRONGHORN, "ADI Engineering Pronghorn") + /* Maintainer: Imre Kaloz */ + .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, + .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, @@ -257,21 +362,19 @@ + .init_irq = ixp4xx_init_irq, + .timer = &ixp4xx_timer, + .boot_params = 0x0100, -+ .init_machine = pronghornmetro_init, ++ .init_machine = pronghorn_init, +MACHINE_END -+#endif ---- a/Documentation/arm/IXP4xx -+++ b/Documentation/arm/IXP4xx -@@ -111,6 +111,9 @@ - the platform has two mini-PCI slots used for 802.11[bga] cards. - Finally, there is an IDE port hanging off the expansion bus. - -+ADI Engineering Pronghorn Metro Platform -+http://www.adiengineering.com/php-bin/ecomm4/productDisplay.php?category_id=30&product_id=85 + - Gateworks Avila Network Platform - http://www.gateworks.com/avila_sbc.htm - ++MACHINE_START(PRONGHORNMETRO, "ADI Engineering Pronghorn Metro") ++ /* Maintainer: Imre Kaloz */ ++ .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 = pronghorn_init, ++MACHINE_END --- a/include/asm-arm/arch-ixp4xx/uncompress.h +++ b/include/asm-arm/arch-ixp4xx/uncompress.h @@ -41,7 +41,8 @@ @@ -280,7 +383,7 @@ if (machine_is_adi_coyote() || machine_is_gtwx5715() || - machine_is_gateway7001() || machine_is_wg302v2()) + machine_is_gateway7001() || machine_is_wg302v2() || -+ machine_is_pronghorn_metro()) ++ machine_is_pronghorn() || machine_is_pronghorn_metro()) uart_base = (volatile u32*) IXP4XX_UART2_BASE_PHYS; else uart_base = (volatile u32*) IXP4XX_UART1_BASE_PHYS; diff --git a/target/linux/ixp4xx/patches-2.6.26/111-pronghorn_metro_mac_plat_info.patch b/target/linux/ixp4xx/patches-2.6.26/111-pronghorn_metro_mac_plat_info.patch deleted file mode 100644 index 3450b5b02c..0000000000 --- a/target/linux/ixp4xx/patches-2.6.26/111-pronghorn_metro_mac_plat_info.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- a/arch/arm/mach-ixp4xx/pronghornmetro-setup.c -+++ b/arch/arm/mach-ixp4xx/pronghornmetro-setup.c -@@ -104,9 +104,36 @@ - .resource = pronghornmetro_pata_resources, - }; - -+/* Built-in 10/100 Ethernet MAC interfaces */ -+static struct eth_plat_info pronghornmetro_plat_eth[] = { -+ { -+ .phy = 0, -+ .rxq = 3, -+ .txreadyq = 20, -+ }, { -+ .phy = 1, -+ .rxq = 4, -+ .txreadyq = 21, -+ } -+}; -+ -+static struct platform_device pronghornmetro_eth[] = { -+ { -+ .name = "ixp4xx_eth", -+ .id = IXP4XX_ETH_NPEB, -+ .dev.platform_data = pronghornmetro_plat_eth, -+ }, { -+ .name = "ixp4xx_eth", -+ .id = IXP4XX_ETH_NPEC, -+ .dev.platform_data = pronghornmetro_plat_eth + 1, -+ } -+}; -+ - static struct platform_device *pronghornmetro_devices[] __initdata = { - &pronghornmetro_flash, - &pronghornmetro_uart, -+ &pronghornmetro_eth[0], -+ &pronghornmetro_eth[1], - }; - - static void __init pronghornmetro_init(void) diff --git a/target/linux/ixp4xx/patches-2.6.26/120-compex_support.patch b/target/linux/ixp4xx/patches-2.6.26/120-compex_support.patch index 689d7a3c70..9f309a6fa6 100644 --- a/target/linux/ixp4xx/patches-2.6.26/120-compex_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/120-compex_support.patch @@ -1,8 +1,8 @@ --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -65,6 +65,14 @@ - Engineering Pronghorn Metro Platform. For more - information on this platform, see . +@@ -83,6 +83,14 @@ + depends on MACH_PRONGHORN + default y +config MACH_COMPEX + bool "Compex WP18 / NP18A" @@ -17,18 +17,18 @@ help --- a/arch/arm/mach-ixp4xx/Makefile +++ b/arch/arm/mach-ixp4xx/Makefile -@@ -17,6 +17,7 @@ +@@ -18,6 +18,7 @@ obj-pci-$(CONFIG_MACH_WG302V2) += wg302v2-pci.o obj-pci-$(CONFIG_MACH_FSG) += fsg-pci.o - obj-pci-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-pci.o + obj-pci-$(CONFIG_MACH_PRONGHORN) += pronghorn-pci.o +obj-pci-$(CONFIG_MACH_COMPEX) += ixdp425-pci.o obj-y += common.o -@@ -32,6 +33,7 @@ +@@ -34,6 +35,7 @@ obj-$(CONFIG_MACH_WG302V2) += wg302v2-setup.o obj-$(CONFIG_MACH_FSG) += fsg-setup.o - obj-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-setup.o + obj-$(CONFIG_MACH_PRONGHORN) += pronghorn-setup.o +obj-$(CONFIG_MACH_COMPEX) += compex-setup.o obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o diff --git a/target/linux/ixp4xx/patches-2.6.26/130-wrt300nv2_support.patch b/target/linux/ixp4xx/patches-2.6.26/130-wrt300nv2_support.patch index b797cb425c..29c86390e8 100644 --- a/target/linux/ixp4xx/patches-2.6.26/130-wrt300nv2_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/130-wrt300nv2_support.patch @@ -1,6 +1,6 @@ --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -73,6 +73,14 @@ +@@ -91,6 +91,14 @@ WP18 or NP18A boards. For more information on this platform, see http://openwrt.org @@ -17,17 +17,17 @@ help --- a/arch/arm/mach-ixp4xx/Makefile +++ b/arch/arm/mach-ixp4xx/Makefile -@@ -18,6 +18,7 @@ +@@ -19,6 +19,7 @@ obj-pci-$(CONFIG_MACH_FSG) += fsg-pci.o - obj-pci-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-pci.o + obj-pci-$(CONFIG_MACH_PRONGHORN) += pronghorn-pci.o obj-pci-$(CONFIG_MACH_COMPEX) += ixdp425-pci.o +obj-pci-$(CONFIG_MACH_WRT300NV2) += wrt300nv2-pci.o obj-y += common.o -@@ -34,6 +35,7 @@ +@@ -36,6 +37,7 @@ obj-$(CONFIG_MACH_FSG) += fsg-setup.o - obj-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-setup.o + obj-$(CONFIG_MACH_PRONGHORN) += pronghorn-setup.o obj-$(CONFIG_MACH_COMPEX) += compex-setup.o +obj-$(CONFIG_MACH_WRT300NV2) += wrt300nv2-setup.o @@ -218,8 +218,8 @@ */ if (machine_is_adi_coyote() || machine_is_gtwx5715() || machine_is_gateway7001() || machine_is_wg302v2() || -- machine_is_pronghorn_metro()) -+ machine_is_pronghorn_metro() || machine_is_wrt300nv2()) +- machine_is_pronghorn() || machine_is_pronghorn_metro()) ++ machine_is_pronghorn() || machine_is_pronghorn_metro() || machine_is_wrt300nv2()) uart_base = (volatile u32*) IXP4XX_UART2_BASE_PHYS; else uart_base = (volatile u32*) IXP4XX_UART1_BASE_PHYS; diff --git a/target/linux/ixp4xx/patches-2.6.26/140-sidewinder_support.patch b/target/linux/ixp4xx/patches-2.6.26/140-sidewinder_support.patch index 50f6e27522..e3f450fdbd 100644 --- a/target/linux/ixp4xx/patches-2.6.26/140-sidewinder_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/140-sidewinder_support.patch @@ -1,8 +1,8 @@ --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -65,6 +65,14 @@ - Engineering Pronghorn Metro Platform. For more - information on this platform, see . +@@ -83,6 +83,14 @@ + depends on MACH_PRONGHORN + default y +config MACH_SIDEWINDER + bool "Sidewinder" @@ -15,7 +15,7 @@ config MACH_COMPEX bool "Compex WP18 / NP18A" select PCI -@@ -163,7 +171,7 @@ +@@ -181,7 +189,7 @@ # config CPU_IXP46X bool @@ -26,16 +26,16 @@ config CPU_IXP43X --- a/arch/arm/mach-ixp4xx/Makefile +++ b/arch/arm/mach-ixp4xx/Makefile -@@ -19,6 +19,7 @@ - obj-pci-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-pci.o +@@ -20,6 +20,7 @@ + obj-pci-$(CONFIG_MACH_PRONGHORN) += pronghorn-pci.o obj-pci-$(CONFIG_MACH_COMPEX) += ixdp425-pci.o obj-pci-$(CONFIG_MACH_WRT300NV2) += wrt300nv2-pci.o +obj-pci-$(CONFIG_MACH_SIDEWINDER) += sidewinder-pci.o obj-y += common.o -@@ -36,6 +37,7 @@ - obj-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-setup.o +@@ -38,6 +39,7 @@ + obj-$(CONFIG_MACH_PRONGHORN) += pronghorn-setup.o obj-$(CONFIG_MACH_COMPEX) += compex-setup.o obj-$(CONFIG_MACH_WRT300NV2) += wrt300nv2-setup.o +obj-$(CONFIG_MACH_SIDEWINDER) += sidewinder-setup.o diff --git a/target/linux/ixp4xx/patches-2.6.26/150-lanready_ap1000_support.patch b/target/linux/ixp4xx/patches-2.6.26/150-lanready_ap1000_support.patch index d6d7cf6f77..fd1567bcac 100644 --- a/target/linux/ixp4xx/patches-2.6.26/150-lanready_ap1000_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/150-lanready_ap1000_support.patch @@ -166,7 +166,7 @@ } --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -89,6 +89,14 @@ +@@ -107,6 +107,14 @@ WRT300N v2 router. For more information on this platform, see http://openwrt.org @@ -183,7 +183,7 @@ help --- a/arch/arm/mach-ixp4xx/Makefile +++ b/arch/arm/mach-ixp4xx/Makefile -@@ -20,6 +20,7 @@ +@@ -21,6 +21,7 @@ obj-pci-$(CONFIG_MACH_COMPEX) += ixdp425-pci.o obj-pci-$(CONFIG_MACH_WRT300NV2) += wrt300nv2-pci.o obj-pci-$(CONFIG_MACH_SIDEWINDER) += sidewinder-pci.o @@ -191,7 +191,7 @@ obj-y += common.o -@@ -38,6 +39,7 @@ +@@ -40,6 +41,7 @@ obj-$(CONFIG_MACH_COMPEX) += compex-setup.o obj-$(CONFIG_MACH_WRT300NV2) += wrt300nv2-setup.o obj-$(CONFIG_MACH_SIDEWINDER) += sidewinder-setup.o diff --git a/target/linux/ixp4xx/patches-2.6.26/160-wg302v1_support.patch b/target/linux/ixp4xx/patches-2.6.26/160-wg302v1_support.patch deleted file mode 100644 index a5a6e5ca96..0000000000 --- a/target/linux/ixp4xx/patches-2.6.26/160-wg302v1_support.patch +++ /dev/null @@ -1,213 +0,0 @@ ---- a/arch/arm/mach-ixp4xx/Kconfig -+++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -49,6 +49,14 @@ - 7001 Access Point. For more information on this platform, - see http://openwrt.org - -+config MACH_WG302V1 -+ bool "Netgear WG302 v1 / WAG302 v1" -+ select PCI -+ help -+ Say 'Y' here if you want your kernel to support Netgear's -+ WG302 v1 or WAG302 v1 Access Points. For more information -+ on this platform, see http://openwrt.org -+ - config MACH_WG302V2 - bool "Netgear WG302 v2 / WAG302 v2" - select PCI ---- a/arch/arm/mach-ixp4xx/Makefile -+++ b/arch/arm/mach-ixp4xx/Makefile -@@ -14,6 +14,7 @@ - obj-pci-$(CONFIG_MACH_NAS100D) += nas100d-pci.o - obj-pci-$(CONFIG_MACH_DSMG600) += dsmg600-pci.o - obj-pci-$(CONFIG_MACH_GATEWAY7001) += gateway7001-pci.o -+obj-pci-$(CONFIG_MACH_WG302V1) += wg302v1-pci.o - obj-pci-$(CONFIG_MACH_WG302V2) += wg302v2-pci.o - obj-pci-$(CONFIG_MACH_FSG) += fsg-pci.o - obj-pci-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-pci.o -@@ -33,6 +34,7 @@ - obj-$(CONFIG_MACH_NAS100D) += nas100d-setup.o - obj-$(CONFIG_MACH_DSMG600) += dsmg600-setup.o - obj-$(CONFIG_MACH_GATEWAY7001) += gateway7001-setup.o -+obj-$(CONFIG_MACH_WG302V1) += wg302v1-setup.o - obj-$(CONFIG_MACH_WG302V2) += wg302v2-setup.o - obj-$(CONFIG_MACH_FSG) += fsg-setup.o - obj-$(CONFIG_MACH_PRONGHORNMETRO) += pronghornmetro-setup.o ---- /dev/null -+++ b/arch/arm/mach-ixp4xx/wg302v1-pci.c -@@ -0,0 +1,63 @@ -+/* -+ * arch/arch/mach-ixp4xx/wg302v1-pci.c -+ * -+ * PCI setup routines for the Netgear WG302 v1 and WAG302 v1 -+ * -+ * Copyright (C) 2008 Imre Kaloz -+ * -+ * based on coyote-pci.c: -+ * Copyright (C) 2002 Jungo Software Technologies. -+ * Copyright (C) 2003 MontaVista Software, Inc. -+ * -+ * Maintainer: Imre Kaloz -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include -+ -+void __init wg302v1_pci_preinit(void) -+{ -+ set_irq_type(IRQ_IXP4XX_GPIO8, IRQT_LOW); -+ set_irq_type(IRQ_IXP4XX_GPIO10, IRQT_LOW); -+ -+ ixp4xx_pci_preinit(); -+} -+ -+static int __init wg302v1_map_irq(struct pci_dev *dev, u8 slot, u8 pin) -+{ -+ if (slot == 1) -+ return IRQ_IXP4XX_GPIO8; -+ else if (slot == 2) -+ return IRQ_IXP4XX_GPIO10; -+ else return -1; -+} -+ -+struct hw_pci wg302v1_pci __initdata = { -+ .nr_controllers = 1, -+ .preinit = wg302v1_pci_preinit, -+ .swizzle = pci_std_swizzle, -+ .setup = ixp4xx_setup, -+ .scan = ixp4xx_scan_bus, -+ .map_irq = wg302v1_map_irq, -+}; -+ -+int __init wg302v1_pci_init(void) -+{ -+ if (machine_is_wg302v1()) -+ pci_common_init(&wg302v1_pci); -+ return 0; -+} -+ -+subsys_initcall(wg302v1_pci_init); ---- /dev/null -+++ b/arch/arm/mach-ixp4xx/wg302v1-setup.c -@@ -0,0 +1,109 @@ -+/* -+ * arch/arm/mach-ixp4xx/wg302v1-setup.c -+ * -+ * Board setup for the Netgear WG302 v1 and WAG302 v1 -+ * -+ * Copyright (C) 2008 Imre Kaloz -+ * -+ * based on coyote-setup.c: -+ * Copyright (C) 2003-2005 MontaVista Software, Inc. -+ * -+ * Author: Imre Kaloz -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static struct flash_platform_data wg302v1_flash_data = { -+ .map_name = "cfi_probe", -+ .width = 2, -+}; -+ -+static struct resource wg302v1_flash_resource = { -+ .flags = IORESOURCE_MEM, -+}; -+ -+static struct platform_device wg302v1_flash = { -+ .name = "IXP4XX-Flash", -+ .id = 0, -+ .dev = { -+ .platform_data = &wg302v1_flash_data, -+ }, -+ .num_resources = 1, -+ .resource = &wg302v1_flash_resource, -+}; -+ -+static struct resource wg302v1_uart_resource = { -+ .start = IXP4XX_UART1_BASE_PHYS, -+ .end = IXP4XX_UART1_BASE_PHYS + 0x0fff, -+ .flags = IORESOURCE_MEM, -+}; -+ -+static struct plat_serial8250_port wg302v1_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, -+ }, -+ { }, -+}; -+ -+static struct platform_device wg302v1_uart = { -+ .name = "serial8250", -+ .id = PLAT8250_DEV_PLATFORM, -+ .dev = { -+ .platform_data = wg302v1_uart_data, -+ }, -+ .num_resources = 1, -+ .resource = &wg302v1_uart_resource, -+}; -+ -+static struct platform_device *wg302v1_devices[] __initdata = { -+ &wg302v1_flash, -+ &wg302v1_uart, -+}; -+ -+static void __init wg302v1_init(void) -+{ -+ ixp4xx_sys_init(); -+ -+ wg302v1_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); -+ wg302v1_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_32M - 1; -+ -+ *IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; -+ *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; -+ -+ platform_add_devices(wg302v1_devices, ARRAY_SIZE(wg302v1_devices)); -+} -+ -+#ifdef CONFIG_MACH_WG302V1 -+MACHINE_START(WG302V1, "Netgear WG302 v1 / WAG302 v1") -+ /* Maintainer: Imre Kaloz */ -+ .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 = wg302v1_init, -+MACHINE_END -+#endif diff --git a/target/linux/ixp4xx/patches-2.6.26/161-wg302v1_mac_plat_info.patch b/target/linux/ixp4xx/patches-2.6.26/161-wg302v1_mac_plat_info.patch deleted file mode 100644 index 76066fb9a2..0000000000 --- a/target/linux/ixp4xx/patches-2.6.26/161-wg302v1_mac_plat_info.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/arch/arm/mach-ixp4xx/wg302v1-setup.c -+++ b/arch/arm/mach-ixp4xx/wg302v1-setup.c -@@ -77,9 +77,27 @@ - .resource = &wg302v1_uart_resource, - }; - -+/* Built-in 10/100 Ethernet MAC interfaces */ -+static struct eth_plat_info wg302_plat_eth[] = { -+ { -+ .phy = 30, -+ .rxq = 3, -+ .txreadyq = 20, -+ } -+}; -+ -+static struct platform_device wg302_eth[] = { -+ { -+ .name = "ixp4xx_eth", -+ .id = IXP4XX_ETH_NPEB, -+ .dev.platform_data = wg302_plat_eth, -+ } -+}; -+ - static struct platform_device *wg302v1_devices[] __initdata = { - &wg302v1_flash, - &wg302v1_uart, -+ &wg302_eth[0], - }; - - static void __init wg302v1_init(void) diff --git a/target/linux/ixp4xx/patches-2.6.26/162-wg302v1_mem_fixup.patch b/target/linux/ixp4xx/patches-2.6.26/162-wg302v1_mem_fixup.patch index f89698cca4..4eb1b7595f 100644 --- a/target/linux/ixp4xx/patches-2.6.26/162-wg302v1_mem_fixup.patch +++ b/target/linux/ixp4xx/patches-2.6.26/162-wg302v1_mem_fixup.patch @@ -1,7 +1,7 @@ --- a/arch/arm/mach-ixp4xx/wg302v1-setup.c +++ b/arch/arm/mach-ixp4xx/wg302v1-setup.c -@@ -100,6 +100,36 @@ - &wg302_eth[0], +@@ -99,6 +99,36 @@ + &wg302v1_eth[0], }; +static char wg302v1_mem_fixup[] __initdata = "mem=32M "; @@ -37,7 +37,7 @@ static void __init wg302v1_init(void) { ixp4xx_sys_init(); -@@ -118,6 +148,7 @@ +@@ -117,6 +147,7 @@ /* Maintainer: Imre Kaloz */ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, diff --git a/target/linux/ixp4xx/patches-2.6.26/180-tw5334_support.patch b/target/linux/ixp4xx/patches-2.6.26/180-tw5334_support.patch index c403a87fc9..2632f80e17 100644 --- a/target/linux/ixp4xx/patches-2.6.26/180-tw5334_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/180-tw5334_support.patch @@ -1,6 +1,6 @@ --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -150,6 +150,14 @@ +@@ -160,6 +160,14 @@ PrPCM1100 Processor Mezanine Module. For more information on this platform, see . @@ -276,8 +276,8 @@ */ if (machine_is_adi_coyote() || machine_is_gtwx5715() || machine_is_gateway7001() || machine_is_wg302v2() || -- machine_is_pronghorn_metro() || machine_is_wrt300nv2()) -+ machine_is_pronghorn_metro() || machine_is_wrt300nv2() || +- machine_is_pronghorn() || machine_is_pronghorn_metro() || machine_is_wrt300nv2()) ++ machine_is_pronghorn() || machine_is_pronghorn_metro() || machine_is_wrt300nv2() || + machine_is_tw5334()) uart_base = (volatile u32*) IXP4XX_UART2_BASE_PHYS; else diff --git a/target/linux/ixp4xx/patches-2.6.26/190-cambria_support.patch b/target/linux/ixp4xx/patches-2.6.26/190-cambria_support.patch index 5e682b0978..b63cb17aaf 100644 --- a/target/linux/ixp4xx/patches-2.6.26/190-cambria_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/190-cambria_support.patch @@ -15,7 +15,7 @@ config MACH_LOFT bool "Loft" depends on MACH_AVILA -@@ -200,7 +208,7 @@ +@@ -210,7 +218,7 @@ config CPU_IXP43X bool diff --git a/target/linux/ixp4xx/patches-2.6.26/204-npe_driver_ixp43x_support.patch b/target/linux/ixp4xx/patches-2.6.26/204-npe_driver_ixp43x_support.patch index 411e0cb428..932fae582f 100644 --- a/target/linux/ixp4xx/patches-2.6.26/204-npe_driver_ixp43x_support.patch +++ b/target/linux/ixp4xx/patches-2.6.26/204-npe_driver_ixp43x_support.patch @@ -1,3 +1,15 @@ +From cba5c286f3ea34ea4767fc00c705434a00fe2c37 Mon Sep 17 00:00:00 2001 +From: Imre Kaloz +Date: Thu, 26 Jun 2008 01:58:02 +0200 +Subject: [PATCH] Add support for the ethernet ports on IXP43x + +--- + arch/arm/mach-ixp4xx/ixp4xx_npe.c | 6 +++--- + drivers/net/arm/ixp4xx_eth.c | 13 +++++++++---- + include/asm-arm/arch-ixp4xx/cpu.h | 2 ++ + include/asm-arm/arch-ixp4xx/ixp4xx-regs.h | 7 ++++--- + 4 files changed, 18 insertions(+), 10 deletions(-) + --- a/arch/arm/mach-ixp4xx/ixp4xx_npe.c +++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c @@ -575,8 +575,8 @@ diff --git a/target/linux/ixp4xx/patches-2.6.26/400-dmabounce.patch b/target/linux/ixp4xx/patches-2.6.26/400-dmabounce.patch index 7dae291497..28230272ea 100644 --- a/target/linux/ixp4xx/patches-2.6.26/400-dmabounce.patch +++ b/target/linux/ixp4xx/patches-2.6.26/400-dmabounce.patch @@ -13,7 +13,7 @@ --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -236,6 +236,11 @@ +@@ -246,6 +246,11 @@ default y depends on PCI