diff --git a/patches/openwrt/0109-ar71xx-add-support-for-TP-LINK-TL-WR842N-ND-v3.patch b/patches/openwrt/0109-ar71xx-add-support-for-TP-LINK-TL-WR842N-ND-v3.patch new file mode 100644 index 00000000..a90e2388 --- /dev/null +++ b/patches/openwrt/0109-ar71xx-add-support-for-TP-LINK-TL-WR842N-ND-v3.patch @@ -0,0 +1,324 @@ +From: Matthias Schiffer +Date: Sun, 3 Jul 2016 22:14:18 +0200 +Subject: ar71xx: add support for TP-LINK TL-WR842N/ND v3 + +- CPU QCA9531-BL3A +- RAM: 64MB +- flash: 16MB +- USB + +AP143 platform, similar to tl-wr841n v10/v11, but with USB + +Signed-off-by: Cezary Jackiewicz + +Backport of LEDE 0b45bec22c59cc6e6b2fa71dc9a88386c5587132 + +diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh +index f182d60..c3aeffc 100644 +--- a/target/linux/ar71xx/base-files/etc/diag.sh ++++ b/target/linux/ar71xx/base-files/etc/diag.sh +@@ -276,6 +276,7 @@ get_status_led() { + tl-wr841n-v8 | \ + tl-wa830re-v2 | \ + tl-wr842n-v2 | \ ++ tl-wr842n-v3 | \ + tl-wr941nd | \ + tl-wr941nd-v5) + status_led="tp-link:green:system" +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 032acc9..e118e0a 100644 +--- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds ++++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds +@@ -515,6 +515,16 @@ tl-wr842n-v2) + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1" + ;; + ++tl-wr842n-v3) ++ ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" ++ ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10" ++ ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08" ++ ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x04" ++ ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02" ++ ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" ++ ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1" ++ ;; ++ + tl-wa801nd-v2 | \ + tl-wa901nd-v3) + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" +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 b8ae576..3c428ba 100755 +--- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network ++++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network +@@ -447,6 +447,7 @@ tl-wr741nd |\ + tl-wr741nd-v4 |\ + tl-wr841n-v7 |\ + tl-wr841n-v9 |\ ++tl-wr842n-v3 |\ + whr-g301n |\ + whr-hp-g300n |\ + whr-hp-gn |\ +diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh +index 5119b36..e4a617e 100755 +--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh ++++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh +@@ -863,6 +863,9 @@ ar71xx_board_detect() { + *"TL-WR842N/ND v2") + name="tl-wr842n-v2" + ;; ++ *"TL-WR842N/ND v3") ++ name="tl-wr842n-v3" ++ ;; + *TL-WR941ND) + name="tl-wr941nd" + ;; +diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +index f33419f..2a1abf3 100755 +--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh ++++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +@@ -365,6 +365,7 @@ platform_check_image() { + tl-wr841n-v8 | \ + tl-wr841n-v9 | \ + tl-wr842n-v2 | \ ++ tl-wr842n-v3 | \ + tl-wr941nd | \ + tl-wr941nd-v5 | \ + tl-wr941nd-v6 | \ +diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c +index 3e5c2a2..0209603 100644 +--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c ++++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c +@@ -1,7 +1,8 @@ + /* +- * TP-LINK TL-WR841N/ND v9 ++ * TP-LINK TL-WR841N/ND v9/TL-WR842N/ND v3 + * + * Copyright (C) 2014 Matthias Schiffer ++ * Copyright (C) 2016 Cezary Jackiewicz + * + * 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 +@@ -19,6 +20,7 @@ + #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" + +@@ -33,6 +35,20 @@ + #define TL_WR841NV9_GPIO_BTN_RESET 12 + #define TL_WR841NV9_GPIO_BTN_WIFI 17 + ++#define TL_WR842NV3_GPIO_LED_SYSTEM 2 ++#define TL_WR842NV3_GPIO_LED_WLAN 3 ++#define TL_WR842NV3_GPIO_LED_WAN_RED 4 ++#define TL_WR842NV3_GPIO_LED_WAN_GREEN 11 ++#define TL_WR842NV3_GPIO_LED_LAN1 12 ++#define TL_WR842NV3_GPIO_LED_LAN2 13 ++#define TL_WR842NV3_GPIO_LED_LAN3 14 ++#define TL_WR842NV3_GPIO_LED_LAN4 15 ++#define TL_WR842NV3_GPIO_LED_3G 16 ++#define TL_WR842NV3_GPIO_LED_WPS 17 ++ ++#define TL_WR842NV3_GPIO_BTN_RESET 1 ++#define TL_WR842NV3_GPIO_BTN_WIFI 0 ++ + #define TL_WR841NV9_KEYS_POLL_INTERVAL 20 /* msecs */ + #define TL_WR841NV9_KEYS_DEBOUNCE_INTERVAL (3 * TL_WR841NV9_KEYS_POLL_INTERVAL) + +@@ -95,6 +111,68 @@ static struct gpio_keys_button tl_wr841n_v9_gpio_keys[] __initdata = { + } + }; + ++static struct gpio_led tl_wr842n_v3_leds_gpio[] __initdata = { ++ { ++ .name = "tp-link:green:lan1", ++ .gpio = TL_WR842NV3_GPIO_LED_LAN1, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:green:lan2", ++ .gpio = TL_WR842NV3_GPIO_LED_LAN2, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:green:lan3", ++ .gpio = TL_WR842NV3_GPIO_LED_LAN3, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:green:lan4", ++ .gpio = TL_WR842NV3_GPIO_LED_LAN4, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:green:wan", ++ .gpio = TL_WR842NV3_GPIO_LED_WAN_GREEN, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:red:wan", ++ .gpio = TL_WR842NV3_GPIO_LED_WAN_RED, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:green:wlan", ++ .gpio = TL_WR842NV3_GPIO_LED_WLAN, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:green:system", ++ .gpio = TL_WR842NV3_GPIO_LED_SYSTEM, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:green:3g", ++ .gpio = TL_WR842NV3_GPIO_LED_3G, ++ .active_low = 1, ++ }, { ++ .name = "tp-link:green:wps", ++ .gpio = TL_WR842NV3_GPIO_LED_WPS, ++ .active_low = 1, ++ }, ++}; ++ ++static struct gpio_keys_button tl_wr842n_v3_gpio_keys[] __initdata = { ++ { ++ .desc = "Reset button", ++ .type = EV_KEY, ++ .code = KEY_RESTART, ++ .debounce_interval = TL_WR841NV9_KEYS_DEBOUNCE_INTERVAL, ++ .gpio = TL_WR842NV3_GPIO_BTN_RESET, ++ .active_low = 1, ++ }, { ++ .desc = "WIFI button", ++ .type = EV_KEY, ++ .code = KEY_RFKILL, ++ .debounce_interval = TL_WR841NV9_KEYS_DEBOUNCE_INTERVAL, ++ .gpio = TL_WR842NV3_GPIO_BTN_WIFI, ++ .active_low = 1, ++ } ++}; ++ + + static void __init tl_ap143_setup(void) + { +@@ -142,3 +220,20 @@ static void __init tl_wr841n_v9_setup(void) + + MIPS_MACHINE(ATH79_MACH_TL_WR841N_V9, "TL-WR841N-v9", "TP-LINK TL-WR841N/ND v9", + tl_wr841n_v9_setup); ++ ++static void __init tl_wr842n_v3_setup(void) ++{ ++ tl_ap143_setup(); ++ ++ ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr842n_v3_leds_gpio), ++ tl_wr842n_v3_leds_gpio); ++ ++ ath79_register_gpio_keys_polled(1, TL_WR841NV9_KEYS_POLL_INTERVAL, ++ ARRAY_SIZE(tl_wr842n_v3_gpio_keys), ++ tl_wr842n_v3_gpio_keys); ++ ++ ath79_register_usb(); ++} ++ ++MIPS_MACHINE(ATH79_MACH_TL_WR842N_V3, "TL-WR842N-v3", "TP-LINK TL-WR842N/ND v3", ++ tl_wr842n_v3_setup); +diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile +index a35ded9..392dec4 100644 +--- a/target/linux/ar71xx/image/Makefile ++++ b/target/linux/ar71xx/image/Makefile +@@ -607,6 +607,13 @@ define Device/tl-wr842n-v2 + TPLINK_HWID := 0x8420002 + endef + ++define Device/tl-wr842n-v3 ++ $(Device/tplink-16mlzma) ++ BOARDNAME := TL-WR842N-v3 ++ DEVICE_PROFILE := TLWR842 ++ TPLINK_HWID := 0x08420003 ++endef ++ + define Device/tl-wr843nd-v1 + $(Device/tplink-4mlzma) + BOARDNAME := TL-WR841N-v8 +@@ -620,7 +627,7 @@ define Device/tl-wr847n-v8 + DEVICE_PROFILE := TLWR841 + TPLINK_HWID := 0x08470008 + endef +-TARGET_DEVICES += tl-wr841n-v8 tl-wr841n-v9 tl-wr841n-v10 tl-wr841n-v11 tl-wr842n-v2 tl-wr843nd-v1 tl-wr847n-v8 ++TARGET_DEVICES += tl-wr841n-v8 tl-wr841n-v9 tl-wr841n-v10 tl-wr841n-v11 tl-wr842n-v2 tl-wr842n-v3 tl-wr843nd-v1 tl-wr847n-v8 + + define Device/tl-wr941nd-v5 + $(Device/tplink-4mlzma) +diff --git a/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch b/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch +index dbd3fca..4a53355 100644 +--- a/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch ++++ b/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch +@@ -1,6 +1,6 @@ + --- a/arch/mips/ath79/machtypes.h + +++ b/arch/mips/ath79/machtypes.h +-@@ -16,22 +16,201 @@ ++@@ -16,22 +16,202 @@ + + enum ath79_mach_type { + ATH79_MACH_GENERIC = 0, +@@ -147,6 +147,7 @@ + + ATH79_MACH_TL_WR841N_V8, /* TP-LINK TL-WR841N/ND v8 */ + + ATH79_MACH_TL_WR841N_V9, /* TP-LINK TL-WR841N/ND v9 */ + + ATH79_MACH_TL_WR842N_V2, /* TP-LINK TL-WR842N/ND v2 */ +++ ATH79_MACH_TL_WR842N_V3, /* TP-LINK TL-WR842N/ND v3 */ + + ATH79_MACH_TL_WR941ND, /* TP-LINK TL-WR941ND */ + + ATH79_MACH_TL_WR941ND_V5, /* TP-LINK TL-WR941ND v5 */ + + ATH79_MACH_TL_WR941ND_V6, /* TP-LINK TL-WR941ND v6 */ +@@ -284,7 +285,7 @@ + config ATH79_MACH_AP121 + bool "Atheros AP121 reference board" + select SOC_AR933X +-@@ -11,62 +84,1050 @@ config ATH79_MACH_AP121 ++@@ -11,62 +84,1051 @@ config ATH79_MACH_AP121 + select ATH79_DEV_M25P80 + select ATH79_DEV_USB + select ATH79_DEV_WMAC +@@ -1235,13 +1236,14 @@ + + select ATH79_DEV_WMAC + + + +config ATH79_MACH_TL_WR841N_V9 +-+ bool "TP-LINK TL-WR841N/ND v9 support" +-+ select SOC_QCA953X +-+ select ATH79_DEV_ETH +-+ select ATH79_DEV_GPIO_BUTTONS +-+ select ATH79_DEV_LEDS_GPIO +-+ select ATH79_DEV_M25P80 +-+ select ATH79_DEV_WMAC +++ bool "TP-LINK TL-WR841N/ND v9/TL-WR842N/ND v3 support" +++ select SOC_QCA953X +++ 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_WR941ND + + bool "TP-LINK TL-WR941ND support" +@@ -1364,7 +1366,7 @@ + + config ATH79_MACH_UBNT_XM + bool "Ubiquiti Networks XM/UniFi boards" +-@@ -83,6 +1144,117 @@ config ATH79_MACH_UBNT_XM ++@@ -83,6 +1145,117 @@ config ATH79_MACH_UBNT_XM + Say 'Y' here if you want your kernel to support the + Ubiquiti Networks XM (rev 1.0) board. + +@@ -1482,7 +1484,7 @@ + endmenu + + config SOC_AR71XX +-@@ -124,7 +1296,10 @@ config ATH79_DEV_DSA ++@@ -124,7 +1297,10 @@ config ATH79_DEV_DSA + config ATH79_DEV_ETH + def_bool n + +@@ -1494,7 +1496,7 @@ + def_bool n + + config ATH79_DEV_GPIO_BUTTONS +-@@ -154,6 +1329,11 @@ config ATH79_PCI_ATH9K_FIXUP ++@@ -154,6 +1330,11 @@ config ATH79_PCI_ATH9K_FIXUP + def_bool n + + config ATH79_ROUTERBOOT diff --git a/targets/ar71xx-generic/profiles.mk b/targets/ar71xx-generic/profiles.mk index bf1d0114..3db73aa2 100644 --- a/targets/ar71xx-generic/profiles.mk +++ b/targets/ar71xx-generic/profiles.mk @@ -71,6 +71,9 @@ $(eval $(call GluonModel,TLWR841,tl-wr841n-v11,tp-link-tl-wr841n-nd-v11)) $(eval $(call GluonProfile,TLWR842)) $(eval $(call GluonModel,TLWR842,tl-wr842n-v1,tp-link-tl-wr842n-nd-v1)) $(eval $(call GluonModel,TLWR842,tl-wr842n-v2,tp-link-tl-wr842n-nd-v2)) +ifneq ($(BROKEN),) +$(eval $(call GluonModel,TLWR842,tl-wr842n-v3,tp-link-tl-wr842n-nd-v3)) # BROKEN: untested +endif # TL-WR843N/ND v1 $(eval $(call GluonProfile,TLWR843))