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>
This commit is contained in:
Robert Marko 2018-02-21 13:15:17 +01:00 committed by Piotr Dymacz
parent 6148c46556
commit b834487203
8 changed files with 72 additions and 17 deletions

View file

@ -889,6 +889,9 @@ tl-wr840n-v3)
ucidef_set_led_switch "lan" "LAN" "tp-link:green:lan" "switch0" "0x1E"
ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
;;
tl-wr940n-v6)
ucidef_set_led_netdev "wan" "WAN" "tp-link:blue:wan" "eth0"
;;
tl-wr942n-v1)
ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan1" "switch0" "0x04"
ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08"

View file

@ -341,6 +341,7 @@ ar71xx_setup_interfaces()
smart-300|\
tl-wdr6500-v2|\
tl-wr940n-v4|\
tl-wr940n-v6|\
tl-wr941nd-v6|\
wnr1000-v2|\
wnr2000-v4|\

View file

@ -468,6 +468,9 @@ get_status_led() {
tl-wr841n-v9)
status_led="tp-link:green:qss"
;;
tl-wr940n-v6)
status_led="tp-link:orange:diag"
;;
tl-wdr6500-v2)
status_led="tp-link:white:system"
;;

View file

@ -1301,6 +1301,9 @@ ar71xx_board_detect() {
*"TL-WR940N v4")
name="tl-wr940n-v4"
;;
*"TL-WR940N v6")
name="tl-wr940n-v6"
;;
*"TL-WR941N/ND v5")
name="tl-wr941nd-v5"
;;

View file

@ -470,6 +470,7 @@ platform_check_image() {
tl-wr842n-v3|\
tl-wr902ac-v1|\
tl-wr940n-v4|\
tl-wr940n-v6|\
tl-wr941nd|\
tl-wr941nd-v5|\
tl-wr941nd-v6|\

View file

@ -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);

View file

@ -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 */

View file

@ -622,6 +622,14 @@ define Device/tl-wr940n-v4
endef
TARGET_DEVICES += tl-wr940n-v4
define Device/tl-wr940n-v6
$(Device/tl-wr940n-v4)
DEVICE_TITLE := TP-LINK TL-WR940N v6
BOARDNAME := TL-WR940N-v6
TPLINK_HWID := 0x09400006
endef
TARGET_DEVICES += tl-wr940n-v6
define Device/tl-wr941nd-v2
$(Device/tplink-4m)
DEVICE_TITLE := TP-LINK TL-WR941N/ND v2