From b834487203996e71c5ea25f83488873483b96522 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Wed, 21 Feb 2018 13:15:17 +0100 Subject: [PATCH] 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 --- .../ar71xx/base-files/etc/board.d/01_leds | 3 + .../ar71xx/base-files/etc/board.d/02_network | 1 + target/linux/ar71xx/base-files/etc/diag.sh | 3 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 + .../ar71xx/base-files/lib/upgrade/platform.sh | 1 + .../files/arch/mips/ath79/mach-tl-wr940n-v4.c | 69 ++++++++++++++----- .../ar71xx/files/arch/mips/ath79/machtypes.h | 1 + target/linux/ar71xx/image/tiny-tp-link.mk | 8 +++ 8 files changed, 72 insertions(+), 17 deletions(-) diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds b/target/linux/ar71xx/base-files/etc/board.d/01_leds index 2a0af3c409..58e2c9743c 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/01_leds +++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds @@ -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" diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network index 560112756a..ffdc90fbfc 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/02_network +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network @@ -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|\ diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index b5d07cddfc..bd0926c213 100644 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -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" ;; diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index f56494ca46..b711150ee9 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -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" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 4b71a19a9c..fe927ea550 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -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|\ 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 * @@ -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 */ diff --git a/target/linux/ar71xx/image/tiny-tp-link.mk b/target/linux/ar71xx/image/tiny-tp-link.mk index 092d8aa114..2891b9654f 100644 --- a/target/linux/ar71xx/image/tiny-tp-link.mk +++ b/target/linux/ar71xx/image/tiny-tp-link.mk @@ -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