From 4961c7d0f51674063a58a11032ea62eb9ef111f3 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Tue, 20 Jan 2015 15:48:07 +0000 Subject: [PATCH] ar71xx: add support for TL-WA701ND v2 Signed-off-by: Luigi Tarenga SVN-Revision: 44063 --- target/linux/ar71xx/base-files/etc/diag.sh | 1 + .../base-files/etc/uci-defaults/01_leds | 5 + .../base-files/etc/uci-defaults/02_network | 1 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 + .../ar71xx/base-files/lib/upgrade/platform.sh | 1 + target/linux/ar71xx/config-3.14 | 1 + .../arch/mips/ath79/mach-tl-wa701nd-v2.c | 116 ++++++++++++++++++ target/linux/ar71xx/image/Makefile | 4 +- ...-MIPS-ath79-add-TL-WA701NDv2-support.patch | 45 +++++++ tools/firmware-utils/src/mktplinkfw.c | 6 + 10 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa701nd-v2.c create mode 100644 target/linux/ar71xx/patches-3.14/737-MIPS-ath79-add-TL-WA701NDv2-support.patch diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index 06b96a3a87..7cb3b6f907 100755 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -210,6 +210,7 @@ get_status_led() { tl-mr3220-v2 | \ tl-mr3420 | \ tl-mr3420-v2 | \ + tl-wa701nd-v2 | \ tl-wa801nd-v2 | \ tl-wa901nd | \ tl-wa901nd-v2 | \ diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds index 296ea57f1f..bfd9495d43 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds @@ -310,6 +310,11 @@ tl-wa850re) ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:blue:signal5" "wlan0" "80" "100" "-79" "13" ;; +tl-wa701nd-v2) + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + tl-wa860re) ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network index b4b6cb3b68..5f1704f4b8 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network @@ -324,6 +324,7 @@ tl-mr13u |\ tl-mr3020 |\ tl-mr3040 |\ tl-mr3040-v2 |\ +tl-wa701nd-v2 |\ tl-wa750re |\ tl-wa850re |\ tl-wa830re-v2 |\ diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index 387de722ea..63f90b5198 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -636,6 +636,9 @@ ar71xx_board_detect() { *"TL-MR3420 v2") name="tl-mr3420-v2" ;; + *"TL-WA701ND v2") + name="tl-wa701nd-v2" + ;; *TL-WA750RE) name="tl-wa750re" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 6dabf4e614..d373699fce 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -309,6 +309,7 @@ platform_check_image() { tl-mr3220-v2 | \ tl-mr3420 | \ tl-mr3420-v2 | \ + tl-wa701nd-v2 | \ tl-wa7510n | \ tl-wa750re | \ tl-wa850re | \ diff --git a/target/linux/ar71xx/config-3.14 b/target/linux/ar71xx/config-3.14 index b6fa4ab17e..82b2d130d5 100644 --- a/target/linux/ar71xx/config-3.14 +++ b/target/linux/ar71xx/config-3.14 @@ -96,6 +96,7 @@ CONFIG_ATH79_MACH_TL_MR11U=y CONFIG_ATH79_MACH_TL_MR13U=y CONFIG_ATH79_MACH_TL_MR3020=y CONFIG_ATH79_MACH_TL_MR3X20=y +CONFIG_ATH79_MACH_TL_WA701ND_V2=y CONFIG_ATH79_MACH_TL_WA830RE_V2=y CONFIG_ATH79_MACH_TL_WA901ND=y CONFIG_ATH79_MACH_TL_WA901ND_V2=y diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa701nd-v2.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa701nd-v2.c new file mode 100644 index 0000000000..aab92b30d4 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa701nd-v2.c @@ -0,0 +1,116 @@ +/* + * TP-LINK TL-WA701ND v2 board support + * + * Copyright (C) 2015 Luigi Tarenga + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include + +#include + +#include "dev-eth.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "dev-usb.h" +#include "dev-wmac.h" +#include "machtypes.h" + +#define TL_WA701NDV2_GPIO_LED_WLAN 0 +#define TL_WA701NDV2_GPIO_LED_QSS 1 +#define TL_WA701NDV2_GPIO_LED_LAN 17 +#define TL_WA701NDV2_GPIO_LED_SYSTEM 27 + +#define TL_WA701NDV2_GPIO_BTN_RESET 11 +#define TL_WA701NDV2_GPIO_BTN_QSS 26 + +#define TL_WA701NDV2_GPIO_USB_POWER 8 + +#define TL_WA701NDV2_KEYS_POLL_INTERVAL 20 /* msecs */ +#define TL_WA701NDV2_KEYS_DEBOUNCE_INTERVAL (3 * TL_WA701NDV2_KEYS_POLL_INTERVAL) + +static const char *tl_wa701ndv2_part_probes[] = { + "tp-link", + NULL, +}; + +static struct flash_platform_data tl_wa701ndv2_flash_data = { + .part_probes = tl_wa701ndv2_part_probes, +}; + +static struct gpio_led tl_wa701ndv2_leds_gpio[] __initdata = { + { + .name = "tp-link:green:wlan", + .gpio = TL_WA701NDV2_GPIO_LED_WLAN, + .active_low = 0, + }, { + .name = "tp-link:green:qss", + .gpio = TL_WA701NDV2_GPIO_LED_QSS, + .active_low = 0, + }, { + .name = "tp-link:green:lan", + .gpio = TL_WA701NDV2_GPIO_LED_LAN, + .active_low = 1, + }, { + .name = "tp-link:green:system", + .gpio = TL_WA701NDV2_GPIO_LED_SYSTEM, + .active_low = 1, + } +}; + +static struct gpio_keys_button tl_wa701ndv2_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = TL_WA701NDV2_KEYS_DEBOUNCE_INTERVAL, + .gpio = TL_WA701NDV2_GPIO_BTN_RESET, + .active_low = 0, + } , { + .desc = "qss", + .type = EV_KEY, + .code = KEY_WPS_BUTTON, + .debounce_interval = TL_WA701NDV2_KEYS_DEBOUNCE_INTERVAL, + .gpio = TL_WA701NDV2_GPIO_BTN_QSS, + .active_low = 0, + } + +}; + +static void __init tl_wa701ndv2_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); + u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); + + /* disable PHY_SWAP and PHY_ADDR_SWAP bits */ + ath79_setup_ar933x_phy4_switch(false, false); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wa701ndv2_leds_gpio), + tl_wa701ndv2_leds_gpio); + + ath79_register_gpio_keys_polled(-1, TL_WA701NDV2_KEYS_POLL_INTERVAL, + ARRAY_SIZE(tl_wa701ndv2_gpio_keys), + tl_wa701ndv2_gpio_keys); + + gpio_request_one(TL_WA701NDV2_GPIO_USB_POWER, + GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, + "USB power"); + ath79_register_usb(); + + ath79_register_m25p80(&tl_wa701ndv2_flash_data); + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); + /* ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1); */ + + ath79_register_mdio(0, 0x0); + ath79_register_eth(0); + ath79_register_eth(1); + + ath79_register_wmac(ee, mac); +} + +MIPS_MACHINE(ATH79_MACH_TL_WA701ND_V2, "TL-WA701ND-v2", + "TP-LINK TL-WA701ND v2", tl_wa701ndv2_setup); diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index ef52f460a2..68504b7a9b 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -1352,7 +1352,7 @@ $(eval $(call SingleProfile,TPLINKOLD,squashfs-only,TLWR841NV15,tl-wr841nd-v1.5, $(eval $(call SingleProfile,TPLINK,64kraw,RNXN360RT,rnx-n360rt,TL-WR941ND,ttyS0,115200,0x09410002,0x00420001,4M)) $(eval $(call SingleProfile,TPLINK,64kraw,TLMR3220V1,tl-mr3220-v1,TL-MR3220,ttyS0,115200,0x32200001,1,4M)) $(eval $(call SingleProfile,TPLINK,64kraw,TLMR3420V1,tl-mr3420-v1,TL-MR3420,ttyS0,115200,0x34200001,1,4M)) -$(eval $(call SingleProfile,TPLINK,64kraw,TLWA701,tl-wa701n-v1,TL-WA901ND,ttyS0,115200,0x07010001,1,4M)) +$(eval $(call SingleProfile,TPLINK,64kraw,TLWA701NV1,tl-wa701n-v1,TL-WA901ND,ttyS0,115200,0x07010001,1,4M)) $(eval $(call SingleProfile,TPLINK,64kraw,TLWA730REV1,tl-wa730rev1,TL-WA901ND,ttyS0,115200,0x07300001,1,4M)) $(eval $(call SingleProfile,TPLINK,64kraw,TLWA7510NV1,tl-wa7510n,TL-WA7510N,ttyS0,115200,0x75100001,1,4M)) $(eval $(call SingleProfile,TPLINK,64kraw,TLWA801NV1,tl-wa801nd-v1,TL-WA901ND,ttyS0,115200,0x08010001,1,4M)) @@ -1389,6 +1389,7 @@ $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR3040V1,tl-mr3040-v1,TL-MR3040 $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR3040V2,tl-mr3040-v2,TL-MR3040-v2,ttyATH0,115200,0x30400002,1,4Mlzma)) $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR3220V2,tl-mr3220-v2,TL-MR3220-v2,ttyATH0,115200,0x32200002,1,4Mlzma)) $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR3420V2,tl-mr3420-v2,TL-MR3420-v2,ttyS0,115200,0x34200002,1,4Mlzma)) +$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWA701NV2,tl-wa701nd-v2,TL-WA701ND-v2,ttyATH0,115200,0x07010002,1,4Mlzma)) $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,4Mlzma)) $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR710,tl-wr710n-v1,TL-WR710N,ttyATH0,115200,0x07100001,1,8Mlzma)) $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR720NV3,tl-wr720n-v3,TL-WR720N-v3,ttyATH0,115200,0x07200103,1,4Mlzma)) @@ -1472,6 +1473,7 @@ $(eval $(call MultiProfile,TLMR11U,TLMR11UV1 TLMR11UV2)) $(eval $(call MultiProfile,TLMR3040,TLMR3040V1 TLMR3040V2)) $(eval $(call MultiProfile,TLMR3220,TLMR3220V1 TLMR3220V2)) $(eval $(call MultiProfile,TLMR3420,TLMR3420V1 TLMR3420V2)) +$(eval $(call MultiProfile,TLWA701,TLWA701NV1 TLWA701NV2)) $(eval $(call MultiProfile,TLWA730RE,TLWA730REV1)) $(eval $(call MultiProfile,TLWA801,TLWA801NV1 TLWA801NV2)) $(eval $(call MultiProfile,TLWA830,TLWA830RV1 TLWA830RV2)) diff --git a/target/linux/ar71xx/patches-3.14/737-MIPS-ath79-add-TL-WA701NDv2-support.patch b/target/linux/ar71xx/patches-3.14/737-MIPS-ath79-add-TL-WA701NDv2-support.patch new file mode 100644 index 0000000000..0796c05b2f --- /dev/null +++ b/target/linux/ar71xx/patches-3.14/737-MIPS-ath79-add-TL-WA701NDv2-support.patch @@ -0,0 +1,45 @@ +Index: linux-3.14.28/arch/mips/ath79/Kconfig +=================================================================== +--- linux-3.14.28.orig/arch/mips/ath79/Kconfig ++++ linux-3.14.28/arch/mips/ath79/Kconfig +@@ -803,6 +803,16 @@ config ATH79_MACH_TL_WAX50RE + select ATH79_DEV_M25P80 + select ATH79_DEV_WMAC + ++config ATH79_MACH_TL_WA701ND_V2 ++ bool "TP-LINK TL-WA701ND v2 support" ++ select SOC_AR933X ++ select ATH79_DEV_ETH ++ select ATH79_DEV_GPIO_BUTTONS ++ select ATH79_DEV_LEDS_GPIO ++ select ATH79_DEV_M25P80 ++ select ATH79_DEV_USB ++ select ATH79_DEV_WMAC ++ + config ATH79_MACH_TL_WA830RE_V2 + bool "TP-LINK TL-WA830RE v2 support" + select SOC_AR934X +Index: linux-3.14.28/arch/mips/ath79/Makefile +=================================================================== +--- linux-3.14.28.orig/arch/mips/ath79/Makefile ++++ linux-3.14.28/arch/mips/ath79/Makefile +@@ -109,6 +109,7 @@ obj-$(CONFIG_ATH79_MACH_TL_MR13U) += mac + obj-$(CONFIG_ATH79_MACH_TL_MR3020) += mach-tl-mr3020.o + obj-$(CONFIG_ATH79_MACH_TL_MR3X20) += mach-tl-mr3x20.o + obj-$(CONFIG_ATH79_MACH_TL_WAX50RE) += mach-tl-wax50re.o ++obj-$(CONFIG_ATH79_MACH_TL_WA701ND_V2) += mach-tl-wa701nd-v2.o + obj-$(CONFIG_ATH79_MACH_TL_WA830RE_V2) += mach-tl-wa830re-v2.o + obj-$(CONFIG_ATH79_MACH_TL_WA901ND) += mach-tl-wa901nd.o + obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2) += mach-tl-wa901nd-v2.o +Index: linux-3.14.28/arch/mips/ath79/machtypes.h +=================================================================== +--- linux-3.14.28.orig/arch/mips/ath79/machtypes.h ++++ linux-3.14.28/arch/mips/ath79/machtypes.h +@@ -126,6 +126,7 @@ enum ath79_mach_type { + ATH79_MACH_TL_MR3220_V2, /* TP-LINK TL-MR3220 v2 */ + ATH79_MACH_TL_MR3420, /* TP-LINK TL-MR3420 */ + ATH79_MACH_TL_MR3420_V2, /* TP-LINK TL-MR3420 v2 */ ++ ATH79_MACH_TL_WA701ND_V2, /* TP-LINK TL-WA701ND v2 */ + ATH79_MACH_TL_WA750RE, /* TP-LINK TL-WA750RE */ + ATH79_MACH_TL_WA7510N_V1, /* TP-LINK TL-WA7510N v1*/ + ATH79_MACH_TL_WA850RE, /* TP-LINK TL-WA850RE */ diff --git a/tools/firmware-utils/src/mktplinkfw.c b/tools/firmware-utils/src/mktplinkfw.c index a6aab598a1..0a5e4c3282 100644 --- a/tools/firmware-utils/src/mktplinkfw.c +++ b/tools/firmware-utils/src/mktplinkfw.c @@ -40,6 +40,7 @@ #define HWID_TL_MR3420_V1 0x34200001 #define HWID_TL_MR3420_V2 0x34200002 #define HWID_TL_WA701N_V1 0x07010001 +#define HWID_TL_WA701N_V2 0x07010002 #define HWID_TL_WA7510N_V1 0x75100001 #define HWID_TL_WA801ND_V1 0x08010001 #define HWID_TL_WA830RE_V1 0x08300010 @@ -253,6 +254,11 @@ static struct board_info boards[] = { .hw_id = HWID_TL_WA701N_V1, .hw_rev = 1, .layout_id = "4M", + }, { + .id = "TL-WA701Nv2", + .hw_id = HWID_TL_WA701N_V2, + .hw_rev = 1, + .layout_id = "4Mlzma", }, { .id = "TL-WA7510N", .hw_id = HWID_TL_WA7510N_V1, -- 2.30.2