--- /dev/null
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/db88f6281-bp-setup.c linux-3.14.22/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/db88f6281-bp-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/arch/arm/mach-kirkwood/db88f6281-bp-setup.c 2014-10-15 08:32:29.000000000 +0200
+@@ -0,0 +1,108 @@
++/*
++ * arch/arm/mach-kirkwood/db88f6281-bp-setup.c
++ *
++ * Marvell DB-88F6281-BP Development 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 <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/sizes.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include <linux/platform_data/mmc-mvsdio.h>
++#include "common.h"
++#include "mpp.h"
++
++static struct mtd_partition db88f6281_nand_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0,
++ .size = SZ_1M
++ }, {
++ .name = "uImage",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = SZ_4M
++ }, {
++ .name = "root",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL
++ },
++};
++
++static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(8),
++};
++
++static struct mv_sata_platform_data db88f6281_sata_data = {
++ .n_ports = 2,
++};
++
++static struct mvsdio_platform_data db88f6281_mvsdio_data = {
++ .gpio_write_protect = 37,
++ .gpio_card_detect = 38,
++};
++
++static unsigned int db88f6281_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,
++ MPP37_GPIO,
++ MPP38_GPIO,
++ 0
++};
++
++static void __init db88f6281_init(void)
++{
++ /*
++ * Basic setup. Needs to be called early.
++ */
++ kirkwood_init();
++ kirkwood_mpp_conf(db88f6281_mpp_config);
++
++ kirkwood_nand_init(ARRAY_AND_SIZE(db88f6281_nand_parts), 25);
++ kirkwood_ehci_init();
++ kirkwood_ge00_init(&db88f6281_ge00_data);
++ kirkwood_sata_init(&db88f6281_sata_data);
++ kirkwood_uart0_init();
++ kirkwood_sdio_init(&db88f6281_mvsdio_data);
++}
++
++static int __init db88f6281_pci_init(void)
++{
++ if (machine_is_db88f6281_bp()) {
++ 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(db88f6281_pci_init);
++
++MACHINE_START(DB88F6281_BP, "Marvell DB-88F6281-BP Development Board")
++ /* Maintainer: Saeed Bishara <saeed@marvell.com> */
++ .atag_offset = 0x100,
++ .init_machine = db88f6281_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/dockstar-setup.c linux-3.14.22/arch/arm/mach-kirkwood/dockstar-setup.c
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/dockstar-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/arch/arm/mach-kirkwood/dockstar-setup.c 2014-10-15 08:32:29.000000000 +0200
+@@ -0,0 +1,111 @@
++/*
++ * arch/arm/mach-kirkwood/dockstar-setup.c
++ *
++ * Seagate FreeAgent DockStar 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 <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/ata_platform.h>
++#include <linux/mtd/partitions.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include "common.h"
++#include "mpp.h"
++
++static struct mtd_partition dockstar_nand_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0,
++ .size = SZ_1M
++ }, {
++ .name = "uImage",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = SZ_4M
++ }, {
++ .name = "root",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL
++ },
++};
++
++static struct mv643xx_eth_platform_data dockstar_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(0),
++};
++
++static struct gpio_led dockstar_led_pins[] = {
++ {
++ .name = "dockstar:green:health",
++ .default_trigger = "default-on",
++ .gpio = 46,
++ .active_low = 1,
++ },
++ {
++ .name = "dockstar:orange:misc",
++ .default_trigger = "none",
++ .gpio = 47,
++ .active_low = 1,
++ },
++};
++
++static struct gpio_led_platform_data dockstar_led_data = {
++ .leds = dockstar_led_pins,
++ .num_leds = ARRAY_SIZE(dockstar_led_pins),
++};
++
++static struct platform_device dockstar_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &dockstar_led_data,
++ }
++};
++
++static unsigned int dockstar_mpp_config[] __initdata = {
++ MPP29_GPIO, /* USB Power Enable */
++ MPP46_GPIO, /* LED green */
++ MPP47_GPIO, /* LED orange */
++ 0
++};
++
++static void __init dockstar_init(void)
++{
++ /*
++ * Basic setup. Needs to be called early.
++ */
++ kirkwood_init();
++
++ /* setup gpio pin select */
++ kirkwood_mpp_conf(dockstar_mpp_config);
++
++ kirkwood_uart0_init();
++ kirkwood_nand_init(ARRAY_AND_SIZE(dockstar_nand_parts), 25);
++
++ if (gpio_request(29, "USB Power Enable") != 0 ||
++ gpio_direction_output(29, 1) != 0)
++ pr_err("can't set up GPIO 29 (USB Power Enable)\n");
++ kirkwood_ehci_init();
++
++ kirkwood_ge00_init(&dockstar_ge00_data);
++
++ platform_device_register(&dockstar_leds);
++}
++
++MACHINE_START(DOCKSTAR, "Seagate FreeAgent DockStar")
++ .atag_offset = 0x100,
++ .init_machine = dockstar_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/dreamplug-setup.c linux-3.14.22/arch/arm/mach-kirkwood/dreamplug-setup.c
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/dreamplug-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/arch/arm/mach-kirkwood/dreamplug-setup.c 2014-11-04 00:25:48.383688273 +0100
+@@ -0,0 +1,151 @@
++/*
++ * arch/arm/mach-kirkwood/dreamplug-setup.c
++ *
++ * Marvell DreamPlug Reference 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 <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/leds.h>
++#include <linux/spi/flash.h>
++#include <linux/spi/spi.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include <linux/platform_data/mmc-mvsdio.h>
++#include "common.h"
++#include "mpp.h"
++
++static const struct flash_platform_data dreamplug_spi_slave_data = {
++ .type = "mx25l1606e",
++};
++
++static struct spi_board_info __initdata dreamplug_spi_slave_info[] = {
++ {
++ .modalias = "m25p80",
++ .platform_data = &dreamplug_spi_slave_data,
++ .irq = -1,
++ .max_speed_hz = 50000000,
++ .bus_num = 0,
++ .chip_select = 0,
++ },
++};
++
++static struct mv643xx_eth_platform_data dreamplug_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(0),
++};
++
++static struct mv643xx_eth_platform_data dreamplug_ge01_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(1),
++};
++
++static struct mv_sata_platform_data dreamplug_sata_data = {
++ .n_ports = 1,
++};
++
++static struct mvsdio_platform_data dreamplug_mvsdio_data = {
++ /* unfortunately the CD signal has not been connected */
++};
++
++static struct gpio_led dreamplug_led_pins[] = {
++ {
++ .name = "dreamplug:blue:bluetooth",
++ .gpio = 47,
++ .active_low = 1,
++ },
++ {
++ .name = "dreamplug:green:wlan",
++ .gpio = 48,
++ .active_low = 1,
++ },
++ {
++ .name = "dreamplug:blue:wlanap",
++ .gpio = 49,
++ .active_low = 1,
++ },
++};
++
++static struct gpio_led_platform_data dreamplug_led_data = {
++ .leds = dreamplug_led_pins,
++ .num_leds = ARRAY_SIZE(dreamplug_led_pins),
++};
++
++static struct platform_device dreamplug_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &dreamplug_led_data,
++ }
++};
++
++static unsigned int dreamplug_mpp_config[] __initdata = {
++ MPP0_SPI_SCn,
++ MPP1_SPI_MOSI,
++ MPP2_SPI_SCK,
++ MPP3_SPI_MISO,
++ MPP4_GPIO,
++ MPP5_GPO,
++ MPP7_GPO,
++ MPP18_GPO,
++ MPP19_GPO,
++ MPP47_GPIO, /* B_BLED */
++ MPP48_GPIO, /* W_GLED */
++ MPP49_GPIO, /* W_BLED */
++ 0
++};
++
++static void __init dreamplug_legacy_init(void)
++{
++ /*
++ * Basic setup. Needs to be called early.
++ */
++ kirkwood_init();
++ kirkwood_mpp_conf(dreamplug_mpp_config);
++
++ kirkwood_uart0_init();
++
++ spi_register_board_info(dreamplug_spi_slave_info,
++ ARRAY_SIZE(dreamplug_spi_slave_info));
++
++ kirkwood_spi_init();
++ kirkwood_ehci_init();
++
++ kirkwood_ge00_init(&dreamplug_ge00_data);
++ kirkwood_ge01_init(&dreamplug_ge01_data);
++ kirkwood_sata_init(&dreamplug_sata_data);
++ kirkwood_sdio_init(&dreamplug_mvsdio_data);
++
++ platform_device_register(&dreamplug_leds);
++}
++
++MACHINE_START(DREAMPLUG, "Marvell DreamPlug Reference Board")
++ /* Maintainer: Siddarth Gore <gores <at> marvell.com> */
++ .atag_offset = 0x100,
++ .init_machine = dreamplug_legacy_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
++
++MACHINE_START(DREAMPLUG1, "Marvell DreamPlug Reference Board")
++ .atag_offset = 0x100,
++ .init_machine = dreamplug_legacy_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++
++MACHINE_END
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-3.14.22/arch/arm/mach-kirkwood/guruplug-setup.c
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/guruplug-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/arch/arm/mach-kirkwood/guruplug-setup.c 2014-11-04 00:25:48.383688273 +0100
+@@ -0,0 +1,135 @@
++/*
++ * arch/arm/mach-kirkwood/guruplug-setup.c
++ *
++ * Marvell GuruPlug Reference 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 <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include <linux/platform_data/mmc-mvsdio.h>
++#include "common.h"
++#include "mpp.h"
++
++static struct mtd_partition guruplug_nand_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0,
++ .size = SZ_1M,
++ .mask_flags = MTD_WRITEABLE, /* read only */
++ }, {
++ .name = "uImage",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = SZ_4M,
++ }, {
++ .name = "root",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL,
++ },
++};
++
++static struct mv643xx_eth_platform_data guruplug_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(0),
++};
++
++static struct mv643xx_eth_platform_data guruplug_ge01_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(1),
++};
++
++static struct mv_sata_platform_data guruplug_sata_data = {
++ .n_ports = 1,
++};
++
++static struct mvsdio_platform_data guruplug_mvsdio_data = {
++ /* unfortunately the CD signal has not been connected */
++ .gpio_card_detect = -1,
++ .gpio_write_protect = -1,
++};
++
++static struct gpio_led guruplug_led_pins[] = {
++ {
++ .name = "guruplug:red:health",
++ .gpio = 46,
++ .active_low = 1,
++ },
++ {
++ .name = "guruplug:green:health",
++ .gpio = 47,
++ .active_low = 1,
++ },
++ {
++ .name = "guruplug:red:wmode",
++ .gpio = 48,
++ .active_low = 1,
++ },
++ {
++ .name = "guruplug:green:wmode",
++ .gpio = 49,
++ .active_low = 1,
++ },
++};
++
++static struct gpio_led_platform_data guruplug_led_data = {
++ .leds = guruplug_led_pins,
++ .num_leds = ARRAY_SIZE(guruplug_led_pins),
++};
++
++static struct platform_device guruplug_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &guruplug_led_data,
++ }
++};
++
++static unsigned int guruplug_mpp_config[] __initdata = {
++ MPP46_GPIO, /* M_RLED */
++ MPP47_GPIO, /* M_GLED */
++ MPP48_GPIO, /* B_RLED */
++ MPP49_GPIO, /* B_GLED */
++ 0
++};
++
++static void __init guruplug_init(void)
++{
++ /*
++ * Basic setup. Needs to be called early.
++ */
++ kirkwood_init();
++ kirkwood_mpp_conf(guruplug_mpp_config);
++
++ kirkwood_uart0_init();
++ kirkwood_nand_init(ARRAY_AND_SIZE(guruplug_nand_parts), 25);
++
++ kirkwood_ehci_init();
++ kirkwood_ge00_init(&guruplug_ge00_data);
++ kirkwood_ge01_init(&guruplug_ge01_data);
++ kirkwood_sata_init(&guruplug_sata_data);
++ kirkwood_sdio_init(&guruplug_mvsdio_data);
++
++ platform_device_register(&guruplug_leds);
++}
++
++MACHINE_START(GURUPLUG, "Marvell GuruPlug Reference Board")
++ /* Maintainer: Siddarth Gore <gores@marvell.com> */
++ .atag_offset = 0x100,
++ .init_machine = guruplug_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/iconnect-setup.c linux-3.14.22/arch/arm/mach-kirkwood/iconnect-setup.c
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/iconnect-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/arch/arm/mach-kirkwood/iconnect-setup.c 2014-11-04 00:25:48.383688273 +0100
+@@ -0,0 +1,214 @@
++/*
++ * arch/arm/mach-kirkwood/iconnect-setup.c
++ *
++ * Iomega iConnect Wireless Data Station 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 <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/gpio_keys.h>
++#include <linux/i2c.h>
++#include <linux/input.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include "common.h"
++#include "mpp.h"
++
++static struct mtd_partition iconnect_nand_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0,
++ .size = SZ_1M,
++ .mask_flags = MTD_WRITEABLE, /* read only */
++ }, {
++ .name = "uImage",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 0x440000,
++ }, {
++ .name = "uInit",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 0x440000,
++ }, {
++ .name = "root",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL,
++ },
++};
++
++static struct mv643xx_eth_platform_data iconnect_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(0xB),
++};
++
++static struct gpio_led iconnect_led_pins[] = {
++ {
++ .name = "iconnect:led_level",
++ .default_trigger = "default-on",
++ .gpio = 41,
++ .active_low = 0,
++ },
++
++ {
++ .name = "iconnect:blue:power",
++ .default_trigger = "default-on",
++ .gpio = 42,
++ .active_low = 0,
++ },
++ {
++ .name = "iconnect:red:power",
++ .default_trigger = "none",
++ .gpio = 43,
++ .active_low = 0,
++ },
++ {
++ .name = "iconnect:blue:usb_1",
++ .default_trigger = "none",
++ .gpio = 44,
++ .active_low = 0,
++ },
++ {
++ .name = "iconnect:blue:usb_2",
++ .default_trigger = "none",
++ .gpio = 45,
++ .active_low = 0,
++ },
++ {
++ .name = "iconnect:blue:usb_3",
++ .default_trigger = "none",
++ .gpio = 46,
++ .active_low = 0,
++ },
++ {
++ .name = "iconnect:blue:usb_4",
++ .default_trigger = "none",
++ .gpio = 47,
++ .active_low = 0,
++ },
++ {
++ .name = "iconnect:blue:otb",
++ .default_trigger = "none",
++ .gpio = 48,
++ .active_low = 0,
++ },
++};
++
++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,
++ }
++};
++
++static struct gpio_keys_button iconnect_buttons[] = {
++ {
++ .code = KEY_COPY,
++ .gpio = 35,
++ .desc = "OTB Button",
++ .active_low = 1,
++ },
++ {
++ .code = KEY_RESTART,
++ .gpio = 12,
++ .desc = "Reset",
++ .active_low = 1,
++ },
++};
++
++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 = {
++ MPP0_NF_IO2,
++ MPP1_NF_IO3,
++ MPP2_NF_IO4,
++ MPP3_NF_IO5,
++ MPP4_NF_IO6,
++ MPP5_NF_IO7,
++ MPP18_NF_IO0,
++ MPP19_NF_IO1,
++ MPP12_GPIO, /* Reset Button */
++ MPP35_GPIO, /* OTB Button */
++
++ MPP41_GPIO, /* LED Level */
++ MPP42_GPIO, /* Power LED blue */
++ MPP43_GPIO, /* Power LED red */
++ MPP44_GPIO, /* USB LED 1 */
++ MPP45_GPIO, /* USB LED 2 */
++ MPP46_GPIO, /* USB LED 3 */
++ MPP47_GPIO, /* USB LED 4 */
++ MPP48_GPIO, /* OTB LED */
++ 0
++};
++
++static struct i2c_board_info __initdata iconnect_i2c = {
++ I2C_BOARD_INFO("lm63", 0x4c),
++};
++
++static void __init iconnect_legacy_init(void)
++{
++ /*
++ * 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_uart0_init();
++ platform_device_register(&iconnect_leds);
++ platform_device_register(&iconnect_button_device);
++
++ kirkwood_i2c_init();
++ i2c_register_board_info(0, &iconnect_i2c,1);
++}
++
++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 Data Station")
++ /* Maintainer: Arne Fitzenreiter <arne_f@ipfire.org> */
++ .atag_offset = 0x100,
++ .init_machine = iconnect_legacy_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++
++MACHINE_END
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/Kconfig linux-3.14.22/arch/arm/mach-kirkwood/Kconfig
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/Kconfig 2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/arch/arm/mach-kirkwood/Kconfig 2014-11-04 01:10:52.950526196 +0100
+@@ -1,3 +1,5 @@
++
++
+ if ARCH_KIRKWOOD
+
+ menu "Marvell Kirkwood Implementations"
+@@ -72,6 +74,83 @@
+ Say 'Y' here if you want your kernel to support the
+ HP t5325 Thin Client.
+
++config MACH_DB88F6281_BP
++ bool "Marvell DB-88F6281-BP Development Board"
++ select KIRKWOOD_LEGACY
++ help
++ Say 'Y' here if you want your kernel to support the
++ Marvell DB-88F6281-BP Development Board.
++
++config MACH_DOCKSTAR
++ bool "Seagate FreeAgent DockStar"
++ select KIRKWOOD_LEGACY
++ help
++ Say 'Y' here if you want your kernel to support the
++ Seagate FreeAgent DockStar.
++
++config MACH_SHEEVAPLUG
++ bool "Marvell SheevaPlug Reference Board"
++ select KIRKWOOD_LEGACY
++ help
++ Say 'Y' here if you want your kernel to support the
++ Marvell SheevaPlug Reference Board.
++
++config MACH_ESATA_SHEEVAPLUG
++ bool "Marvell eSATA SheevaPlug Reference Board"
++ select KIRKWOOD_LEGACY
++ help
++ Say 'Y' here if you want your kernel to support the
++ Marvell eSATA SheevaPlug Reference Board.
++
++config MACH_GURUPLUG
++ bool "Marvell GuruPlug Reference Board"
++ select KIRKWOOD_LEGACY
++ help
++ Say 'Y' here if you want your kernel to support the
++ Marvell GuruPlug Reference Board.
++
++config MACH_INETSPACE_V2
++ bool "LaCie Internet Space v2 NAS Board"
++ select KIRKWOOD_LEGACY
++ help
++ Say 'Y' here if you want your kernel to support the
++ LaCie Internet Space v2 NAS.
++
++config MACH_NETSPACE_MAX_V2
++ bool "LaCie Network Space Max v2 NAS Board"
++ select KIRKWOOD_LEGACY
++ help
++ Say 'Y' here if you want your kernel to support the
++ LaCie Network Space Max v2 NAS.
++
++config MACH_NETSPACE_V2
++ bool "LaCie Network Space v2 NAS Board"
++ select KIRKWOOD_LEGACY
++ help
++ Say 'Y' here if you want your kernel to support the
++ LaCie Network Space v2 NAS.
++
++config MACH_DREAMPLUG
++ select KIRKWOOD_LEGACY
++ bool "Marvell DreamPlug Reference Board"
++ help
++ Say 'Y' here if you want your kernel to support the
++ Marvell DreamPlug Reference Board.
++
++config MACH_ICONNECT
++ select KIRKWOOD_LEGACY
++ bool "Iomega iConnect Wireless Data Station"
++ help
++ Say 'Y' here if you want your kernel to support the
++ Iomega iConnect Wireless Data Station.
++
++config MACH_NAS6210
++ select KIRKWOOD_LEGACY
++ bool "Raidsonic ICY BOX IB-62x0"
++ help
++ Say 'Y' here if you want your kernel to support the
++ Raidsonic ICY BOX IB-62x0.
++
+ config MACH_TS219
+ bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
+ select KIRKWOOD_LEGACY
+@@ -113,6 +192,7 @@
+ Say 'Y' here if you want your kernel to support the
+ Marvell 88F6281 GTW GE Board (Flattened Device Tree).
+
++
+ endmenu
+
+ endif
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/Makefile linux-3.14.22/arch/arm/mach-kirkwood/Makefile
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/Makefile 2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/arch/arm/mach-kirkwood/Makefile 2014-11-04 01:11:13.009019440 +0100
+@@ -2,6 +2,14 @@
+ obj-$(CONFIG_KIRKWOOD_LEGACY) += irq.o mpp.o
+ obj-$(CONFIG_PM) += pm.o
+
++obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o
++obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o
++obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o
++obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o
++obj-$(CONFIG_MACH_INETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o
++obj-$(CONFIG_MACH_NETSPACE_MAX_V2) += netspace_v2-setup.o lacie_v2-common.o
++obj-$(CONFIG_MACH_NETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o
++obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o
+ obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o
+ 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
+@@ -11,6 +19,8 @@
+ obj-$(CONFIG_MACH_T5325) += t5325-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_ICONNECT) += iconnect-setup.o
++obj-$(CONFIG_MACH_NAS6210) += nas6210-setup.o
+
+ obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o
+ obj-$(CONFIG_MACH_MV88F6281GTW_GE_DT) += board-mv88f6281gtw_ge.o
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-3.14.22/arch/arm/mach-kirkwood/nas6210-setup.c
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/nas6210-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/arch/arm/mach-kirkwood/nas6210-setup.c 2014-11-04 00:25:48.393687522 +0100
+@@ -0,0 +1,185 @@
++/*
++ * arch/arm/mach-kirkwood/nas6210-setup.c
++ *
++ * Raidsonic ICYBOX NAS6210 and 6220 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 <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/gpio_keys.h>
++#include <linux/i2c.h>
++#include <linux/input.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include "common.h"
++#include "mpp.h"
++
++#define NAS6210_GPIO_POWER_OFF 24
++
++static struct mtd_partition nas6210_nand_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0,
++ .size = SZ_1M,
++ .mask_flags = MTD_WRITEABLE, /* read only */
++ }, {
++ .name = "uImage",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = (SZ_1M*6),
++ }, {
++ .name = "root",
++ .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 = "nas6210:green:power",
++ .default_trigger = "default-on",
++ .gpio = 25,
++ .active_low = 0,
++ },
++ {
++ .name = "nas6210:red:power",
++ .default_trigger = "none",
++ .gpio = 22,
++ .active_low = 0,
++ },
++ {
++ .name = "nas6210: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 */
++ MPP25_GPIO, /* Power LED green */
++ MPP27_GPIO, /* USB transfer LED */
++ MPP28_GPIO, /* Reset button */
++ MPP29_GPIO, /* USB Copy button */
++ 0
++};
++
++void nas6210_power_off(void)
++{
++ gpio_set_value(NAS6210_GPIO_POWER_OFF, 1);
++ while(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 pin");
++}
++
++static int __init nas6210_pci_init(void)
++{
++ if (machine_is_nas6210()) {
++ kirkwood_pcie_init(KW_PCIE0);
++ }
++ return 0;
++}
++subsys_initcall(nas6210_pci_init);
++
++MACHINE_START(NAS6210, "RaidSonic ICY BOX IB-NAS62x0")
++ /* Maintainer: Arne Fitzenreiter <arne_f@ipfire.org> */
++ .atag_offset = 0x00000100,
++ .init_machine = nas6210_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/netspace_v2-setup.c linux-3.14.22/arch/arm/mach-kirkwood/netspace_v2-setup.c
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/netspace_v2-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/arch/arm/mach-kirkwood/netspace_v2-setup.c 2014-10-15 08:32:29.000000000 +0200
+@@ -0,0 +1,293 @@
++/*
++ * arch/arm/mach-kirkwood/netspace_v2-setup.c
++ *
++ * LaCie Network Space v2 board setup
++ *
++ * Copyright (C) 2009 Simon Guinot <sguinot@lacie.com>
++ * Copyright (C) 2009 Benoît Canet <benoit.canet@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/input.h>
++#include <linux/gpio.h>
++#include <linux/gpio_keys.h>
++#include <linux/leds.h>
++#include <linux/gpio-fan.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include <linux/platform_data/leds-kirkwood-ns2.h>
++#include "common.h"
++#include "mpp.h"
++#include "lacie_v2-common.h"
++
++/*****************************************************************************
++ * Ethernet
++ ****************************************************************************/
++
++static struct mv643xx_eth_platform_data netspace_v2_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(8),
++};
++
++/*****************************************************************************
++ * SATA
++ ****************************************************************************/
++
++static struct mv_sata_platform_data netspace_v2_sata_data = {
++ .n_ports = 2,
++};
++
++/*****************************************************************************
++ * GPIO keys
++ ****************************************************************************/
++
++#define NETSPACE_V2_PUSH_BUTTON 32
++
++static struct gpio_keys_button netspace_v2_buttons[] = {
++ [0] = {
++ .code = KEY_POWER,
++ .gpio = NETSPACE_V2_PUSH_BUTTON,
++ .desc = "Power push button",
++ .active_low = 0,
++ },
++};
++
++static struct gpio_keys_platform_data netspace_v2_button_data = {
++ .buttons = netspace_v2_buttons,
++ .nbuttons = ARRAY_SIZE(netspace_v2_buttons),
++};
++
++static struct platform_device netspace_v2_gpio_buttons = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &netspace_v2_button_data,
++ },
++};
++
++/*****************************************************************************
++ * GPIO LEDs
++ ****************************************************************************/
++
++#define NETSPACE_V2_GPIO_RED_LED 12
++
++static struct gpio_led netspace_v2_gpio_led_pins[] = {
++ {
++ .name = "ns_v2:red:fail",
++ .gpio = NETSPACE_V2_GPIO_RED_LED,
++ },
++};
++
++static struct gpio_led_platform_data netspace_v2_gpio_leds_data = {
++ .num_leds = ARRAY_SIZE(netspace_v2_gpio_led_pins),
++ .leds = netspace_v2_gpio_led_pins,
++};
++
++static struct platform_device netspace_v2_gpio_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &netspace_v2_gpio_leds_data,
++ },
++};
++
++/*****************************************************************************
++ * Dual-GPIO CPLD LEDs
++ ****************************************************************************/
++
++#define NETSPACE_V2_GPIO_BLUE_LED_SLOW 29
++#define NETSPACE_V2_GPIO_BLUE_LED_CMD 30
++
++static struct ns2_led netspace_v2_led_pins[] = {
++ {
++ .name = "ns_v2:blue:sata",
++ .cmd = NETSPACE_V2_GPIO_BLUE_LED_CMD,
++ .slow = NETSPACE_V2_GPIO_BLUE_LED_SLOW,
++ },
++};
++
++static struct ns2_led_platform_data netspace_v2_leds_data = {
++ .num_leds = ARRAY_SIZE(netspace_v2_led_pins),
++ .leds = netspace_v2_led_pins,
++};
++
++static struct platform_device netspace_v2_leds = {
++ .name = "leds-ns2",
++ .id = -1,
++ .dev = {
++ .platform_data = &netspace_v2_leds_data,
++ },
++};
++
++/*****************************************************************************
++ * GPIO fan
++ ****************************************************************************/
++
++/* Designed for fan 40x40x16: ADDA AD0412LB-D50 6000rpm@12v */
++static struct gpio_fan_speed netspace_max_v2_fan_speed[] = {
++ { 0, 0 },
++ { 1500, 15 },
++ { 1700, 14 },
++ { 1800, 13 },
++ { 2100, 12 },
++ { 3100, 11 },
++ { 3300, 10 },
++ { 4300, 9 },
++ { 5500, 8 },
++};
++
++static unsigned netspace_max_v2_fan_ctrl[] = { 22, 7, 33, 23 };
++
++static struct gpio_fan_alarm netspace_max_v2_fan_alarm = {
++ .gpio = 25,
++ .active_low = 1,
++};
++
++static struct gpio_fan_platform_data netspace_max_v2_fan_data = {
++ .num_ctrl = ARRAY_SIZE(netspace_max_v2_fan_ctrl),
++ .ctrl = netspace_max_v2_fan_ctrl,
++ .alarm = &netspace_max_v2_fan_alarm,
++ .num_speed = ARRAY_SIZE(netspace_max_v2_fan_speed),
++ .speed = netspace_max_v2_fan_speed,
++};
++
++static struct platform_device netspace_max_v2_gpio_fan = {
++ .name = "gpio-fan",
++ .id = -1,
++ .dev = {
++ .platform_data = &netspace_max_v2_fan_data,
++ },
++};
++
++/*****************************************************************************
++ * General Setup
++ ****************************************************************************/
++
++static unsigned int netspace_v2_mpp_config[] __initdata = {
++ MPP0_SPI_SCn,
++ MPP1_SPI_MOSI,
++ MPP2_SPI_SCK,
++ MPP3_SPI_MISO,
++ MPP4_NF_IO6,
++ MPP5_NF_IO7,
++ MPP6_SYSRST_OUTn,
++ MPP7_GPO, /* Fan speed (bit 1) */
++ MPP8_TW0_SDA,
++ MPP9_TW0_SCK,
++ MPP10_UART0_TXD,
++ MPP11_UART0_RXD,
++ MPP12_GPO, /* Red led */
++ MPP14_GPIO, /* USB fuse */
++ MPP16_GPIO, /* SATA 0 power */
++ MPP17_GPIO, /* SATA 1 power */
++ MPP18_NF_IO0,
++ MPP19_NF_IO1,
++ MPP20_SATA1_ACTn,
++ MPP21_SATA0_ACTn,
++ MPP22_GPIO, /* Fan speed (bit 0) */
++ MPP23_GPIO, /* Fan power */
++ MPP24_GPIO, /* USB mode select */
++ MPP25_GPIO, /* Fan rotation fail */
++ MPP26_GPIO, /* USB device vbus */
++ MPP28_GPIO, /* USB enable host vbus */
++ MPP29_GPIO, /* Blue led (slow register) */
++ MPP30_GPIO, /* Blue led (command register) */
++ MPP31_GPIO, /* Board power off */
++ MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */
++ MPP33_GPO, /* Fan speed (bit 2) */
++ 0
++};
++
++#define NETSPACE_V2_GPIO_POWER_OFF 31
++
++static void netspace_v2_power_off(void)
++{
++ gpio_set_value(NETSPACE_V2_GPIO_POWER_OFF, 1);
++}
++
++static void __init netspace_v2_init(void)
++{
++ /*
++ * Basic setup. Needs to be called early.
++ */
++ kirkwood_init();
++ kirkwood_mpp_conf(netspace_v2_mpp_config);
++
++ if (machine_is_netspace_max_v2())
++ lacie_v2_hdd_power_init(2);
++ else
++ lacie_v2_hdd_power_init(1);
++
++ kirkwood_ehci_init();
++ kirkwood_ge00_init(&netspace_v2_ge00_data);
++ kirkwood_sata_init(&netspace_v2_sata_data);
++ kirkwood_uart0_init();
++ lacie_v2_register_flash();
++ lacie_v2_register_i2c_devices();
++
++ platform_device_register(&netspace_v2_leds);
++ platform_device_register(&netspace_v2_gpio_leds);
++ platform_device_register(&netspace_v2_gpio_buttons);
++ if (machine_is_netspace_max_v2())
++ platform_device_register(&netspace_max_v2_gpio_fan);
++
++ if (gpio_request(NETSPACE_V2_GPIO_POWER_OFF, "power-off") == 0 &&
++ gpio_direction_output(NETSPACE_V2_GPIO_POWER_OFF, 0) == 0)
++ pm_power_off = netspace_v2_power_off;
++ else
++ pr_err("netspace_v2: failed to configure power-off GPIO\n");
++}
++
++#ifdef CONFIG_MACH_NETSPACE_V2
++MACHINE_START(NETSPACE_V2, "LaCie Network Space v2")
++ .atag_offset = 0x100,
++ .init_machine = netspace_v2_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_INETSPACE_V2
++MACHINE_START(INETSPACE_V2, "LaCie Internet Space v2")
++ .atag_offset = 0x100,
++ .init_machine = netspace_v2_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_NETSPACE_MAX_V2
++MACHINE_START(NETSPACE_MAX_V2, "LaCie Network Space Max v2")
++ .atag_offset = 0x100,
++ .init_machine = netspace_v2_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
++#endif
+diff -Naur linux-3.14.22.org/arch/arm/mach-kirkwood/sheevaplug-setup.c linux-3.14.22/arch/arm/mach-kirkwood/sheevaplug-setup.c
+--- linux-3.14.22.org/arch/arm/mach-kirkwood/sheevaplug-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/arch/arm/mach-kirkwood/sheevaplug-setup.c 2014-10-15 08:32:29.000000000 +0200
+@@ -0,0 +1,161 @@
++/*
++ * arch/arm/mach-kirkwood/sheevaplug-setup.c
++ *
++ * Marvell SheevaPlug Reference 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 <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/ata_platform.h>
++#include <linux/mtd/partitions.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include <linux/platform_data/mmc-mvsdio.h>
++#include "common.h"
++#include "mpp.h"
++
++static struct mtd_partition sheevaplug_nand_parts[] = {
++ {
++ .name = "u-boot",
++ .offset = 0,
++ .size = SZ_1M
++ }, {
++ .name = "uImage",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = SZ_4M
++ }, {
++ .name = "root",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL
++ },
++};
++
++static struct mv643xx_eth_platform_data sheevaplug_ge00_data = {
++ .phy_addr = MV643XX_ETH_PHY_ADDR(0),
++};
++
++static struct mv_sata_platform_data sheeva_esata_sata_data = {
++ .n_ports = 2,
++};
++
++static struct mvsdio_platform_data sheevaplug_mvsdio_data = {
++ /* unfortunately the CD signal has not been connected */
++};
++
++static struct mvsdio_platform_data sheeva_esata_mvsdio_data = {
++ .gpio_write_protect = 44, /* MPP44 used as SD write protect */
++ .gpio_card_detect = 47, /* MPP47 used as SD card detect */
++};
++
++static struct gpio_led sheevaplug_led_pins[] = {
++ {
++ .name = "plug:red:misc",
++ .default_trigger = "none",
++ .gpio = 46,
++ .active_low = 1,
++ },
++ {
++ .name = "plug:green:health",
++ .default_trigger = "default-on",
++ .gpio = 49,
++ .active_low = 1,
++ },
++};
++
++static struct gpio_led_platform_data sheevaplug_led_data = {
++ .leds = sheevaplug_led_pins,
++ .num_leds = ARRAY_SIZE(sheevaplug_led_pins),
++};
++
++static struct platform_device sheevaplug_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &sheevaplug_led_data,
++ }
++};
++
++static unsigned int sheevaplug_mpp_config[] __initdata = {
++ MPP29_GPIO, /* USB Power Enable */
++ MPP46_GPIO, /* LED Red */
++ MPP49_GPIO, /* LED */
++ 0
++};
++
++static unsigned int sheeva_esata_mpp_config[] __initdata = {
++ MPP29_GPIO, /* USB Power Enable */
++ MPP44_GPIO, /* SD Write Protect */
++ MPP47_GPIO, /* SD Card Detect */
++ MPP49_GPIO, /* LED Green */
++ 0
++};
++
++static void __init sheevaplug_init(void)
++{
++ /*
++ * Basic setup. Needs to be called early.
++ */
++ kirkwood_init();
++
++ /* setup gpio pin select */
++ if (machine_is_esata_sheevaplug())
++ kirkwood_mpp_conf(sheeva_esata_mpp_config);
++ else
++ kirkwood_mpp_conf(sheevaplug_mpp_config);
++
++ kirkwood_uart0_init();
++ kirkwood_nand_init(ARRAY_AND_SIZE(sheevaplug_nand_parts), 25);
++
++ if (gpio_request(29, "USB Power Enable") != 0 ||
++ gpio_direction_output(29, 1) != 0)
++ pr_err("can't set up GPIO 29 (USB Power Enable)\n");
++ kirkwood_ehci_init();
++
++ kirkwood_ge00_init(&sheevaplug_ge00_data);
++
++ /* honor lower power consumption for plugs with out eSATA */
++ if (machine_is_esata_sheevaplug())
++ kirkwood_sata_init(&sheeva_esata_sata_data);
++
++ /* enable sd wp and sd cd on plugs with esata */
++ if (machine_is_esata_sheevaplug())
++ kirkwood_sdio_init(&sheeva_esata_mvsdio_data);
++ else
++ kirkwood_sdio_init(&sheevaplug_mvsdio_data);
++
++ platform_device_register(&sheevaplug_leds);
++}
++
++#ifdef CONFIG_MACH_SHEEVAPLUG
++MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board")
++ /* Maintainer: shadi Ammouri <shadi@marvell.com> */
++ .atag_offset = 0x100,
++ .init_machine = sheevaplug_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_ESATA_SHEEVAPLUG
++MACHINE_START(ESATA_SHEEVAPLUG, "Marvell eSATA SheevaPlug Reference Board")
++ .atag_offset = 0x100,
++ .init_machine = sheevaplug_init,
++ .map_io = kirkwood_map_io,
++ .init_early = kirkwood_init_early,
++ .init_irq = kirkwood_init_irq,
++ .init_time = kirkwood_timer_init,
++ .restart = kirkwood_restart,
++MACHINE_END
++#endif
+diff -Naur linux-3.14.22.org/arch/arm/tools/mach-types linux-3.14.22/arch/arm/tools/mach-types
+--- linux-3.14.22.org/arch/arm/tools/mach-types 2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/arch/arm/tools/mach-types 2014-11-04 00:25:48.393687522 +0100
+@@ -447,6 +447,7 @@
+ smartq5 MACH_SMARTQ5 SMARTQ5 2534
+ davinci_dm6467tevm MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM 2548
+ mxt_td60 MACH_MXT_TD60 MXT_TD60 2550
++guruplug MACH_GURUPLUG GURUPLUG 2601
+ capc7117 MACH_CAPC7117 CAPC7117 2612
+ icontrol MACH_ICONTROL ICONTROL 2624
+ gplugd MACH_GPLUGD GPLUGD 2625
+@@ -454,7 +455,7 @@
+ mx23evk MACH_MX23EVK MX23EVK 2629
+ ap4evb MACH_AP4EVB AP4EVB 2630
+ mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650
+-guruplug MACH_GURUPLUG GURUPLUG 2659
++dreamplug1 MACH_DREAMPLUG1 DREAMPLUG1 2659
+ spear310 MACH_SPEAR310 SPEAR310 2660
+ spear320 MACH_SPEAR320 SPEAR320 2661
+ aquila MACH_AQUILA AQUILA 2676
+@@ -491,6 +492,7 @@
+ t5325 MACH_T5325 T5325 2846
+ income MACH_INCOME INCOME 2849
+ goni MACH_GONI GONI 2862
++iconnect MACH_ICONNECT ICONNECT 2870
+ bv07 MACH_BV07 BV07 2882
+ openrd_ultimate MACH_OPENRD_ULTIMATE OPENRD_ULTIMATE 2884
+ devixp MACH_DEVIXP DEVIXP 2885
+@@ -520,6 +522,7 @@
+ vpr200 MACH_VPR200 VPR200 3087
+ torbreck MACH_TORBRECK TORBRECK 3090
+ prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103
++nas6210 MACH_NAS6210 NAS6210 3104
+ paz00 MACH_PAZ00 PAZ00 3128
+ acmenetusfoxg20 MACH_ACMENETUSFOXG20 ACMENETUSFOXG20 3129
+ ag5evm MACH_AG5EVM AG5EVM 3189
+@@ -544,6 +547,7 @@
+ nspire MACH_NSPIRE NSPIRE 3503
+ nokia_rm696 MACH_NOKIA_RM696 NOKIA_RM696 3522
+ mikrap_x168 MACH_MIKRAP_X168 MIKRAP_X168 3543
++dreamplug MACH_DREAMPLUG DREAMPLUG 3550
+ deto_macarm9 MACH_DETO_MACARM9 DETO_MACARM9 3568
+ m28evk MACH_M28EVK M28EVK 3613
+ kota2 MACH_KOTA2 KOTA2 3616