diff -Naur linux-3.2.25.org/arch/arm/Kconfig linux-3.2.25/arch/arm/Kconfig --- linux-3.2.25.org/arch/arm/Kconfig 2012-08-02 09:38:04.000000000 -0400 +++ linux-3.2.25/arch/arm/Kconfig 2012-08-11 04:42:20.985949735 -0400 @@ -197,7 +197,7 @@ config ARM_PATCH_PHYS_VIRT bool "Patch physical to virtual translations at runtime" if EMBEDDED - default y + default n depends on !XIP_KERNEL && MMU depends on !ARCH_REALVIEW || !SPARSEMEM help diff -Naur linux-3.2.25.org/arch/arm/mach-kirkwood/dreamplug-setup.c linux-3.2.25/arch/arm/mach-kirkwood/dreamplug-setup.c --- linux-3.2.25.org/arch/arm/mach-kirkwood/dreamplug-setup.c 1969-12-31 19:00:00.000000000 -0500 +++ linux-3.2.25/arch/arm/mach-kirkwood/dreamplug-setup.c 2012-08-11 10:22:53.242276474 -0400 @@ -0,0 +1,148 @@ +/* + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#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_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 marvell.com> */ + .atag_offset = 0x100, + .init_machine = dreamplug_init, + .map_io = kirkwood_map_io, + .init_early = kirkwood_init_early, + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, +MACHINE_END + +MACHINE_START(DREAMPLUG1, "Marvell DreamPlug Reference Board") + .atag_offset = 0x100, + .init_machine = dreamplug_init, + .map_io = kirkwood_map_io, + .init_early = kirkwood_init_early, + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, +MACHINE_END diff -Naur linux-3.2.25.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-3.2.25/arch/arm/mach-kirkwood/guruplug-setup.c --- linux-3.2.25.org/arch/arm/mach-kirkwood/guruplug-setup.c 2012-08-02 09:38:04.000000000 -0400 +++ linux-3.2.25/arch/arm/mach-kirkwood/guruplug-setup.c 2012-08-05 13:05:22.000000000 -0400 @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -27,15 +28,16 @@ { .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, }, }; diff -Naur linux-3.2.25.org/arch/arm/mach-kirkwood/iconnect-setup.c linux-3.2.25/arch/arm/mach-kirkwood/iconnect-setup.c --- linux-3.2.25.org/arch/arm/mach-kirkwood/iconnect-setup.c 1969-12-31 19:00:00.000000000 -0500 +++ linux-3.2.25/arch/arm/mach-kirkwood/iconnect-setup.c 2012-08-11 04:58:00.565660184 -0400 @@ -0,0 +1,212 @@ +/* + * 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 +#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, + .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(KW_PCIE0); + } + return 0; +} +subsys_initcall(iconnect_pci_init); + +MACHINE_START(ICONNECT, "Iomega iConnect Wireless Data Station") + /* Maintainer: Arne Fitzenreiter */ + .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, +MACHINE_END diff -Naur linux-3.2.25.org/arch/arm/mach-kirkwood/Kconfig linux-3.2.25/arch/arm/mach-kirkwood/Kconfig --- linux-3.2.25.org/arch/arm/mach-kirkwood/Kconfig 2012-08-02 09:38:04.000000000 -0400 +++ linux-3.2.25/arch/arm/mach-kirkwood/Kconfig 2012-08-05 12:45:22.015253501 -0400 @@ -44,6 +44,12 @@ Say 'Y' here if you want your kernel to support the Marvell GuruPlug Reference Board. +config MACH_DREAMPLUG + bool "Marvell DreamPlug Reference Board" + help + Say 'Y' here if you want your kernel to support the + Marvell DreamPlug Reference Board. + config MACH_TS219 bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" help @@ -130,6 +136,18 @@ Say 'Y' here if you want your kernel to support the HP t5325 Thin Client. +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-62x0" + help + Say 'Y' here if you want your kernel to support the + Raidsonic ICY BOX IB-62x0. + endmenu endif diff -Naur linux-3.2.25.org/arch/arm/mach-kirkwood/Makefile linux-3.2.25/arch/arm/mach-kirkwood/Makefile --- linux-3.2.25.org/arch/arm/mach-kirkwood/Makefile 2012-08-02 09:38:04.000000000 -0400 +++ linux-3.2.25/arch/arm/mach-kirkwood/Makefile 2012-08-05 12:46:49.015253501 -0400 @@ -7,6 +7,7 @@ obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o +obj-$(CONFIG_MACH_DREAMPLUG) += dreamplug-setup.o obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o @@ -18,5 +19,7 @@ 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_CPU_IDLE) += cpuidle.o diff -Naur linux-3.2.25.org/arch/arm/mach-kirkwood/mpp.h linux-3.2.25/arch/arm/mach-kirkwood/mpp.h --- linux-3.2.25.org/arch/arm/mach-kirkwood/mpp.h 2012-08-02 09:38:04.000000000 -0400 +++ linux-3.2.25/arch/arm/mach-kirkwood/mpp.h 2012-08-05 13:08:23.835566001 -0400 @@ -102,6 +102,7 @@ #define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 0, 0, 1, 1, 1, 1 ) #define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1, 1 ) +#define MPP12_GPIO MPP( 12, 0x0, 1, 1, 1, 1, 1, 1, 1 ) #define MPP12_SD_CLK MPP( 12, 0x1, 0, 0, 1, 1, 1, 1, 1 ) #define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 0, 0, 0, 0, 0, 1 ) #define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 0, 0, 0, 0, 0, 1 ) diff -Naur linux-3.2.25.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-3.2.25/arch/arm/mach-kirkwood/nas6210-setup.c --- linux-3.2.25.org/arch/arm/mach-kirkwood/nas6210-setup.c 1969-12-31 19:00:00.000000000 -0500 +++ linux-3.2.25/arch/arm/mach-kirkwood/nas6210-setup.c 2012-08-11 04:58:35.223186956 -0400 @@ -0,0 +1,184 @@ +/* + * 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 +#include +#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 = "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 */ + .atag_offset = 0x00000100, + .init_machine = nas6210_init, + .map_io = kirkwood_map_io, + .init_early = kirkwood_init_early, + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, +MACHINE_END diff -Naur linux-3.2.25.org/arch/arm/tools/mach-types linux-3.2.25/arch/arm/tools/mach-types --- linux-3.2.25.org/arch/arm/tools/mach-types 2012-08-02 09:38:04.000000000 -0400 +++ linux-3.2.25/arch/arm/tools/mach-types 2012-08-11 10:18:52.849620229 -0400 @@ -448,6 +448,7 @@ riot_bei2 MACH_RIOT_BEI2 RIOT_BEI2 2576 riot_x37 MACH_RIOT_X37 RIOT_X37 2578 pca101 MACH_PCA101 PCA101 2595 +guruplug MACH_GURUPLUG GURUPLUG 2601 capc7117 MACH_CAPC7117 CAPC7117 2612 icontrol MACH_ICONTROL ICONTROL 2624 gplugd MACH_GPLUGD GPLUGD 2625 @@ -455,7 +456,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 @@ -1123,6 +1124,7 @@ thales_adc MACH_THALES_ADC THALES_ADC 3492 ubisys_p9d_evp MACH_UBISYS_P9D_EVP UBISYS_P9D_EVP 3493 atdgp318 MACH_ATDGP318 ATDGP318 3494 +dreamplug MACH_DREAMPLUG DREAMPLUG 3550 m28evk MACH_M28EVK M28EVK 3613 smdk4212 MACH_SMDK4212 SMDK4212 3638 smdk4412 MACH_SMDK4412 SMDK4412 3765