From eb6f02a23faf48c703fbab3453bbcb14e22a2407 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 29 Sep 2008 01:06:14 +0000 Subject: ixp4xx: remove 2.6.25 patches SVN-Revision: 12788 --- .../030-ixp4xx_fsg_board_support.patch | 559 --------------------- 1 file changed, 559 deletions(-) delete mode 100644 target/linux/ixp4xx/patches-2.6.25/030-ixp4xx_fsg_board_support.patch (limited to 'target/linux/ixp4xx/patches-2.6.25/030-ixp4xx_fsg_board_support.patch') diff --git a/target/linux/ixp4xx/patches-2.6.25/030-ixp4xx_fsg_board_support.patch b/target/linux/ixp4xx/patches-2.6.25/030-ixp4xx_fsg_board_support.patch deleted file mode 100644 index 8fb7280..0000000 --- a/target/linux/ixp4xx/patches-2.6.25/030-ixp4xx_fsg_board_support.patch +++ /dev/null @@ -1,559 +0,0 @@ -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 @@ - CONFIG_MACH_NAS100D=y - CONFIG_MACH_DSMG600=y - CONFIG_ARCH_IXDP4XX=y -+CONFIG_MACH_FSG=y - CONFIG_CPU_IXP46X=y - CONFIG_CPU_IXP43X=y - CONFIG_MACH_GTWX5715=y -@@ -770,7 +771,7 @@ - # CONFIG_SATA_SIL24 is not set - # CONFIG_SATA_SIS is not set - # CONFIG_SATA_ULI is not set --# CONFIG_SATA_VIA is not set -+CONFIG_SATA_VIA=y - # CONFIG_SATA_VITESSE is not set - # CONFIG_SATA_INIC162X is not set - # CONFIG_PATA_ALI is not set -@@ -1143,7 +1144,7 @@ - # CONFIG_SENSORS_VIA686A is not set - # CONFIG_SENSORS_VT1211 is not set - # CONFIG_SENSORS_VT8231 is not set --# CONFIG_SENSORS_W83781D is not set -+CONFIG_SENSORS_W83781D=y - # CONFIG_SENSORS_W83791D is not set - # CONFIG_SENSORS_W83792D is not set - # CONFIG_SENSORS_W83793 is not set -@@ -1334,8 +1335,8 @@ - # - # LED drivers - # --# CONFIG_LEDS_IXP4XX is not set - CONFIG_LEDS_GPIO=y -+CONFIG_LEDS_FSG=y - - # - # LED Triggers -@@ -1367,7 +1368,7 @@ - # CONFIG_RTC_DRV_DS1672 is not set - # CONFIG_RTC_DRV_MAX6900 is not set - # CONFIG_RTC_DRV_RS5C372 is not set --# CONFIG_RTC_DRV_ISL1208 is not set -+CONFIG_RTC_DRV_ISL1208=y - CONFIG_RTC_DRV_X1205=y - CONFIG_RTC_DRV_PCF8563=y - # CONFIG_RTC_DRV_PCF8583 is not set ---- a/arch/arm/mach-ixp4xx/Kconfig -+++ b/arch/arm/mach-ixp4xx/Kconfig -@@ -125,6 +125,15 @@ - depends on ARCH_IXDP425 || MACH_IXDP465 || MACH_KIXRP435 - default y - -+config MACH_FSG -+ bool -+ prompt "Freecom FSG-3" -+ select PCI -+ help -+ Say 'Y' here if you want your kernel to support Freecom's -+ FSG-3 device. For more information on this platform, -+ see http://www.nslu2-linux.org/wiki/FSG3/HomePage -+ - # - # Certain registers and IRQs are only enabled if supporting IXP465 CPUs - # ---- a/arch/arm/mach-ixp4xx/Makefile -+++ b/arch/arm/mach-ixp4xx/Makefile -@@ -15,6 +15,7 @@ - obj-pci-$(CONFIG_MACH_DSMG600) += dsmg600-pci.o - obj-pci-$(CONFIG_MACH_GATEWAY7001) += gateway7001-pci.o - obj-pci-$(CONFIG_MACH_WG302V2) += wg302v2-pci.o -+obj-pci-$(CONFIG_MACH_FSG) += fsg-pci.o - - obj-y += common.o - -@@ -28,6 +29,7 @@ - obj-$(CONFIG_MACH_DSMG600) += dsmg600-setup.o - obj-$(CONFIG_MACH_GATEWAY7001) += gateway7001-setup.o - obj-$(CONFIG_MACH_WG302V2) += wg302v2-setup.o -+obj-$(CONFIG_MACH_FSG) += fsg-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/fsg-pci.c -@@ -0,0 +1,71 @@ -+/* -+ * arch/arch/mach-ixp4xx/fsg-pci.c -+ * -+ * FSG board-level PCI initialization -+ * -+ * Author: Rod Whitby -+ * Maintainer: http://www.nslu2-linux.org/ -+ * -+ * based on ixdp425-pci.c: -+ * Copyright (C) 2002 Intel Corporation. -+ * Copyright (C) 2003-2004 MontaVista Software, Inc. -+ * -+ * 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 -+ -+void __init fsg_pci_preinit(void) -+{ -+ set_irq_type(IRQ_FSG_PCI_INTA, IRQT_LOW); -+ set_irq_type(IRQ_FSG_PCI_INTB, IRQT_LOW); -+ set_irq_type(IRQ_FSG_PCI_INTC, IRQT_LOW); -+ -+ ixp4xx_pci_preinit(); -+} -+ -+static int __init fsg_map_irq(struct pci_dev *dev, u8 slot, u8 pin) -+{ -+ static int pci_irq_table[FSG_PCI_IRQ_LINES] = { -+ IRQ_FSG_PCI_INTC, -+ IRQ_FSG_PCI_INTB, -+ IRQ_FSG_PCI_INTA, -+ }; -+ -+ int irq = -1; -+ slot = slot - 11; -+ -+ if (slot >= 1 && slot <= FSG_PCI_MAX_DEV && -+ pin >= 1 && pin <= FSG_PCI_IRQ_LINES) -+ irq = pci_irq_table[(slot - 1)]; -+ printk(KERN_INFO "%s: Mapped slot %d pin %d to IRQ %d\n", -+ __func__, slot, pin, irq); -+ -+ return irq; -+} -+ -+struct hw_pci fsg_pci __initdata = { -+ .nr_controllers = 1, -+ .preinit = fsg_pci_preinit, -+ .swizzle = pci_std_swizzle, -+ .setup = ixp4xx_setup, -+ .scan = ixp4xx_scan_bus, -+ .map_irq = fsg_map_irq, -+}; -+ -+int __init fsg_pci_init(void) -+{ -+ if (machine_is_fsg()) -+ pci_common_init(&fsg_pci); -+ return 0; -+} -+ -+subsys_initcall(fsg_pci_init); ---- /dev/null -+++ b/arch/arm/mach-ixp4xx/fsg-setup.c -@@ -0,0 +1,276 @@ -+/* -+ * arch/arm/mach-ixp4xx/fsg-setup.c -+ * -+ * FSG board-setup -+ * -+ * Copyright (C) 2008 Rod Whitby -+ * -+ * based on ixdp425-setup.c: -+ * Copyright (C) 2003-2004 MontaVista Software, Inc. -+ * based on nslu2-power.c -+ * Copyright (C) 2005 Tower Technologies -+ * -+ * Author: Rod Whitby -+ * Maintainers: http://www.nslu2-linux.org/ -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+ -+static struct flash_platform_data fsg_flash_data = { -+ .map_name = "cfi_probe", -+ .width = 2, -+}; -+ -+static struct resource fsg_flash_resource = { -+ .flags = IORESOURCE_MEM, -+}; -+ -+static struct platform_device fsg_flash = { -+ .name = "IXP4XX-Flash", -+ .id = 0, -+ .dev = { -+ .platform_data = &fsg_flash_data, -+ }, -+ .num_resources = 1, -+ .resource = &fsg_flash_resource, -+}; -+ -+static struct i2c_gpio_platform_data fsg_i2c_gpio_data = { -+ .sda_pin = FSG_SDA_PIN, -+ .scl_pin = FSG_SCL_PIN, -+}; -+ -+static struct platform_device fsg_i2c_gpio = { -+ .name = "i2c-gpio", -+ .id = 0, -+ .dev = { -+ .platform_data = &fsg_i2c_gpio_data, -+ }, -+}; -+ -+static struct i2c_board_info __initdata fsg_i2c_board_info [] = { -+ { -+ I2C_BOARD_INFO("rtc-isl1208", 0x6f), -+ }, -+}; -+ -+static struct resource fsg_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 fsg_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 fsg_uart = { -+ .name = "serial8250", -+ .id = PLAT8250_DEV_PLATFORM, -+ .dev = { -+ .platform_data = fsg_uart_data, -+ }, -+ .num_resources = ARRAY_SIZE(fsg_uart_resources), -+ .resource = fsg_uart_resources, -+}; -+ -+static struct platform_device fsg_leds = { -+ .name = "fsg-led", -+ .id = -1, -+}; -+ -+/* Built-in 10/100 Ethernet MAC interfaces */ -+static struct eth_plat_info fsg_plat_eth[] = { -+ { -+ .phy = 5, -+ .rxq = 3, -+ .txreadyq = 20, -+ }, { -+ .phy = 4, -+ .rxq = 4, -+ .txreadyq = 21, -+ } -+}; -+ -+static struct platform_device fsg_eth[] = { -+ { -+ .name = "ixp4xx_eth", -+ .id = IXP4XX_ETH_NPEB, -+ .dev = { -+ .platform_data = fsg_plat_eth, -+ }, -+ }, { -+ .name = "ixp4xx_eth", -+ .id = IXP4XX_ETH_NPEC, -+ .dev = { -+ .platform_data = fsg_plat_eth + 1, -+ }, -+ } -+}; -+ -+static struct platform_device *fsg_devices[] __initdata = { -+ &fsg_i2c_gpio, -+ &fsg_flash, -+ &fsg_leds, -+ &fsg_eth[0], -+ &fsg_eth[1], -+}; -+ -+static irqreturn_t fsg_power_handler(int irq, void *dev_id) -+{ -+ /* Signal init to do the ctrlaltdel action, this will bypass init if -+ * it hasn't started and do a kernel_restart. -+ */ -+ ctrl_alt_del(); -+ -+ return IRQ_HANDLED; -+} -+ -+static irqreturn_t fsg_reset_handler(int irq, void *dev_id) -+{ -+ /* This is the paper-clip reset which does an emergency reboot. */ -+ printk(KERN_INFO "Restarting system.\n"); -+ machine_restart(NULL); -+ -+ /* This should never be reached. */ -+ return IRQ_HANDLED; -+} -+ -+static void __init fsg_init(void) -+{ -+ DECLARE_MAC_BUF(mac_buf); -+ uint8_t __iomem *f; -+ int i; -+ -+ ixp4xx_sys_init(); -+ -+ fsg_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); -+ fsg_flash_resource.end = -+ IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; -+ -+ *IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; -+ *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; -+ -+ /* Configure CS2 for operation, 8bit and writable */ -+ *IXP4XX_EXP_CS2 = 0xbfff0002; -+ -+ i2c_register_board_info(0, fsg_i2c_board_info, -+ ARRAY_SIZE(fsg_i2c_board_info)); -+ -+ /* This is only useful on a modified machine, but it is valuable -+ * to have it first in order to see debug messages, and so that -+ * it does *not* get removed if platform_add_devices fails! -+ */ -+ (void)platform_device_register(&fsg_uart); -+ -+ platform_add_devices(fsg_devices, ARRAY_SIZE(fsg_devices)); -+ -+ if (request_irq(gpio_to_irq(FSG_RB_GPIO), &fsg_reset_handler, -+ IRQF_DISABLED | IRQF_TRIGGER_LOW, -+ "FSG reset button", NULL) < 0) { -+ -+ printk(KERN_DEBUG "Reset Button IRQ %d not available\n", -+ gpio_to_irq(FSG_RB_GPIO)); -+ } -+ -+ if (request_irq(gpio_to_irq(FSG_SB_GPIO), &fsg_power_handler, -+ IRQF_DISABLED | IRQF_TRIGGER_LOW, -+ "FSG power button", NULL) < 0) { -+ -+ printk(KERN_DEBUG "Power Button IRQ %d not available\n", -+ gpio_to_irq(FSG_SB_GPIO)); -+ } -+ -+ /* -+ * Map in a portion of the flash and read the MAC addresses. -+ * Since it is stored in BE in the flash itself, we need to -+ * byteswap it if we're in LE mode. -+ */ -+ f = ioremap(IXP4XX_EXP_BUS_BASE(0), 0x400000); -+ if (f) { -+#ifdef __ARMEB__ -+ for (i = 0; i < 6; i++) { -+ fsg_plat_eth[0].hwaddr[i] = readb(f + 0x3C0422 + i); -+ fsg_plat_eth[1].hwaddr[i] = readb(f + 0x3C043B + i); -+ } -+#else -+ -+ /* -+ Endian-swapped reads from unaligned addresses are -+ required to extract the two MACs from the big-endian -+ Redboot config area in flash. -+ */ -+ -+ fsg_plat_eth[0].hwaddr[0] = readb(f + 0x3C0421); -+ fsg_plat_eth[0].hwaddr[1] = readb(f + 0x3C0420); -+ fsg_plat_eth[0].hwaddr[2] = readb(f + 0x3C0427); -+ fsg_plat_eth[0].hwaddr[3] = readb(f + 0x3C0426); -+ fsg_plat_eth[0].hwaddr[4] = readb(f + 0x3C0425); -+ fsg_plat_eth[0].hwaddr[5] = readb(f + 0x3C0424); -+ -+ fsg_plat_eth[1].hwaddr[0] = readb(f + 0x3C0439); -+ fsg_plat_eth[1].hwaddr[1] = readb(f + 0x3C043F); -+ fsg_plat_eth[1].hwaddr[2] = readb(f + 0x3C043E); -+ fsg_plat_eth[1].hwaddr[3] = readb(f + 0x3C043D); -+ fsg_plat_eth[1].hwaddr[4] = readb(f + 0x3C043C); -+ fsg_plat_eth[1].hwaddr[5] = readb(f + 0x3C0443); -+#endif -+ iounmap(f); -+ } -+ printk(KERN_INFO "FSG: Using MAC address %s for port 0\n", -+ print_mac(mac_buf, fsg_plat_eth[0].hwaddr)); -+ printk(KERN_INFO "FSG: Using MAC address %s for port 1\n", -+ print_mac(mac_buf, fsg_plat_eth[1].hwaddr)); -+ -+} -+ -+MACHINE_START(FSG, "Freecom FSG-3") -+ /* Maintainer: www.nslu2-linux.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 = fsg_init, -+MACHINE_END -+ ---- /dev/null -+++ b/include/asm-arm/arch-ixp4xx/fsg.h -@@ -0,0 +1,50 @@ -+/* -+ * include/asm-arm/arch-ixp4xx/fsg.h -+ * -+ * Freecom FSG-3 platform specific definitions -+ * -+ * Author: Rod Whitby -+ * Author: Tomasz Chmielewski -+ * Maintainers: http://www.nslu2-linux.org -+ * -+ * Based on coyote.h by -+ * Copyright 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. -+ */ -+ -+#ifndef __ASM_ARCH_HARDWARE_H__ -+#error "Do not include this directly, instead #include " -+#endif -+ -+#define FSG_SDA_PIN 12 -+#define FSG_SCL_PIN 13 -+ -+/* -+ * FSG PCI IRQs -+ */ -+#define FSG_PCI_MAX_DEV 3 -+#define FSG_PCI_IRQ_LINES 3 -+ -+ -+/* PCI controller GPIO to IRQ pin mappings */ -+#define FSG_PCI_INTA_PIN 6 -+#define FSG_PCI_INTB_PIN 7 -+#define FSG_PCI_INTC_PIN 5 -+ -+/* Buttons */ -+ -+#define FSG_SB_GPIO 4 /* sync button */ -+#define FSG_RB_GPIO 9 /* reset button */ -+#define FSG_UB_GPIO 10 /* usb button */ -+ -+/* LEDs */ -+ -+#define FSG_LED_WLAN_BIT 0 -+#define FSG_LED_WAN_BIT 1 -+#define FSG_LED_SATA_BIT 2 -+#define FSG_LED_USB_BIT 4 -+#define FSG_LED_RING_BIT 5 -+#define FSG_LED_SYNC_BIT 7 ---- a/include/asm-arm/arch-ixp4xx/hardware.h -+++ b/include/asm-arm/arch-ixp4xx/hardware.h -@@ -45,5 +45,6 @@ - #include "nslu2.h" - #include "nas100d.h" - #include "dsmg600.h" -+#include "fsg.h" - - #endif /* _ASM_ARCH_HARDWARE_H */ ---- a/include/asm-arm/arch-ixp4xx/irqs.h -+++ b/include/asm-arm/arch-ixp4xx/irqs.h -@@ -128,4 +128,11 @@ - #define IRQ_DSMG600_PCI_INTE IRQ_IXP4XX_GPIO7 - #define IRQ_DSMG600_PCI_INTF IRQ_IXP4XX_GPIO6 - -+/* -+ * Freecom FSG-3 Board IRQs -+ */ -+#define IRQ_FSG_PCI_INTA IRQ_IXP4XX_GPIO6 -+#define IRQ_FSG_PCI_INTB IRQ_IXP4XX_GPIO7 -+#define IRQ_FSG_PCI_INTC IRQ_IXP4XX_GPIO5 -+ - #endif -- cgit v1.1