diff options
author | Robert Marko <robimarko@gmail.com> | 2018-02-21 13:15:17 +0100 |
---|---|---|
committer | Piotr Dymacz <pepe2k@gmail.com> | 2018-04-06 23:11:00 +0200 |
commit | b834487203996e71c5ea25f83488873483b96522 (patch) | |
tree | d270217b9635720110c22d0548edeb3937b00b0f /target/linux/ar71xx/files/arch | |
parent | 6148c465561cb5ba0b05ba77ecfe7cd42faeb835 (diff) | |
download | upstream-b834487203996e71c5ea25f83488873483b96522.tar.gz upstream-b834487203996e71c5ea25f83488873483b96522.tar.bz2 upstream-b834487203996e71c5ea25f83488873483b96522.zip |
ar71xx: add support for TP-Link TL-WR940N v6
Add support for TL-WR940N v6 board. It is pretty much the same as v5
except they only left WAN LED and removed other ones.
Installation: flash factory image through WEB UI or use TFTP.
Signed-off-by: Robert Marko <robimarko@gmail.com>
Diffstat (limited to 'target/linux/ar71xx/files/arch')
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c | 69 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ath79/machtypes.h | 1 |
2 files changed, 53 insertions, 17 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c index d693b947c8..b530622d9f 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c @@ -1,5 +1,5 @@ /* - * TP-LINK TL-WR940N v4 board support + * TP-LINK TL-WR940N v4 and v6 board support * * Copyright (C) 2016 David Lutz <kpanic@ff3l.net> * @@ -32,12 +32,15 @@ #define TL_WR940N_V4_GPIO_LED_LAN1 8 #define TL_WR940N_V4_GPIO_LED_WLAN 7 #define TL_WR940N_V4_GPIO_LED_SYSTEM 5 +/* WR940N v6 specific GPIO*/ +#define TL_WR940N_V6_GPIO_LED_DIAG_ORANGE 15 +#define TL_WR940N_V6_GPIO_LED_WAN_BLUE 14 #define TL_WR940N_V4_GPIO_BTN_RESET 1 #define TL_WR940N_V4_GPIO_BTN_RFKILL 2 -#define TL_WR940N_V4_KEYS_POLL_INTERVAL 20 -#define TL_WR940N_V4_KEYS_DEBOUNCE_INTERVAL (3 * TL_WR940N_V4_KEYS_POLL_INTERVAL) +#define TL_WR940N_KEYS_POLL_INTERVAL 20 +#define TL_WR940N_KEYS_DEBOUNCE_INTERVAL (3 * TL_WR940N_KEYS_POLL_INTERVAL) static struct gpio_led tl_wr940n_v4_leds_gpio[] __initdata = { @@ -93,43 +96,49 @@ static struct gpio_keys_button tl_wr940n_v4_gpio_keys[] __initdata = { .desc = "Reset button", .type = EV_KEY, .code = KEY_RESTART, - .debounce_interval = TL_WR940N_V4_KEYS_DEBOUNCE_INTERVAL, + .debounce_interval = TL_WR940N_KEYS_DEBOUNCE_INTERVAL, .gpio = TL_WR940N_V4_GPIO_BTN_RESET, .active_low = 1, }, { .desc = "RFKILL button", .type = EV_KEY, .code = KEY_RFKILL, - .debounce_interval = TL_WR940N_V4_KEYS_DEBOUNCE_INTERVAL, + .debounce_interval = TL_WR940N_KEYS_DEBOUNCE_INTERVAL, .gpio = TL_WR940N_V4_GPIO_BTN_RFKILL, .active_low = 1, } }; +static struct gpio_led tl_wr940n_v6_leds_gpio[] __initdata = { + { + .name = "tp-link:blue:wan", + .gpio = TL_WR940N_V6_GPIO_LED_WAN_BLUE, + .active_low = 1, + }, + { + .name = "tp-link:orange:diag", + .gpio = TL_WR940N_V6_GPIO_LED_DIAG_ORANGE, + .active_low = 0, + }, +}; + -static const char *tl_wr940n_v4_part_probes[] = { +static const char *tl_wr940n_part_probes[] = { "tp-link", NULL, }; -static struct flash_platform_data tl_wr940n_v4_flash_data = { - .part_probes = tl_wr940n_v4_part_probes, +static struct flash_platform_data tl_wr940n_flash_data = { + .part_probes = tl_wr940n_part_probes, }; -static void __init tl_wr940n_v4_setup(void) +static void __init tl_wr940n_setup(void) { u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); - ath79_register_m25p80(&tl_wr940n_v4_flash_data); - - ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr940n_v4_leds_gpio), - tl_wr940n_v4_leds_gpio); - - ath79_register_gpio_keys_polled(-1, TL_WR940N_V4_KEYS_POLL_INTERVAL, - ARRAY_SIZE(tl_wr940n_v4_gpio_keys), - tl_wr940n_v4_gpio_keys); + ath79_register_m25p80(&tl_wr940n_flash_data); ath79_register_mdio(0, 0x0); @@ -145,5 +154,31 @@ static void __init tl_wr940n_v4_setup(void) } +static void __init tl_wr940n_v4_setup(void) +{ + tl_wr940n_setup(); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr940n_v4_leds_gpio), + tl_wr940n_v4_leds_gpio); + + ath79_register_gpio_keys_polled(-1, TL_WR940N_KEYS_POLL_INTERVAL, + ARRAY_SIZE(tl_wr940n_v4_gpio_keys), + tl_wr940n_v4_gpio_keys); +} + +static void __init tl_wr940n_v6_setup(void) +{ + tl_wr940n_setup(); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr940n_v6_leds_gpio), + tl_wr940n_v6_leds_gpio); + + ath79_register_gpio_keys_polled(-1, TL_WR940N_KEYS_POLL_INTERVAL, + ARRAY_SIZE(tl_wr940n_v4_gpio_keys), + tl_wr940n_v4_gpio_keys); +} + MIPS_MACHINE(ATH79_MACH_TL_WR940N_V4, "TL-WR940N-v4", "TP-LINK TL-WR940N v4", tl_wr940n_v4_setup); +MIPS_MACHINE(ATH79_MACH_TL_WR940N_V6, "TL-WR940N-v6", "TP-LINK TL-WR940N v6", + tl_wr940n_v6_setup); diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h index 372af17cd1..6007b512aa 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h @@ -298,6 +298,7 @@ enum ath79_mach_type { ATH79_MACH_TL_WR941ND_V5, /* TP-LINK TL-WR941ND v5 */ ATH79_MACH_TL_WR941ND_V6, /* TP-LINK TL-WR941ND v6 */ ATH79_MACH_TL_WR940N_V4, /* TP-LINK TL-WR940N v4 */ + ATH79_MACH_TL_WR940N_V6, /* TP-LINK TL-WR940N v6 */ ATH79_MACH_TL_WR942N_V1, /* TP-LINK TL-WR942N v1 */ ATH79_MACH_TUBE2H, /* Alfa Network Tube2H */ ATH79_MACH_UBNT_AIRGW, /* Ubiquiti AirGateway */ |