-diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/dreamplug-setup.c linux-2.6.32.45/arch/arm/mach-kirkwood/dreamplug-setup.c
---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/dreamplug-setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.32.45/arch/arm/mach-kirkwood/dreamplug-setup.c 2011-10-11 15:35:37.000000000 +0200
+diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/dreamplug-setup.c linux-2.6.32.57/arch/arm/mach-kirkwood/dreamplug-setup.c
+--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/dreamplug-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.32.57/arch/arm/mach-kirkwood/dreamplug-setup.c 2012-03-02 09:22:40.107199269 +0100
@@ -0,0 +1,140 @@
+/*
+ * arch/arm/mach-kirkwood/dreamplug-setup.c
+ .init_irq = kirkwood_init_irq,
+ .timer = &kirkwood_timer,
+MACHINE_END
-diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-2.6.32.45/arch/arm/mach-kirkwood/guruplug-setup.c
---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/guruplug-setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.32.45/arch/arm/mach-kirkwood/guruplug-setup.c 2011-10-11 15:35:37.000000000 +0200
-@@ -0,0 +1,131 @@
+diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-2.6.32.57/arch/arm/mach-kirkwood/guruplug-setup.c
+--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/guruplug-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.32.57/arch/arm/mach-kirkwood/guruplug-setup.c 2012-03-02 23:36:51.627514981 +0100
+@@ -0,0 +1,133 @@
+/*
+ * arch/arm/mach-kirkwood/guruplug-setup.c
+ *
+#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>
+ {
+ .name = "u-boot",
+ .offset = 0,
-+ .size = SZ_1M
++ .size = SZ_1M,
++ .mask_flags = MTD_WRITEABLE, /* read only */
+ }, {
+ .name = "uImage",
+ .offset = MTDPART_OFS_NXTBLK,
-+ .size = SZ_4M
++ .size = SZ_4M,
+ }, {
+ .name = "root",
+ .offset = MTDPART_OFS_NXTBLK,
-+ .size = MTDPART_SIZ_FULL
++ .size = MTDPART_SIZ_FULL,
+ },
+};
+
+ .init_irq = kirkwood_init_irq,
+ .timer = &kirkwood_timer,
+MACHINE_END
-diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/Kconfig linux-2.6.32.45/arch/arm/mach-kirkwood/Kconfig
---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/Kconfig 2011-08-16 03:57:37.000000000 +0200
-+++ linux-2.6.32.45/arch/arm/mach-kirkwood/Kconfig 2011-10-15 17:06:55.816070291 +0200
+diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/iconnect-setup.c linux-2.6.32.57/arch/arm/mach-kirkwood/iconnect-setup.c
+--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/iconnect-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.32.57/arch/arm/mach-kirkwood/iconnect-setup.c 2012-03-03 00:15:42.757514706 +0100
+@@ -0,0 +1,211 @@
++/*
++ * 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_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();
++ }
++ return 0;
++}
++subsys_initcall(iconnect_pci_init);
++
++MACHINE_START(ICONNECT, "Iomega iConnect Wireless Data Station")
++ /* Maintainer: Arne Fitzenreiter <arne_f@ipfire.org> */
++ .boot_params = 0x00000100,
++ .init_machine = iconnect_init,
++ .map_io = kirkwood_map_io,
++ .init_irq = kirkwood_init_irq,
++ .timer = &kirkwood_timer,
++MACHINE_END
+diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/Kconfig linux-2.6.32.57/arch/arm/mach-kirkwood/Kconfig
+--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/Kconfig 2012-02-13 20:29:11.000000000 +0100
++++ linux-2.6.32.57/arch/arm/mach-kirkwood/Kconfig 2012-03-02 09:28:49.387192309 +0100
@@ -32,6 +32,18 @@
Say 'Y' here if you want your kernel to support the
Marvell SheevaPlug Reference Board.
config MACH_TS219
bool "QNAP TS-119 and TS-219 Turbo NAS"
help
-@@ -44,6 +56,12 @@
+@@ -44,6 +56,18 @@
Say 'Y' here if you want your kernel to support the
Marvell OpenRD Base Board.
++config MACH_ICONNECT
++ 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
+ bool "RaidSonic ICY BOX IB-NAS62x0"
+ help
endmenu
endif
-diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/Makefile linux-2.6.32.45/arch/arm/mach-kirkwood/Makefile
---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/Makefile 2011-08-16 03:57:37.000000000 +0200
-+++ linux-2.6.32.45/arch/arm/mach-kirkwood/Makefile 2011-10-15 17:07:16.346068829 +0200
-@@ -5,7 +5,10 @@
+diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/Makefile linux-2.6.32.57/arch/arm/mach-kirkwood/Makefile
+--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/Makefile 2012-02-13 20:29:11.000000000 +0100
++++ linux-2.6.32.57/arch/arm/mach-kirkwood/Makefile 2012-03-02 09:26:39.447195212 +0100
+@@ -5,7 +5,11 @@
obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o
obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o
obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o
+obj-$(CONFIG_MACH_DREAMPLUG) += dreamplug-setup.o
obj-$(CONFIG_MACH_TS219) += ts219-setup.o
obj-$(CONFIG_MACH_OPENRD_BASE) += openrd_base-setup.o
++obj-$(CONFIG_MACH_ICONNECT) += iconnect-setup.o
+obj-$(CONFIG_MACH_NAS6210) += nas6210-setup.o
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
-diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-2.6.32.45/arch/arm/mach-kirkwood/nas6210-setup.c
---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/nas6210-setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.32.45/arch/arm/mach-kirkwood/nas6210-setup.c 2011-10-16 09:57:35.268409525 +0200
-@@ -0,0 +1,180 @@
+diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/mpp.h linux-2.6.32.57/arch/arm/mach-kirkwood/mpp.h
+--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/mpp.h 2012-02-13 20:29:11.000000000 +0100
++++ linux-2.6.32.57/arch/arm/mach-kirkwood/mpp.h 2012-03-02 10:26:53.987196429 +0100
+@@ -102,7 +102,9 @@
+ #define MPP11_PTP_CLK MPP( 11, 0xd, 1, 0, 1, 1, 1, 1 )
+ #define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 1, 0, 1, 1, 1 )
+
++
+ #define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1 )
++#define MPP12_GPIO MPP( 12, 0x0, 1, 1, 1, 1, 1, 1 )
+ #define MPP12_SD_CLK MPP( 12, 0x1, 0, 1, 1, 1, 1, 1 )
+
+ #define MPP13_GPIO MPP( 13, 0x0, 1, 1, 1, 1, 1, 1 )
+diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-2.6.32.57/arch/arm/mach-kirkwood/nas6210-setup.c
+--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/nas6210-setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.32.57/arch/arm/mach-kirkwood/nas6210-setup.c 2012-03-02 23:37:35.077514152 +0100
+@@ -0,0 +1,183 @@
+/*
+ * arch/arm/mach-kirkwood/nas6210-setup.c
+ *
+#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>
+ {
+ .name = "u-boot",
+ .offset = 0,
-+ .size = SZ_1M
++ .size = SZ_1M,
++ .mask_flags = MTD_WRITEABLE, /* read only */
+ }, {
+ .name = "uImage",
+ .offset = MTDPART_OFS_NXTBLK,
-+ .size = (SZ_1M*6)
++ .size = (SZ_1M*6),
+ }, {
+ .name = "root",
+ .offset = MTDPART_OFS_NXTBLK,
-+ .size = MTDPART_SIZ_FULL
++ .size = MTDPART_SIZ_FULL,
+ },
+};
+
+ .init_irq = kirkwood_init_irq,
+ .timer = &kirkwood_timer,
+MACHINE_END
-diff -Naur linux-2.6.32.45.org/arch/arm/tools/mach-types linux-2.6.32.45/arch/arm/tools/mach-types
---- linux-2.6.32.45.org/arch/arm/tools/mach-types 2011-08-16 03:57:37.000000000 +0200
-+++ linux-2.6.32.45/arch/arm/tools/mach-types 2011-10-15 17:05:46.486069811 +0200
-@@ -2536,3 +2536,6 @@
+diff -Naur linux-2.6.32.57.org/arch/arm/tools/mach-types linux-2.6.32.57/arch/arm/tools/mach-types
+--- linux-2.6.32.57.org/arch/arm/tools/mach-types 2012-02-13 20:29:11.000000000 +0100
++++ linux-2.6.32.57/arch/arm/tools/mach-types 2012-03-02 09:25:26.787196718 +0100
+@@ -2536,3 +2536,7 @@
mxt_td60 MACH_MXT_TD60 MXT_TD60 2550
esyx MACH_ESYX ESYX 2551
bulldog MACH_BULLDOG BULLDOG 2553
+guruplug MACH_GURUPLUG GURUPLUG 2601
+dreamplug MACH_DREAMPLUG DREAMPLUG 2659
++iconnect MACH_ICONNECT ICONNECT 2870
+nas6210 MACH_NAS6210 NAS6210 3104