X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/b91f24824772c446534e8b296dec1a0baada6b1d..c4174021acc57c9d482e4496733352bcac5a0d13:/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..3bc814067 100644 --- a/target/linux/kirkwood/patches/200-iconnect.patch +++ b/target/linux/kirkwood/patches/200-iconnect.patch @@ -1,6 +1,6 @@ --- a/arch/arm/mach-kirkwood/Makefile +++ b/arch/arm/mach-kirkwood/Makefile -@@ -8,6 +8,7 @@ +@@ -8,6 +8,7 @@ obj-$(CONFIG_MACH_SHEEVAPLUG) += sheeva obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o @@ -9,8 +9,8 @@ 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 +@@ -105,6 +105,12 @@ config MACH_DOCKSTAR Say 'Y' here if you want your kernel to support the Seagate FreeAgent DockStar. @@ -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 +@@ -103,6 +103,7 @@ + #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 ) +--- /dev/null ++++ b/arch/arm/mach-kirkwood/iconnect-setup.c +@@ -0,0 +1,190 @@ +/* + * 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,6 +202,9 @@ + + kirkwood_uart0_init(); + kirkwood_i2c_init(); ++ ++ platform_device_register(&iconnect_leds); ++ platform_device_register(&iconnect_button_device); +} + +static int __init iconnect_pci_init(void)