diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2013-09-25 18:42:10 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2013-09-25 18:42:10 +0000 |
commit | f5eb50ac7ef4c61eb5ea699f31523e2a184bb176 (patch) | |
tree | 25907b0e973a400c84e98d3d0127946acea8d274 /target/linux/ar71xx/files/arch/mips | |
parent | d4680767c63c406b3e53c7056e521489b6b91fe9 (diff) | |
download | upstream-f5eb50ac7ef4c61eb5ea699f31523e2a184bb176.tar.gz upstream-f5eb50ac7ef4c61eb5ea699f31523e2a184bb176.tar.bz2 upstream-f5eb50ac7ef4c61eb5ea699f31523e2a184bb176.zip |
ar71xx: improve kernel support for the TL-MR3040 v2
This patch adds support for the hardware slide switch on
the TL-MR3040 v2.
Signed-off-by: Mads Hansen <d@taba.se>
[juhosg: use EV_SW instead of EV_KEY]
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38190 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar71xx/files/arch/mips')
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr11u.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr11u.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr11u.c index 818ed97678..74ccf639e0 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr11u.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr11u.c @@ -33,6 +33,9 @@ #define TL_MR11U_GPIO_USB_POWER 8 #define TL_MR3040_GPIO_USB_POWER 18 +#define TL_MR3040_V2_GPIO_BTN_SW1 19 +#define TL_MR3040_V2_GPIO_BTN_SW2 20 + #define TL_MR11U_KEYS_POLL_INTERVAL 20 /* msecs */ #define TL_MR11U_KEYS_DEBOUNCE_INTERVAL (3 * TL_MR11U_KEYS_POLL_INTERVAL) @@ -82,6 +85,33 @@ static struct gpio_keys_button tl_mr11u_gpio_keys[] __initdata = { }, }; +static struct gpio_keys_button tl_mr3040_v2_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL, + .gpio = TL_MR11U_GPIO_BTN_RESET, + .active_low = 0, + }, + { + .desc = "sw1", + .type = EV_SW, + .code = BTN_0, + .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL, + .gpio = TL_MR3040_V2_GPIO_BTN_SW1, + .active_low = 0, + }, + { + .desc = "sw2", + .type = EV_SW, + .code = BTN_1, + .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL, + .gpio = TL_MR3040_V2_GPIO_BTN_SW2, + .active_low = 0, + } +}; + static void __init common_setup(void) { u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); @@ -136,3 +166,18 @@ static void __init tl_mr3040_setup(void) MIPS_MACHINE(ATH79_MACH_TL_MR3040, "TL-MR3040", "TP-LINK TL-MR3040", tl_mr3040_setup); + +static void __init tl_mr3040_v2_setup(void) +{ + common_setup(); + + ath79_register_gpio_keys_polled(-1, TL_MR11U_KEYS_POLL_INTERVAL, + ARRAY_SIZE(tl_mr3040_v2_gpio_keys), + tl_mr3040_v2_gpio_keys); + gpio_request_one(TL_MR3040_GPIO_USB_POWER, + GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, + "USB power"); +} + +MIPS_MACHINE(ATH79_MACH_TL_MR3040_V2, "TL-MR3040-v2", "TP-LINK TL-MR3040 v2", + tl_mr3040_v2_setup); |