From: Luka Perkov Date: Wed, 2 Oct 2013 00:33:45 +0000 (+0000) Subject: kirkwood: prepare for 3.10 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=7d1e5ae918ad606b6990d700368f4fe18c845773;p=openwrt%2Fstaging%2Fjow.git kirkwood: prepare for 3.10 Signed-off-by: Luka Perkov SVN-Revision: 38279 --- diff --git a/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/goflexhome-setup.c b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/goflexhome-setup.c new file mode 100644 index 0000000000..84daeefe6b --- /dev/null +++ b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/goflexhome-setup.c @@ -0,0 +1,123 @@ +/* + * arch/arm/mach-kirkwood/goflexhome-setup.c + * + * Seagate GoFlex Home Setup + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" +#include "mpp.h" + +static struct mtd_partition goflexhome_nand_parts[] = { + { + .name = "u-boot", + .offset = 0, + .size = SZ_1M + }, { + .name = "uImage", + .offset = MTDPART_OFS_NXTBLK, + .size = SZ_2M + SZ_4M + }, { + .name = "root", + .offset = MTDPART_OFS_NXTBLK, + .size = MTDPART_SIZ_FULL + }, +}; + +static struct mv643xx_eth_platform_data goflexhome_ge00_data = { + .phy_addr = MV643XX_ETH_PHY_ADDR(0), +}; + +static struct mv_sata_platform_data goflexhome_sata_data = { + .n_ports = 1, +}; + +static struct gpio_led goflexhome_led_pins[] = { + { + .name = "status:green:health", + .default_trigger = "default-on", + .gpio = 46, + .active_low = 1, + }, + { + .name = "status:orange:fault", + .default_trigger = "none", + .gpio = 47, + .active_low = 1, + }, + { + .name = "status:white:misc", + .default_trigger = "none", + .gpio = 40, + .active_low = 0, + } +}; + +static struct gpio_led_platform_data goflexhome_led_data = { + .leds = goflexhome_led_pins, + .num_leds = ARRAY_SIZE(goflexhome_led_pins), +}; + +static struct platform_device goflexhome_leds = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &goflexhome_led_data, + } +}; + +static unsigned int goflexhome_mpp_config[] __initdata = { + MPP29_GPIO, /* USB Power Enable */ + MPP47_GPIO, /* LED Orange */ + MPP46_GPIO, /* LED Green */ + MPP40_GPIO, /* LED White */ + 0 +}; + +static void __init goflexhome_init(void) +{ + /* + * Basic setup. Needs to be called early. + */ + kirkwood_init(); + + /* setup gpio pin select */ + kirkwood_mpp_conf(goflexhome_mpp_config); + + kirkwood_uart0_init(); + kirkwood_nand_init(ARRAY_AND_SIZE(goflexhome_nand_parts), 40); + + if (gpio_request(29, "USB Power Enable") != 0 || + gpio_direction_output(29, 1) != 0) + printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n"); + kirkwood_ehci_init(); + kirkwood_ge00_init(&goflexhome_ge00_data); + kirkwood_sata_init(&goflexhome_sata_data); + + platform_device_register(&goflexhome_leds); +} + +MACHINE_START(GOFLEXHOME, "Seagate GoFlex Home") + /* Maintainer: Peter Carmichael */ + .atag_offset = 0x100, + .init_machine = goflexhome_init, + .map_io = kirkwood_map_io, + .init_early = kirkwood_init_early, + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, + .restart = kirkwood_restart, +MACHINE_END diff --git a/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/goflexnet-setup.c b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/goflexnet-setup.c new file mode 100644 index 0000000000..cd9dc9ef11 --- /dev/null +++ b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/goflexnet-setup.c @@ -0,0 +1,176 @@ +/* + * arch/arm/mach-kirkwood/goflexnet-setup.c + * + * Seagate GoFlex Net Setup + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" +#include "mpp.h" + +static struct mtd_partition goflexnet_nand_parts[] = { + { + .name = "u-boot", + .offset = 0, + .size = SZ_1M + }, { + .name = "uImage", + .offset = MTDPART_OFS_NXTBLK, + .size = SZ_4M + }, { + .name = "rootfs", + .offset = MTDPART_OFS_NXTBLK, + .size = SZ_32M + }, { + .name = "data", + .offset = MTDPART_OFS_NXTBLK, + .size = MTDPART_SIZ_FULL + }, +}; + +static struct mv643xx_eth_platform_data goflexnet_ge00_data = { + .phy_addr = MV643XX_ETH_PHY_ADDR(0), +}; + +static struct mv_sata_platform_data goflexnet_sata_data = { + .n_ports = 2, +}; + +static struct gpio_led goflexnet_led_pins[] = { + { + .name = "status:green:health", + .default_trigger = "default-on", + .gpio = 46, // 0x4000 + .active_low = 1, + }, + { + .name = "status:orange:fault", + .default_trigger = "none", + .gpio = 47, // 0x8000 + .active_low = 1, + }, + { + .name = "status:white:left0", + .default_trigger = "none", + .gpio = 42, // 0x0400 + .active_low = 0, + }, + { + .name = "status:white:left1", + .default_trigger = "none", + .gpio = 43, // 0x0800 + .active_low = 0, + }, + { + .name = "status:white:left2", + .default_trigger = "none", + .gpio = 44, // 0x1000 + .active_low = 0, + }, + { + .name = "status:white:left3", + .default_trigger = "none", + .gpio = 45, // 0x2000 + .active_low = 0, + }, + { + .name = "status:white:right0", + .default_trigger = "none", + .gpio = 38, // 0x0040 + .active_low = 0, + }, + { + .name = "status:white:right1", + .default_trigger = "none", + .gpio = 39, // 0x0080 + .active_low = 0, + }, + { + .name = "status:white:right2", + .default_trigger = "none", + .gpio = 40, // 0x0100 + .active_low = 0, + }, + { + .name = "status:white:right3", + .default_trigger = "none", + .gpio = 41, // 0x0200 + .active_low = 0, + } +}; + +static struct gpio_led_platform_data goflexnet_led_data = { + .leds = goflexnet_led_pins, + .num_leds = ARRAY_SIZE(goflexnet_led_pins), +}; + +static struct platform_device goflexnet_leds = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &goflexnet_led_data, + } +}; + +static unsigned int goflexnet_mpp_config[] __initdata = { + MPP29_GPIO, /* USB Power Enable */ + MPP47_GPIO, /* LED Orange */ + MPP46_GPIO, /* LED Green */ + MPP45_GPIO, /* LED Left Capacity 3 */ + MPP44_GPIO, /* LED Left Capacity 2 */ + MPP43_GPIO, /* LED Left Capacity 1 */ + MPP42_GPIO, /* LED Left Capacity 0 */ + MPP41_GPIO, /* LED Right Capacity 3 */ + MPP40_GPIO, /* LED Right Capacity 2 */ + MPP39_GPIO, /* LED Right Capacity 1 */ + MPP38_GPIO, /* LED Right Capacity 0 */ + 0 +}; + +static void __init goflexnet_init(void) +{ + /* + * Basic setup. Needs to be called early. + */ + kirkwood_init(); + + /* setup gpio pin select */ + kirkwood_mpp_conf(goflexnet_mpp_config); + + kirkwood_uart0_init(); + kirkwood_nand_init(ARRAY_AND_SIZE(goflexnet_nand_parts), 40); + + if (gpio_request(29, "USB Power Enable") != 0 || + gpio_direction_output(29, 1) != 0) + printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n"); + kirkwood_ehci_init(); + kirkwood_ge00_init(&goflexnet_ge00_data); + kirkwood_sata_init(&goflexnet_sata_data); + + platform_device_register(&goflexnet_leds); +} + +MACHINE_START(GOFLEXNET, "Seagate GoFlex Net") + /* Maintainer: Peter Carmichael */ + .atag_offset = 0x100, + .init_machine = goflexnet_init, + .map_io = kirkwood_map_io, + .init_early = kirkwood_init_early, + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, + .restart = kirkwood_restart, +MACHINE_END diff --git a/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/iconnect-setup.c b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/iconnect-setup.c new file mode 100644 index 0000000000..4e8d192bb8 --- /dev/null +++ b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/iconnect-setup.c @@ -0,0 +1,190 @@ +/* + * arch/arm/mach-kirkwood/iconnect-setup.c + * + * Iomega iConnect Wireless + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" +#include "mpp.h" + +static struct mtd_partition iconnect_nand_parts[] = { + { + .name = "u-boot", + .offset = 0, + .size = SZ_1M + }, { + .name = "uImage", + .offset = MTDPART_OFS_NXTBLK, + .size = SZ_1M + SZ_2M + }, { + .name = "rootfs", + .offset = MTDPART_OFS_NXTBLK, + .size = SZ_32M, + }, { + .name = "data", + .offset = MTDPART_OFS_NXTBLK, + .size = MTDPART_SIZ_FULL + }, +}; + +static struct mv643xx_eth_platform_data iconnect_ge00_data = { + .phy_addr = MV643XX_ETH_PHY_ADDR(11), +}; + +static struct gpio_led iconnect_led_pins[] = { + { + .name = "iconnect:blue:power", + .default_trigger = "default-on", + .gpio = 42, + }, + { + .name = "iconnect:red:power", + .gpio = 43, + }, + { + .name = "iconnect:blue:usb1", + .gpio = 44, + }, + { + .name = "iconnect:blue:usb2", + .gpio = 45, + }, + { + .name = "iconnect:blue:usb3", + .gpio = 46, + }, + { + .name = "iconnect:blue:usb4", + .gpio = 47, + }, + { + .name = "iconnect:blue:otb", + .gpio = 48, + }, +}; + +static struct gpio_led_platform_data iconnect_led_data = { + .leds = iconnect_led_pins, + .num_leds = ARRAY_SIZE(iconnect_led_pins), +}; + +static struct platform_device iconnect_leds = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &iconnect_led_data, + } +}; + +#define ICONNECT_GPIO_KEY_RESET 12 +#define ICONNECT_GPIO_KEY_OTB 35 + +#define ICONNECT_SW_RESET 0x00 +#define ICONNECT_SW_OTB 0x01 + +static struct gpio_keys_button iconnect_buttons[] = { + { + .type = EV_SW, + .code = ICONNECT_SW_RESET, + .gpio = ICONNECT_GPIO_KEY_RESET, + .desc = "Reset Button", + .active_low = 1, + .debounce_interval = 100, + }, + { + .type = EV_SW, + .code = ICONNECT_SW_OTB, + .gpio = ICONNECT_GPIO_KEY_OTB, + .desc = "OTB Button", + .active_low = 1, + .debounce_interval = 100, + }, +}; + +static struct gpio_keys_platform_data iconnect_button_data = { + .buttons = iconnect_buttons, + .nbuttons = ARRAY_SIZE(iconnect_buttons), +}; + +static struct platform_device iconnect_button_device = { + .name = "gpio-keys", + .id = -1, + .num_resources = 0, + .dev = { + .platform_data = &iconnect_button_data, + }, +}; + +static unsigned int iconnect_mpp_config[] __initdata = { + MPP12_GPIO, /*Input for reset button*/ + MPP35_GPIO, /*Input for OTB button*/ + MPP42_GPIO, + MPP43_GPIO, + MPP44_GPIO, + MPP45_GPIO, + MPP46_GPIO, + MPP47_GPIO, + MPP48_GPIO, + 0 +}; + +static void __init iconnect_init(void) +{ + u32 dev, rev; + + /* + * Basic setup. Needs to be called early. + */ + kirkwood_init(); + kirkwood_mpp_conf(iconnect_mpp_config); + + kirkwood_nand_init(ARRAY_AND_SIZE(iconnect_nand_parts), 25); + kirkwood_ehci_init(); + + kirkwood_ge00_init(&iconnect_ge00_data); + kirkwood_pcie_id(&dev, &rev); + + kirkwood_uart0_init(); + kirkwood_i2c_init(); + + platform_device_register(&iconnect_leds); + platform_device_register(&iconnect_button_device); +} + +static int __init iconnect_pci_init(void) +{ + if (machine_is_iconnect()) + kirkwood_pcie_init(KW_PCIE0); + + return 0; +} +subsys_initcall(iconnect_pci_init); + + +MACHINE_START(ICONNECT, "Iomega iConnect Wireless") + .atag_offset = 0x100, + .init_machine = iconnect_init, + .map_io = kirkwood_map_io, + .init_early = kirkwood_init_early, + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, + .restart = kirkwood_restart, +MACHINE_END diff --git a/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/nas6210-setup.c b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/nas6210-setup.c new file mode 100644 index 0000000000..00c8531bc0 --- /dev/null +++ b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/nas6210-setup.c @@ -0,0 +1,190 @@ +/* + * arch/arm/mach-kirkwood/nas6210-setup.c + * + * Raidsonic ICYBOX NAS6210 Board Setup + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" +#include "mpp.h" + +#define NAS6210_GPIO_POWER_OFF 24 + +static struct mtd_partition nas6210_nand_parts[] = { + { + .name = "uboot", + .offset = 0, + .size = SZ_512K + }, { + .name = "uboot_env", + .offset = MTDPART_OFS_NXTBLK, + .size = SZ_128K + }, { + .name = "kernel", + .offset = MTDPART_OFS_NXTBLK, + .size = 3 * SZ_1M + }, { + .name = "rootfs", + .offset = MTDPART_OFS_NXTBLK, + .size = MTDPART_SIZ_FULL + }, +}; + +static struct mv643xx_eth_platform_data nas6210_ge00_data = { + .phy_addr = MV643XX_ETH_PHY_ADDR(8), +}; + +static struct mv_sata_platform_data nas6210_sata_data = { + .n_ports = 2, +}; + +static struct gpio_led nas6210_led_pins[] = { + { + .name = "status:green:power", + .default_trigger = "default-on", + .gpio = 25, + .active_low = 0, + }, + { + .name = "status:red:power", + .default_trigger = "none", + .gpio = 22, + .active_low = 0, + }, + { + .name = "status:red:usb_copy", + .default_trigger = "none", + .gpio = 27, + .active_low = 0, + }, +}; + +static struct gpio_led_platform_data nas6210_led_data = { + .leds = nas6210_led_pins, + .num_leds = ARRAY_SIZE(nas6210_led_pins), +}; + +static struct platform_device nas6210_leds = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &nas6210_led_data, + } +}; + +static struct gpio_keys_button nas6210_buttons[] = { + { + .code = KEY_COPY, + .gpio = 29, + .desc = "USB Copy", + .active_low = 1, + }, + { + .code = KEY_RESTART, + .gpio = 28, + .desc = "Reset", + .active_low = 1, + }, +}; + +static struct gpio_keys_platform_data nas6210_button_data = { + .buttons = nas6210_buttons, + .nbuttons = ARRAY_SIZE(nas6210_buttons), +}; + +static struct platform_device nas6210_button_device = { + .name = "gpio-keys", + .id = -1, + .num_resources = 0, + .dev = { + .platform_data = &nas6210_button_data, + } +}; + +static unsigned int nas6210_mpp_config[] __initdata = { + MPP0_NF_IO2, + MPP1_NF_IO3, + MPP2_NF_IO4, + MPP3_NF_IO5, + MPP4_NF_IO6, + MPP5_NF_IO7, + MPP18_NF_IO0, + MPP19_NF_IO1, + MPP22_GPIO, /* Power LED red */ + MPP24_GPIO, /* Power off device */ + MPP25_GPIO, /* Power LED green */ + MPP27_GPIO, /* USB transfer LED */ + MPP28_GPIO, /* Reset button */ + MPP29_GPIO, /* USB Copy button */ + 0 +}; + +static void nas6210_power_off(void) +{ + gpio_set_value(NAS6210_GPIO_POWER_OFF, 1); +} + +static void __init nas6210_init(void) +{ + /* + * Basic setup. Needs to be called early. + */ + kirkwood_init(); + kirkwood_mpp_conf(nas6210_mpp_config); + + kirkwood_nand_init(ARRAY_AND_SIZE(nas6210_nand_parts), 25); + kirkwood_ehci_init(); + kirkwood_ge00_init(&nas6210_ge00_data); + kirkwood_sata_init(&nas6210_sata_data); + kirkwood_uart0_init(); + platform_device_register(&nas6210_leds); + platform_device_register(&nas6210_button_device); + if (gpio_request(NAS6210_GPIO_POWER_OFF, "power-off") == 0 && + gpio_direction_output(NAS6210_GPIO_POWER_OFF, 0) == 0) + pm_power_off = nas6210_power_off; + else + pr_err("nas6210: failed to configure power-off GPIO\n"); +} + +static int __init nas6210_pci_init(void) +{ + if (machine_is_nas6210()) { + u32 dev, rev; + + kirkwood_pcie_id(&dev, &rev); + if (dev == MV88F6282_DEV_ID) + kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0); + else + kirkwood_pcie_init(KW_PCIE0); + } + + return 0; +} +subsys_initcall(nas6210_pci_init); + +MACHINE_START(NAS6210, "RaidSonic ICY BOX IB-NAS6210") + /* Maintainer: */ + .atag_offset = 0x100, + .init_machine = nas6210_init, + .map_io = kirkwood_map_io, + .init_early = kirkwood_init_early, + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, + .restart = kirkwood_restart, +MACHINE_END diff --git a/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/nsa-310-setup.c b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/nsa-310-setup.c new file mode 100644 index 0000000000..15dc526a8b --- /dev/null +++ b/target/linux/kirkwood/files-3.3/arch/arm/mach-kirkwood/nsa-310-setup.c @@ -0,0 +1,273 @@ +/* + * arch/arm/mach-kirkwood/nsa-310-setup.c + * + * ZyXEL NSA-310 Setup + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "common.h" +#include "mpp.h" + +#define NSA310_GPIO_LED_ESATA_GREEN 12 +#define NSA310_GPIO_LED_ESATA_RED 13 +#define NSA310_GPIO_LED_USB_GREEN 15 +#define NSA310_GPIO_LED_USB_RED 16 +#define NSA310_GPIO_USB_POWER_OFF 21 +#define NSA310_GPIO_LED_SYS_GREEN 28 +#define NSA310_GPIO_LED_SYS_RED 29 +#define NSA310_GPIO_KEY_RESTART 36 +#define NSA310_GPIO_KEY_COPY 37 +#define NSA310_GPIO_LED_COPY_GREEN 39 +#define NSA310_GPIO_LED_COPY_RED 40 +#define NSA310_GPIO_LED_HDD_GREEN 41 +#define NSA310_GPIO_LED_HDD_RED 42 +#define NSA310_GPIO_BUZZER 44 +#define NSA310_GPIO_KEY_POWER 46 +#define NSA310_GPIO_POWER_OFF 48 + + +static unsigned int nsa310_mpp_config[] __initdata = { + MPP12_GPIO, + MPP13_GPIO, + MPP15_GPIO, + MPP16_GPIO, + MPP21_GPIO, + MPP28_GPIO, + MPP29_GPIO, + MPP36_GPIO, + MPP37_GPIO, + MPP39_GPIO, + MPP40_GPIO, + MPP41_GPIO, + MPP42_GPIO, + MPP44_GPIO, + MPP46_GPIO, + MPP48_GPIO, + 0 +}; + +static struct mtd_partition nsa310_mtd_parts[] = { + { + .name = "uboot", + .offset = 0, + .size = 0x100000, + .mask_flags = MTD_WRITEABLE, + }, { + .name = "uboot_env", + .offset = MTDPART_OFS_NXTBLK, + .size = 0x80000, + }, { + .name = "key_store", + .offset = MTDPART_OFS_NXTBLK, + .size = 0x80000, + }, { + .name = "info", + .offset = MTDPART_OFS_NXTBLK, + .size = 0x80000, + }, { + .name = "etc", + .offset = MTDPART_OFS_NXTBLK, + .size = 0xa00000, + }, { + .name = "kernel_1", + .offset = MTDPART_OFS_NXTBLK, + .size = 0xa00000, + }, { + .name = "rootfs1", + .offset = MTDPART_OFS_NXTBLK, + .size = 0x2fc0000, + }, { + .name = "kernel_2", + .offset = MTDPART_OFS_NXTBLK, + .size = 0xa00000, + }, { + .name = "rootfs2", + .offset = MTDPART_OFS_NXTBLK, + .size = 0x2fc0000, + }, +}; + +static struct gpio_led nsa310_leds[] = { + { + .name = "nsa310:green:sys", + .gpio = NSA310_GPIO_LED_SYS_GREEN, + }, { + .name = "nsa310:red:sys", + .gpio = NSA310_GPIO_LED_SYS_RED, + }, { + .name = "nsa310:green:hdd", + .gpio = NSA310_GPIO_LED_HDD_GREEN, + }, { + .name = "nsa310:red:hdd", + .gpio = NSA310_GPIO_LED_HDD_RED, + }, { + .name = "nsa310:green:esata", + .gpio = NSA310_GPIO_LED_ESATA_GREEN, + }, { + .name = "nsa310:red:esata", + .gpio = NSA310_GPIO_LED_ESATA_RED, + }, { + .name = "nsa310:green:usb", + .gpio = NSA310_GPIO_LED_USB_GREEN, + }, { + .name = "nsa310:red:usb", + .gpio = NSA310_GPIO_LED_USB_RED, + }, { + .name = "nsa310:green:copy", + .gpio = NSA310_GPIO_LED_COPY_GREEN, + }, { + .name = "nsa310:red:copy", + .gpio = NSA310_GPIO_LED_COPY_RED, + }, +}; + +static struct gpio_led_platform_data nsa310_leds_data = { + .leds = nsa310_leds, + .num_leds = ARRAY_SIZE(nsa310_leds), +}; + +static struct platform_device nsa310_leds_device = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &nsa310_leds_data, + } +}; + +static struct gpio_keys_button nsa310_buttons[] = { + { + .desc = "Power Button", + .code = KEY_POWER, + .type = EV_KEY, + .gpio = NSA310_GPIO_KEY_POWER, + .debounce_interval = 1000, + }, { + .desc = "Copy Button", + .code = KEY_COPY, + .type = EV_KEY, + .gpio = NSA310_GPIO_KEY_COPY, + .active_low = 1, + .debounce_interval = 1000, + }, { + .desc = "Reset Button", + .code = KEY_RESTART, + .type = EV_KEY, + .gpio = NSA310_GPIO_KEY_RESTART, + .active_low = 1, + .debounce_interval = 1000, + }, +}; + +static struct gpio_keys_platform_data nsa310_keys_data = { + .buttons = nsa310_buttons, + .nbuttons = ARRAY_SIZE(nsa310_buttons), +}; + +static struct platform_device nsa310_keys_device = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &nsa310_keys_data, + } +}; + +static struct i2c_board_info __initdata nsa310_i2c_info[] = { + { I2C_BOARD_INFO("adt7476", 0x2e) }, +}; + +static struct mv_sata_platform_data nsa310_sata_data = { + .n_ports = 2, +}; + +static void nsa310_power_off(void) +{ + gpio_set_value(NSA310_GPIO_POWER_OFF, 1); +} + +static int __init nsa310_gpio_request(unsigned int gpio, unsigned long flags, + const char *label) +{ + int err; + + err = gpio_request_one(gpio, flags, label); + if (err) + pr_err("NSA-310: can't setup GPIO%u (%s), err=%d\n", + gpio, label, err); + + return err; +} + +static void __init nsa310_gpio_init(void) +{ + int err; + + err = nsa310_gpio_request(NSA310_GPIO_POWER_OFF, GPIOF_OUT_INIT_LOW, + "Power Off"); + if (!err) + pm_power_off = nsa310_power_off; + + nsa310_gpio_request(NSA310_GPIO_USB_POWER_OFF, GPIOF_OUT_INIT_LOW, + "USB Power Off"); +} + +static void __init nsa310_init(void) +{ + u32 dev, rev; + + kirkwood_init(); + kirkwood_mpp_conf(nsa310_mpp_config); + + nsa310_gpio_init(); + + kirkwood_nand_init(ARRAY_AND_SIZE(nsa310_mtd_parts), 35); + kirkwood_ehci_init(); + + kirkwood_pcie_id(&dev, &rev); + + kirkwood_sata_init(&nsa310_sata_data); + kirkwood_uart0_init(); + + i2c_register_board_info(0, ARRAY_AND_SIZE(nsa310_i2c_info)); + kirkwood_i2c_init(); + + platform_device_register(&nsa310_leds_device); + platform_device_register(&nsa310_keys_device); +} + +static int __init nsa310_pci_init(void) +{ + if (machine_is_nsa310()) + kirkwood_pcie_init(KW_PCIE0); + + return 0; +} +subsys_initcall(nsa310_pci_init); + +MACHINE_START(NSA310, "ZyXEL NSA-310") + .atag_offset = 0x100, + .init_machine = nsa310_init, + .map_io = kirkwood_map_io, + .init_early = kirkwood_init_early, + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, + .restart = kirkwood_restart, +MACHINE_END diff --git a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/goflexhome-setup.c b/target/linux/kirkwood/files/arch/arm/mach-kirkwood/goflexhome-setup.c deleted file mode 100644 index 84daeefe6b..0000000000 --- a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/goflexhome-setup.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * arch/arm/mach-kirkwood/goflexhome-setup.c - * - * Seagate GoFlex Home Setup - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "common.h" -#include "mpp.h" - -static struct mtd_partition goflexhome_nand_parts[] = { - { - .name = "u-boot", - .offset = 0, - .size = SZ_1M - }, { - .name = "uImage", - .offset = MTDPART_OFS_NXTBLK, - .size = SZ_2M + SZ_4M - }, { - .name = "root", - .offset = MTDPART_OFS_NXTBLK, - .size = MTDPART_SIZ_FULL - }, -}; - -static struct mv643xx_eth_platform_data goflexhome_ge00_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(0), -}; - -static struct mv_sata_platform_data goflexhome_sata_data = { - .n_ports = 1, -}; - -static struct gpio_led goflexhome_led_pins[] = { - { - .name = "status:green:health", - .default_trigger = "default-on", - .gpio = 46, - .active_low = 1, - }, - { - .name = "status:orange:fault", - .default_trigger = "none", - .gpio = 47, - .active_low = 1, - }, - { - .name = "status:white:misc", - .default_trigger = "none", - .gpio = 40, - .active_low = 0, - } -}; - -static struct gpio_led_platform_data goflexhome_led_data = { - .leds = goflexhome_led_pins, - .num_leds = ARRAY_SIZE(goflexhome_led_pins), -}; - -static struct platform_device goflexhome_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &goflexhome_led_data, - } -}; - -static unsigned int goflexhome_mpp_config[] __initdata = { - MPP29_GPIO, /* USB Power Enable */ - MPP47_GPIO, /* LED Orange */ - MPP46_GPIO, /* LED Green */ - MPP40_GPIO, /* LED White */ - 0 -}; - -static void __init goflexhome_init(void) -{ - /* - * Basic setup. Needs to be called early. - */ - kirkwood_init(); - - /* setup gpio pin select */ - kirkwood_mpp_conf(goflexhome_mpp_config); - - kirkwood_uart0_init(); - kirkwood_nand_init(ARRAY_AND_SIZE(goflexhome_nand_parts), 40); - - if (gpio_request(29, "USB Power Enable") != 0 || - gpio_direction_output(29, 1) != 0) - printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n"); - kirkwood_ehci_init(); - kirkwood_ge00_init(&goflexhome_ge00_data); - kirkwood_sata_init(&goflexhome_sata_data); - - platform_device_register(&goflexhome_leds); -} - -MACHINE_START(GOFLEXHOME, "Seagate GoFlex Home") - /* Maintainer: Peter Carmichael */ - .atag_offset = 0x100, - .init_machine = goflexhome_init, - .map_io = kirkwood_map_io, - .init_early = kirkwood_init_early, - .init_irq = kirkwood_init_irq, - .timer = &kirkwood_timer, - .restart = kirkwood_restart, -MACHINE_END diff --git a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/goflexnet-setup.c b/target/linux/kirkwood/files/arch/arm/mach-kirkwood/goflexnet-setup.c deleted file mode 100644 index cd9dc9ef11..0000000000 --- a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/goflexnet-setup.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * arch/arm/mach-kirkwood/goflexnet-setup.c - * - * Seagate GoFlex Net Setup - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "common.h" -#include "mpp.h" - -static struct mtd_partition goflexnet_nand_parts[] = { - { - .name = "u-boot", - .offset = 0, - .size = SZ_1M - }, { - .name = "uImage", - .offset = MTDPART_OFS_NXTBLK, - .size = SZ_4M - }, { - .name = "rootfs", - .offset = MTDPART_OFS_NXTBLK, - .size = SZ_32M - }, { - .name = "data", - .offset = MTDPART_OFS_NXTBLK, - .size = MTDPART_SIZ_FULL - }, -}; - -static struct mv643xx_eth_platform_data goflexnet_ge00_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(0), -}; - -static struct mv_sata_platform_data goflexnet_sata_data = { - .n_ports = 2, -}; - -static struct gpio_led goflexnet_led_pins[] = { - { - .name = "status:green:health", - .default_trigger = "default-on", - .gpio = 46, // 0x4000 - .active_low = 1, - }, - { - .name = "status:orange:fault", - .default_trigger = "none", - .gpio = 47, // 0x8000 - .active_low = 1, - }, - { - .name = "status:white:left0", - .default_trigger = "none", - .gpio = 42, // 0x0400 - .active_low = 0, - }, - { - .name = "status:white:left1", - .default_trigger = "none", - .gpio = 43, // 0x0800 - .active_low = 0, - }, - { - .name = "status:white:left2", - .default_trigger = "none", - .gpio = 44, // 0x1000 - .active_low = 0, - }, - { - .name = "status:white:left3", - .default_trigger = "none", - .gpio = 45, // 0x2000 - .active_low = 0, - }, - { - .name = "status:white:right0", - .default_trigger = "none", - .gpio = 38, // 0x0040 - .active_low = 0, - }, - { - .name = "status:white:right1", - .default_trigger = "none", - .gpio = 39, // 0x0080 - .active_low = 0, - }, - { - .name = "status:white:right2", - .default_trigger = "none", - .gpio = 40, // 0x0100 - .active_low = 0, - }, - { - .name = "status:white:right3", - .default_trigger = "none", - .gpio = 41, // 0x0200 - .active_low = 0, - } -}; - -static struct gpio_led_platform_data goflexnet_led_data = { - .leds = goflexnet_led_pins, - .num_leds = ARRAY_SIZE(goflexnet_led_pins), -}; - -static struct platform_device goflexnet_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &goflexnet_led_data, - } -}; - -static unsigned int goflexnet_mpp_config[] __initdata = { - MPP29_GPIO, /* USB Power Enable */ - MPP47_GPIO, /* LED Orange */ - MPP46_GPIO, /* LED Green */ - MPP45_GPIO, /* LED Left Capacity 3 */ - MPP44_GPIO, /* LED Left Capacity 2 */ - MPP43_GPIO, /* LED Left Capacity 1 */ - MPP42_GPIO, /* LED Left Capacity 0 */ - MPP41_GPIO, /* LED Right Capacity 3 */ - MPP40_GPIO, /* LED Right Capacity 2 */ - MPP39_GPIO, /* LED Right Capacity 1 */ - MPP38_GPIO, /* LED Right Capacity 0 */ - 0 -}; - -static void __init goflexnet_init(void) -{ - /* - * Basic setup. Needs to be called early. - */ - kirkwood_init(); - - /* setup gpio pin select */ - kirkwood_mpp_conf(goflexnet_mpp_config); - - kirkwood_uart0_init(); - kirkwood_nand_init(ARRAY_AND_SIZE(goflexnet_nand_parts), 40); - - if (gpio_request(29, "USB Power Enable") != 0 || - gpio_direction_output(29, 1) != 0) - printk(KERN_ERR "can't set up GPIO 29 (USB Power Enable)\n"); - kirkwood_ehci_init(); - kirkwood_ge00_init(&goflexnet_ge00_data); - kirkwood_sata_init(&goflexnet_sata_data); - - platform_device_register(&goflexnet_leds); -} - -MACHINE_START(GOFLEXNET, "Seagate GoFlex Net") - /* Maintainer: Peter Carmichael */ - .atag_offset = 0x100, - .init_machine = goflexnet_init, - .map_io = kirkwood_map_io, - .init_early = kirkwood_init_early, - .init_irq = kirkwood_init_irq, - .timer = &kirkwood_timer, - .restart = kirkwood_restart, -MACHINE_END diff --git a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/iconnect-setup.c b/target/linux/kirkwood/files/arch/arm/mach-kirkwood/iconnect-setup.c deleted file mode 100644 index 4e8d192bb8..0000000000 --- a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/iconnect-setup.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * arch/arm/mach-kirkwood/iconnect-setup.c - * - * Iomega iConnect Wireless - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "common.h" -#include "mpp.h" - -static struct mtd_partition iconnect_nand_parts[] = { - { - .name = "u-boot", - .offset = 0, - .size = SZ_1M - }, { - .name = "uImage", - .offset = MTDPART_OFS_NXTBLK, - .size = SZ_1M + SZ_2M - }, { - .name = "rootfs", - .offset = MTDPART_OFS_NXTBLK, - .size = SZ_32M, - }, { - .name = "data", - .offset = MTDPART_OFS_NXTBLK, - .size = MTDPART_SIZ_FULL - }, -}; - -static struct mv643xx_eth_platform_data iconnect_ge00_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(11), -}; - -static struct gpio_led iconnect_led_pins[] = { - { - .name = "iconnect:blue:power", - .default_trigger = "default-on", - .gpio = 42, - }, - { - .name = "iconnect:red:power", - .gpio = 43, - }, - { - .name = "iconnect:blue:usb1", - .gpio = 44, - }, - { - .name = "iconnect:blue:usb2", - .gpio = 45, - }, - { - .name = "iconnect:blue:usb3", - .gpio = 46, - }, - { - .name = "iconnect:blue:usb4", - .gpio = 47, - }, - { - .name = "iconnect:blue:otb", - .gpio = 48, - }, -}; - -static struct gpio_led_platform_data iconnect_led_data = { - .leds = iconnect_led_pins, - .num_leds = ARRAY_SIZE(iconnect_led_pins), -}; - -static struct platform_device iconnect_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &iconnect_led_data, - } -}; - -#define ICONNECT_GPIO_KEY_RESET 12 -#define ICONNECT_GPIO_KEY_OTB 35 - -#define ICONNECT_SW_RESET 0x00 -#define ICONNECT_SW_OTB 0x01 - -static struct gpio_keys_button iconnect_buttons[] = { - { - .type = EV_SW, - .code = ICONNECT_SW_RESET, - .gpio = ICONNECT_GPIO_KEY_RESET, - .desc = "Reset Button", - .active_low = 1, - .debounce_interval = 100, - }, - { - .type = EV_SW, - .code = ICONNECT_SW_OTB, - .gpio = ICONNECT_GPIO_KEY_OTB, - .desc = "OTB Button", - .active_low = 1, - .debounce_interval = 100, - }, -}; - -static struct gpio_keys_platform_data iconnect_button_data = { - .buttons = iconnect_buttons, - .nbuttons = ARRAY_SIZE(iconnect_buttons), -}; - -static struct platform_device iconnect_button_device = { - .name = "gpio-keys", - .id = -1, - .num_resources = 0, - .dev = { - .platform_data = &iconnect_button_data, - }, -}; - -static unsigned int iconnect_mpp_config[] __initdata = { - MPP12_GPIO, /*Input for reset button*/ - MPP35_GPIO, /*Input for OTB button*/ - MPP42_GPIO, - MPP43_GPIO, - MPP44_GPIO, - MPP45_GPIO, - MPP46_GPIO, - MPP47_GPIO, - MPP48_GPIO, - 0 -}; - -static void __init iconnect_init(void) -{ - u32 dev, rev; - - /* - * Basic setup. Needs to be called early. - */ - kirkwood_init(); - kirkwood_mpp_conf(iconnect_mpp_config); - - kirkwood_nand_init(ARRAY_AND_SIZE(iconnect_nand_parts), 25); - kirkwood_ehci_init(); - - kirkwood_ge00_init(&iconnect_ge00_data); - kirkwood_pcie_id(&dev, &rev); - - kirkwood_uart0_init(); - kirkwood_i2c_init(); - - platform_device_register(&iconnect_leds); - platform_device_register(&iconnect_button_device); -} - -static int __init iconnect_pci_init(void) -{ - if (machine_is_iconnect()) - kirkwood_pcie_init(KW_PCIE0); - - return 0; -} -subsys_initcall(iconnect_pci_init); - - -MACHINE_START(ICONNECT, "Iomega iConnect Wireless") - .atag_offset = 0x100, - .init_machine = iconnect_init, - .map_io = kirkwood_map_io, - .init_early = kirkwood_init_early, - .init_irq = kirkwood_init_irq, - .timer = &kirkwood_timer, - .restart = kirkwood_restart, -MACHINE_END diff --git a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/nas6210-setup.c b/target/linux/kirkwood/files/arch/arm/mach-kirkwood/nas6210-setup.c deleted file mode 100644 index 00c8531bc0..0000000000 --- a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/nas6210-setup.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * arch/arm/mach-kirkwood/nas6210-setup.c - * - * Raidsonic ICYBOX NAS6210 Board Setup - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "common.h" -#include "mpp.h" - -#define NAS6210_GPIO_POWER_OFF 24 - -static struct mtd_partition nas6210_nand_parts[] = { - { - .name = "uboot", - .offset = 0, - .size = SZ_512K - }, { - .name = "uboot_env", - .offset = MTDPART_OFS_NXTBLK, - .size = SZ_128K - }, { - .name = "kernel", - .offset = MTDPART_OFS_NXTBLK, - .size = 3 * SZ_1M - }, { - .name = "rootfs", - .offset = MTDPART_OFS_NXTBLK, - .size = MTDPART_SIZ_FULL - }, -}; - -static struct mv643xx_eth_platform_data nas6210_ge00_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(8), -}; - -static struct mv_sata_platform_data nas6210_sata_data = { - .n_ports = 2, -}; - -static struct gpio_led nas6210_led_pins[] = { - { - .name = "status:green:power", - .default_trigger = "default-on", - .gpio = 25, - .active_low = 0, - }, - { - .name = "status:red:power", - .default_trigger = "none", - .gpio = 22, - .active_low = 0, - }, - { - .name = "status:red:usb_copy", - .default_trigger = "none", - .gpio = 27, - .active_low = 0, - }, -}; - -static struct gpio_led_platform_data nas6210_led_data = { - .leds = nas6210_led_pins, - .num_leds = ARRAY_SIZE(nas6210_led_pins), -}; - -static struct platform_device nas6210_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &nas6210_led_data, - } -}; - -static struct gpio_keys_button nas6210_buttons[] = { - { - .code = KEY_COPY, - .gpio = 29, - .desc = "USB Copy", - .active_low = 1, - }, - { - .code = KEY_RESTART, - .gpio = 28, - .desc = "Reset", - .active_low = 1, - }, -}; - -static struct gpio_keys_platform_data nas6210_button_data = { - .buttons = nas6210_buttons, - .nbuttons = ARRAY_SIZE(nas6210_buttons), -}; - -static struct platform_device nas6210_button_device = { - .name = "gpio-keys", - .id = -1, - .num_resources = 0, - .dev = { - .platform_data = &nas6210_button_data, - } -}; - -static unsigned int nas6210_mpp_config[] __initdata = { - MPP0_NF_IO2, - MPP1_NF_IO3, - MPP2_NF_IO4, - MPP3_NF_IO5, - MPP4_NF_IO6, - MPP5_NF_IO7, - MPP18_NF_IO0, - MPP19_NF_IO1, - MPP22_GPIO, /* Power LED red */ - MPP24_GPIO, /* Power off device */ - MPP25_GPIO, /* Power LED green */ - MPP27_GPIO, /* USB transfer LED */ - MPP28_GPIO, /* Reset button */ - MPP29_GPIO, /* USB Copy button */ - 0 -}; - -static void nas6210_power_off(void) -{ - gpio_set_value(NAS6210_GPIO_POWER_OFF, 1); -} - -static void __init nas6210_init(void) -{ - /* - * Basic setup. Needs to be called early. - */ - kirkwood_init(); - kirkwood_mpp_conf(nas6210_mpp_config); - - kirkwood_nand_init(ARRAY_AND_SIZE(nas6210_nand_parts), 25); - kirkwood_ehci_init(); - kirkwood_ge00_init(&nas6210_ge00_data); - kirkwood_sata_init(&nas6210_sata_data); - kirkwood_uart0_init(); - platform_device_register(&nas6210_leds); - platform_device_register(&nas6210_button_device); - if (gpio_request(NAS6210_GPIO_POWER_OFF, "power-off") == 0 && - gpio_direction_output(NAS6210_GPIO_POWER_OFF, 0) == 0) - pm_power_off = nas6210_power_off; - else - pr_err("nas6210: failed to configure power-off GPIO\n"); -} - -static int __init nas6210_pci_init(void) -{ - if (machine_is_nas6210()) { - u32 dev, rev; - - kirkwood_pcie_id(&dev, &rev); - if (dev == MV88F6282_DEV_ID) - kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0); - else - kirkwood_pcie_init(KW_PCIE0); - } - - return 0; -} -subsys_initcall(nas6210_pci_init); - -MACHINE_START(NAS6210, "RaidSonic ICY BOX IB-NAS6210") - /* Maintainer: */ - .atag_offset = 0x100, - .init_machine = nas6210_init, - .map_io = kirkwood_map_io, - .init_early = kirkwood_init_early, - .init_irq = kirkwood_init_irq, - .timer = &kirkwood_timer, - .restart = kirkwood_restart, -MACHINE_END diff --git a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/nsa-310-setup.c b/target/linux/kirkwood/files/arch/arm/mach-kirkwood/nsa-310-setup.c deleted file mode 100644 index 15dc526a8b..0000000000 --- a/target/linux/kirkwood/files/arch/arm/mach-kirkwood/nsa-310-setup.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - * arch/arm/mach-kirkwood/nsa-310-setup.c - * - * ZyXEL NSA-310 Setup - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include "common.h" -#include "mpp.h" - -#define NSA310_GPIO_LED_ESATA_GREEN 12 -#define NSA310_GPIO_LED_ESATA_RED 13 -#define NSA310_GPIO_LED_USB_GREEN 15 -#define NSA310_GPIO_LED_USB_RED 16 -#define NSA310_GPIO_USB_POWER_OFF 21 -#define NSA310_GPIO_LED_SYS_GREEN 28 -#define NSA310_GPIO_LED_SYS_RED 29 -#define NSA310_GPIO_KEY_RESTART 36 -#define NSA310_GPIO_KEY_COPY 37 -#define NSA310_GPIO_LED_COPY_GREEN 39 -#define NSA310_GPIO_LED_COPY_RED 40 -#define NSA310_GPIO_LED_HDD_GREEN 41 -#define NSA310_GPIO_LED_HDD_RED 42 -#define NSA310_GPIO_BUZZER 44 -#define NSA310_GPIO_KEY_POWER 46 -#define NSA310_GPIO_POWER_OFF 48 - - -static unsigned int nsa310_mpp_config[] __initdata = { - MPP12_GPIO, - MPP13_GPIO, - MPP15_GPIO, - MPP16_GPIO, - MPP21_GPIO, - MPP28_GPIO, - MPP29_GPIO, - MPP36_GPIO, - MPP37_GPIO, - MPP39_GPIO, - MPP40_GPIO, - MPP41_GPIO, - MPP42_GPIO, - MPP44_GPIO, - MPP46_GPIO, - MPP48_GPIO, - 0 -}; - -static struct mtd_partition nsa310_mtd_parts[] = { - { - .name = "uboot", - .offset = 0, - .size = 0x100000, - .mask_flags = MTD_WRITEABLE, - }, { - .name = "uboot_env", - .offset = MTDPART_OFS_NXTBLK, - .size = 0x80000, - }, { - .name = "key_store", - .offset = MTDPART_OFS_NXTBLK, - .size = 0x80000, - }, { - .name = "info", - .offset = MTDPART_OFS_NXTBLK, - .size = 0x80000, - }, { - .name = "etc", - .offset = MTDPART_OFS_NXTBLK, - .size = 0xa00000, - }, { - .name = "kernel_1", - .offset = MTDPART_OFS_NXTBLK, - .size = 0xa00000, - }, { - .name = "rootfs1", - .offset = MTDPART_OFS_NXTBLK, - .size = 0x2fc0000, - }, { - .name = "kernel_2", - .offset = MTDPART_OFS_NXTBLK, - .size = 0xa00000, - }, { - .name = "rootfs2", - .offset = MTDPART_OFS_NXTBLK, - .size = 0x2fc0000, - }, -}; - -static struct gpio_led nsa310_leds[] = { - { - .name = "nsa310:green:sys", - .gpio = NSA310_GPIO_LED_SYS_GREEN, - }, { - .name = "nsa310:red:sys", - .gpio = NSA310_GPIO_LED_SYS_RED, - }, { - .name = "nsa310:green:hdd", - .gpio = NSA310_GPIO_LED_HDD_GREEN, - }, { - .name = "nsa310:red:hdd", - .gpio = NSA310_GPIO_LED_HDD_RED, - }, { - .name = "nsa310:green:esata", - .gpio = NSA310_GPIO_LED_ESATA_GREEN, - }, { - .name = "nsa310:red:esata", - .gpio = NSA310_GPIO_LED_ESATA_RED, - }, { - .name = "nsa310:green:usb", - .gpio = NSA310_GPIO_LED_USB_GREEN, - }, { - .name = "nsa310:red:usb", - .gpio = NSA310_GPIO_LED_USB_RED, - }, { - .name = "nsa310:green:copy", - .gpio = NSA310_GPIO_LED_COPY_GREEN, - }, { - .name = "nsa310:red:copy", - .gpio = NSA310_GPIO_LED_COPY_RED, - }, -}; - -static struct gpio_led_platform_data nsa310_leds_data = { - .leds = nsa310_leds, - .num_leds = ARRAY_SIZE(nsa310_leds), -}; - -static struct platform_device nsa310_leds_device = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &nsa310_leds_data, - } -}; - -static struct gpio_keys_button nsa310_buttons[] = { - { - .desc = "Power Button", - .code = KEY_POWER, - .type = EV_KEY, - .gpio = NSA310_GPIO_KEY_POWER, - .debounce_interval = 1000, - }, { - .desc = "Copy Button", - .code = KEY_COPY, - .type = EV_KEY, - .gpio = NSA310_GPIO_KEY_COPY, - .active_low = 1, - .debounce_interval = 1000, - }, { - .desc = "Reset Button", - .code = KEY_RESTART, - .type = EV_KEY, - .gpio = NSA310_GPIO_KEY_RESTART, - .active_low = 1, - .debounce_interval = 1000, - }, -}; - -static struct gpio_keys_platform_data nsa310_keys_data = { - .buttons = nsa310_buttons, - .nbuttons = ARRAY_SIZE(nsa310_buttons), -}; - -static struct platform_device nsa310_keys_device = { - .name = "gpio-keys", - .id = -1, - .dev = { - .platform_data = &nsa310_keys_data, - } -}; - -static struct i2c_board_info __initdata nsa310_i2c_info[] = { - { I2C_BOARD_INFO("adt7476", 0x2e) }, -}; - -static struct mv_sata_platform_data nsa310_sata_data = { - .n_ports = 2, -}; - -static void nsa310_power_off(void) -{ - gpio_set_value(NSA310_GPIO_POWER_OFF, 1); -} - -static int __init nsa310_gpio_request(unsigned int gpio, unsigned long flags, - const char *label) -{ - int err; - - err = gpio_request_one(gpio, flags, label); - if (err) - pr_err("NSA-310: can't setup GPIO%u (%s), err=%d\n", - gpio, label, err); - - return err; -} - -static void __init nsa310_gpio_init(void) -{ - int err; - - err = nsa310_gpio_request(NSA310_GPIO_POWER_OFF, GPIOF_OUT_INIT_LOW, - "Power Off"); - if (!err) - pm_power_off = nsa310_power_off; - - nsa310_gpio_request(NSA310_GPIO_USB_POWER_OFF, GPIOF_OUT_INIT_LOW, - "USB Power Off"); -} - -static void __init nsa310_init(void) -{ - u32 dev, rev; - - kirkwood_init(); - kirkwood_mpp_conf(nsa310_mpp_config); - - nsa310_gpio_init(); - - kirkwood_nand_init(ARRAY_AND_SIZE(nsa310_mtd_parts), 35); - kirkwood_ehci_init(); - - kirkwood_pcie_id(&dev, &rev); - - kirkwood_sata_init(&nsa310_sata_data); - kirkwood_uart0_init(); - - i2c_register_board_info(0, ARRAY_AND_SIZE(nsa310_i2c_info)); - kirkwood_i2c_init(); - - platform_device_register(&nsa310_leds_device); - platform_device_register(&nsa310_keys_device); -} - -static int __init nsa310_pci_init(void) -{ - if (machine_is_nsa310()) - kirkwood_pcie_init(KW_PCIE0); - - return 0; -} -subsys_initcall(nsa310_pci_init); - -MACHINE_START(NSA310, "ZyXEL NSA-310") - .atag_offset = 0x100, - .init_machine = nsa310_init, - .map_io = kirkwood_map_io, - .init_early = kirkwood_init_early, - .init_irq = kirkwood_init_irq, - .timer = &kirkwood_timer, - .restart = kirkwood_restart, -MACHINE_END diff --git a/target/linux/kirkwood/patches-3.3/000-boards.patch b/target/linux/kirkwood/patches-3.3/000-boards.patch new file mode 100644 index 0000000000..22bd2b66b6 --- /dev/null +++ b/target/linux/kirkwood/patches-3.3/000-boards.patch @@ -0,0 +1,66 @@ +--- a/arch/arm/mach-kirkwood/Makefile ++++ b/arch/arm/mach-kirkwood/Makefile +@@ -8,6 +8,8 @@ obj-$(CONFIG_MACH_SHEEVAPLUG) += sheeva + obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o + obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o + obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o ++obj-$(CONFIG_MACH_GOFLEXNET) += goflexnet-setup.o ++obj-$(CONFIG_MACH_GOFLEXHOME) += goflexhome-setup.o + obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o + obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o + obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o +@@ -18,5 +20,8 @@ obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2 + obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o + obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o + obj-$(CONFIG_MACH_T5325) += t5325-setup.o ++obj-$(CONFIG_MACH_ICONNECT) += iconnect-setup.o ++obj-$(CONFIG_MACH_NAS6210) += nas6210-setup.o ++obj-$(CONFIG_MACH_NSA310) += nsa-310-setup.o + + obj-$(CONFIG_CPU_IDLE) += cpuidle.o +--- a/arch/arm/mach-kirkwood/Kconfig ++++ b/arch/arm/mach-kirkwood/Kconfig +@@ -64,6 +64,18 @@ config MACH_DOCKSTAR + Say 'Y' here if you want your kernel to support the + Seagate FreeAgent DockStar. + ++config MACH_GOFLEXNET ++ bool "Seagate GoFlex Net" ++ help ++ Say 'Y' here if you want your kernel to support the ++ Seagate GoFlex Net. ++ ++config MACH_GOFLEXHOME ++ bool "Seagate GoFlex Home" ++ help ++ Say 'Y' here if you want your kernel to support the ++ Seagate GoFlex Home. ++ + config MACH_OPENRD + bool + +@@ -130,6 +142,24 @@ config MACH_T5325 + Say 'Y' here if you want your kernel to support the + HP t5325 Thin Client. + ++config MACH_ICONNECT ++ bool "Iomega iConnect Wireless" ++ help ++ Say 'Y' here if you want your kernel to support the ++ Iomega iConnect Wireless. ++ ++config MACH_NAS6210 ++ bool "RaidSonic ICY BOX IB-NAS6210" ++ help ++ Say 'Y' here if you want your kernel to support the ++ RaidSonic ICY BOX IB-NAS6210 device. ++ ++config MACH_NSA310 ++ bool "ZyXEL NSA-310" ++ help ++ Say 'Y' here if you want your kernel to support the ++ ZyXEL NSA-310 board. ++ + endmenu + + endif diff --git a/target/linux/kirkwood/patches-3.3/001-partition_map.patch b/target/linux/kirkwood/patches-3.3/001-partition_map.patch new file mode 100644 index 0000000000..0f94adc343 --- /dev/null +++ b/target/linux/kirkwood/patches-3.3/001-partition_map.patch @@ -0,0 +1,11 @@ +--- a/arch/arm/mach-kirkwood/sheevaplug-setup.c ++++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c +@@ -33,7 +33,7 @@ static struct mtd_partition sheevaplug_n + .offset = MTDPART_OFS_NXTBLK, + .size = SZ_4M + }, { +- .name = "root", ++ .name = "rootfs", + .offset = MTDPART_OFS_NXTBLK, + .size = MTDPART_SIZ_FULL + }, diff --git a/target/linux/kirkwood/patches-3.3/002-mvsdio_delay.patch b/target/linux/kirkwood/patches-3.3/002-mvsdio_delay.patch new file mode 100644 index 0000000000..46e2a5646c --- /dev/null +++ b/target/linux/kirkwood/patches-3.3/002-mvsdio_delay.patch @@ -0,0 +1,32 @@ +--- a/drivers/mmc/core/sd.c ++++ b/drivers/mmc/core/sd.c +@@ -389,6 +389,15 @@ int mmc_sd_switch_hs(struct mmc_card *ca + return -ENOMEM; + } + ++ /* ++ * Some SDHC cards, notably those with a Sandisk SD controller ++ * (also found in Kingston products) need a bit of slack ++ * before successfully handling the SWITCH command. So far, ++ * cards identifying themselves as "SD04G" and "SD08G" are ++ * affected ++ */ ++ udelay(1000); ++ + err = mmc_sd_switch(card, 1, 0, 1, status); + if (err) + goto out; +--- a/drivers/mmc/core/core.c ++++ b/drivers/mmc/core/core.c +@@ -529,9 +529,9 @@ void mmc_set_data_timeout(struct mmc_dat + * The limit is really 250 ms, but that is + * insufficient for some crappy cards. + */ +- limit_us = 300000; ++ limit_us = 500000; + else +- limit_us = 100000; ++ limit_us = 200000; + + /* + * SDHC cards always use these fixed values. diff --git a/target/linux/kirkwood/patches/000-boards.patch b/target/linux/kirkwood/patches/000-boards.patch deleted file mode 100644 index 22bd2b66b6..0000000000 --- a/target/linux/kirkwood/patches/000-boards.patch +++ /dev/null @@ -1,66 +0,0 @@ ---- a/arch/arm/mach-kirkwood/Makefile -+++ b/arch/arm/mach-kirkwood/Makefile -@@ -8,6 +8,8 @@ obj-$(CONFIG_MACH_SHEEVAPLUG) += sheeva - obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o - obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o - obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o -+obj-$(CONFIG_MACH_GOFLEXNET) += goflexnet-setup.o -+obj-$(CONFIG_MACH_GOFLEXHOME) += goflexhome-setup.o - obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o - obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o - obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o -@@ -18,5 +20,8 @@ obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2 - obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o - obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o - obj-$(CONFIG_MACH_T5325) += t5325-setup.o -+obj-$(CONFIG_MACH_ICONNECT) += iconnect-setup.o -+obj-$(CONFIG_MACH_NAS6210) += nas6210-setup.o -+obj-$(CONFIG_MACH_NSA310) += nsa-310-setup.o - - obj-$(CONFIG_CPU_IDLE) += cpuidle.o ---- a/arch/arm/mach-kirkwood/Kconfig -+++ b/arch/arm/mach-kirkwood/Kconfig -@@ -64,6 +64,18 @@ config MACH_DOCKSTAR - Say 'Y' here if you want your kernel to support the - Seagate FreeAgent DockStar. - -+config MACH_GOFLEXNET -+ bool "Seagate GoFlex Net" -+ help -+ Say 'Y' here if you want your kernel to support the -+ Seagate GoFlex Net. -+ -+config MACH_GOFLEXHOME -+ bool "Seagate GoFlex Home" -+ help -+ Say 'Y' here if you want your kernel to support the -+ Seagate GoFlex Home. -+ - config MACH_OPENRD - bool - -@@ -130,6 +142,24 @@ config MACH_T5325 - Say 'Y' here if you want your kernel to support the - HP t5325 Thin Client. - -+config MACH_ICONNECT -+ bool "Iomega iConnect Wireless" -+ help -+ Say 'Y' here if you want your kernel to support the -+ Iomega iConnect Wireless. -+ -+config MACH_NAS6210 -+ bool "RaidSonic ICY BOX IB-NAS6210" -+ help -+ Say 'Y' here if you want your kernel to support the -+ RaidSonic ICY BOX IB-NAS6210 device. -+ -+config MACH_NSA310 -+ bool "ZyXEL NSA-310" -+ help -+ Say 'Y' here if you want your kernel to support the -+ ZyXEL NSA-310 board. -+ - endmenu - - endif diff --git a/target/linux/kirkwood/patches/001-partition_map.patch b/target/linux/kirkwood/patches/001-partition_map.patch deleted file mode 100644 index 0f94adc343..0000000000 --- a/target/linux/kirkwood/patches/001-partition_map.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/arch/arm/mach-kirkwood/sheevaplug-setup.c -+++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c -@@ -33,7 +33,7 @@ static struct mtd_partition sheevaplug_n - .offset = MTDPART_OFS_NXTBLK, - .size = SZ_4M - }, { -- .name = "root", -+ .name = "rootfs", - .offset = MTDPART_OFS_NXTBLK, - .size = MTDPART_SIZ_FULL - }, diff --git a/target/linux/kirkwood/patches/002-mvsdio_delay.patch b/target/linux/kirkwood/patches/002-mvsdio_delay.patch deleted file mode 100644 index 46e2a5646c..0000000000 --- a/target/linux/kirkwood/patches/002-mvsdio_delay.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/drivers/mmc/core/sd.c -+++ b/drivers/mmc/core/sd.c -@@ -389,6 +389,15 @@ int mmc_sd_switch_hs(struct mmc_card *ca - return -ENOMEM; - } - -+ /* -+ * Some SDHC cards, notably those with a Sandisk SD controller -+ * (also found in Kingston products) need a bit of slack -+ * before successfully handling the SWITCH command. So far, -+ * cards identifying themselves as "SD04G" and "SD08G" are -+ * affected -+ */ -+ udelay(1000); -+ - err = mmc_sd_switch(card, 1, 0, 1, status); - if (err) - goto out; ---- a/drivers/mmc/core/core.c -+++ b/drivers/mmc/core/core.c -@@ -529,9 +529,9 @@ void mmc_set_data_timeout(struct mmc_dat - * The limit is really 250 ms, but that is - * insufficient for some crappy cards. - */ -- limit_us = 300000; -+ limit_us = 500000; - else -- limit_us = 100000; -+ limit_us = 200000; - - /* - * SDHC cards always use these fixed values.