X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/b91f24824772c446534e8b296dec1a0baada6b1d..93b9f41b61873dd2e47ddb1446863ac8ca906c94:/target/linux/kirkwood/patches/200-iconnect.patch diff --git a/target/linux/kirkwood/patches/200-iconnect.patch b/target/linux/kirkwood/patches/200-iconnect.patch index fd1e486ba..f8baae64a 100644 --- a/target/linux/kirkwood/patches/200-iconnect.patch +++ b/target/linux/kirkwood/patches/200-iconnect.patch @@ -1,18 +1,18 @@ --- a/arch/arm/mach-kirkwood/Makefile +++ b/arch/arm/mach-kirkwood/Makefile -@@ -8,6 +8,7 @@ - obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o +@@ -8,6 +8,7 @@ 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_ICONNECT) += iconnect-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 --- a/arch/arm/mach-kirkwood/Kconfig -+++ b/arch/arm/mach-kirkwood/Kconfig -@@ -105,6 +105,12 @@ ++++ b/arch/arm/mach-kirkwood/Kconfig +@@ -130,6 +130,12 @@ config MACH_T5325 Say 'Y' here if you want your kernel to support the - Seagate FreeAgent DockStar. + HP t5325 Thin Client. +config MACH_ICONNECT + bool "Iomega iConnect Wireless" @@ -23,9 +23,19 @@ endmenu endif ---- /dev/null -+++ b/arch/arm/mach-kirkwood/iconnect-setup.c -@@ -0,0 +1,95 @@ +--- a/arch/arm/mach-kirkwood/mpp.h ++++ b/arch/arm/mach-kirkwood/mpp.h +@@ -108,6 +108,7 @@ + #define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 1, 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, 1, 1, 1, 1, 1, 1 ) + #define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 1, 0, 0, 0, 0, 1 ) + #define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 1, 0, 0, 0, 0, 1 ) +--- /dev/null ++++ b/arch/arm/mach-kirkwood/iconnect-setup.c +@@ -0,0 +1,188 @@ +/* + * arch/arm/mach-kirkwood/iconnect-setup.c + * @@ -43,6 +53,10 @@ +#include +#include +#include ++#include ++#include ++#include ++#include +#include +#include +#include @@ -73,12 +87,100 @@ + .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 = { -+ MPP8_TW_SDA, -+ MPP9_TW_SCK, -+ MPP10_UART0_TXD, -+ MPP11_UART0_RXD, -+ MPP28_GPIO, ++ 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 +}; + @@ -100,12 +202,15 @@ + + 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(); ++ kirkwood_pcie_init(KW_PCIE0); + + return 0; +} @@ -113,8 +218,6 @@ + + +MACHINE_START(ICONNECT, "Iomega iConnect Wireless") -+ .phys_io = KIRKWOOD_REGS_PHYS_BASE, -+ .io_pg_offst = ((KIRKWOOD_REGS_VIRT_BASE) >> 18) & 0xfffc, + .boot_params = 0x00000100, + .init_machine = iconnect_init, + .map_io = kirkwood_map_io,