aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtarget/linux/ramips/base-files/etc/board.d/01_leds13
-rwxr-xr-xtarget/linux/ramips/base-files/etc/board.d/02_network2
-rw-r--r--target/linux/ramips/base-files/etc/diag.sh2
-rwxr-xr-xtarget/linux/ramips/base-files/lib/ramips.sh6
-rwxr-xr-xtarget/linux/ramips/base-files/lib/upgrade/platform.sh4
-rw-r--r--target/linux/ramips/dts/TL-WR840NV4.dts62
-rw-r--r--target/linux/ramips/dts/TL-WR841NV13.dts88
-rw-r--r--target/linux/ramips/dts/TL-WR84XN.dtsi67
-rw-r--r--target/linux/ramips/image/mt7628.mk24
-rw-r--r--target/linux/ramips/mt7628/config-4.42
-rw-r--r--target/linux/ramips/mt7628/config-4.92
-rw-r--r--tools/firmware-utils/src/mktplinkfw2.c16
12 files changed, 287 insertions, 1 deletions
diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds
index 61f662b496..61fbf0f3f3 100755
--- a/target/linux/ramips/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/base-files/etc/board.d/01_leds
@@ -336,6 +336,19 @@ tiny-ac)
set_wifi_led "$board:orange:wifi"
set_usb_led "$board:green:usb"
;;
+tl-wr840n-v4)
+ set_wifi_led "$board:green:wlan"
+ ucidef_set_led_switch "lan" "lan" "$board:green:lan" "switch0" "0x1e"
+ ucidef_set_led_switch "wan" "wan" "$board:green:wan" "switch0" "0x01"
+ ;;
+tl-wr841n-v13)
+ set_wifi_led "$board:green:wlan"
+ ucidef_set_led_switch "lan1" "lan1" "$board:green:lan1" "switch0" "0x2"
+ ucidef_set_led_switch "lan2" "lan2" "$board:green:lan2" "switch0" "0x4"
+ ucidef_set_led_switch "lan3" "lan3" "$board:green:lan3" "switch0" "0x8"
+ ucidef_set_led_switch "lan4" "lan4" "$board:green:lan4" "switch0" "0x10"
+ ucidef_set_led_switch "wan" "wan" "$board:green:wan" "switch0" "0x01"
+ ;;
vocore-8M|\
vocore-16M)
ucidef_set_led_netdev "eth" "ETH" "vocore:orange:eth" "eth0"
diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index 214db9df38..22b231bf96 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -169,6 +169,8 @@ ramips_setup_interfaces()
mzk-wdpr|\
rb750gr3|\
rt-n14u|\
+ tl-wr840n-v4|\
+ tl-wr841n-v13|\
ubnt-erx|\
ubnt-erx-sfp|\
ur-326n4g|\
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 4c8f709efb..0f4e646ce1 100644
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -35,6 +35,8 @@ get_status_led() {
nbg-419n2|\
pwh2004|\
r6220|\
+ tl-wr840n-v4|\
+ tl-wr841n-v13|\
vr500|\
wnce2001|\
wndr3700v5|\
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index e146d1c476..3eb66dc646 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -487,6 +487,12 @@ ramips_board_detect() {
*"Timecloud")
name="timecloud"
;;
+ *"TL-WR840N v4")
+ name="tl-wr840n-v4"
+ ;;
+ *"TL-WR841N v13")
+ name="tl-wr841n-v13"
+ ;;
*"UBNT-ERX")
name="ubnt-erx"
;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index 07530837d6..9b5da57146 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -230,7 +230,9 @@ platform_check_image() {
;;
c20i|\
c50|\
- mr200)
+ mr200|\
+ tl-wr840n-v4|\
+ tl-wr841n-v13)
[ "$magic" != "03000000" ] && {
echo "Invalid image type."
return 1
diff --git a/target/linux/ramips/dts/TL-WR840NV4.dts b/target/linux/ramips/dts/TL-WR840NV4.dts
new file mode 100644
index 0000000000..f139483a48
--- /dev/null
+++ b/target/linux/ramips/dts/TL-WR840NV4.dts
@@ -0,0 +1,62 @@
+/dts-v1/;
+
+#include "TL-WR84XN.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ compatible = "tplink,tl-wr840n-v4", "mediatek,mt7628an-soc";
+ model = "TP-Link TL-WR840N v4";
+
+ gpio-keys-polled {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ poll-interval = <20>;
+
+ reset {
+ label = "reset";
+ gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ lan {
+ label = "tl-wr840n-v4:green:lan";
+ gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+ };
+
+ power {
+ label = "tl-wr840n-v4:green:power";
+ gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+ };
+
+ wan {
+ label = "tl-wr840n-v4:green:wan";
+ gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+ };
+
+ wlan {
+ label = "tl-wr840n-v4:green:wlan";
+ gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+ };
+
+ wps {
+ label = "tl-wr840n-v4:green:wps";
+ gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "p0led_an", "p2led_an", "perst", "refclk", "wdt", "wled_an";
+ ralink,function = "gpio";
+ };
+ };
+};
diff --git a/target/linux/ramips/dts/TL-WR841NV13.dts b/target/linux/ramips/dts/TL-WR841NV13.dts
new file mode 100644
index 0000000000..40f833ced3
--- /dev/null
+++ b/target/linux/ramips/dts/TL-WR841NV13.dts
@@ -0,0 +1,88 @@
+/dts-v1/;
+
+#include "TL-WR84XN.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ compatible = "tplink,tl-wr841n-v13", "mediatek,mt7628an-soc";
+ model = "TP-Link TL-WR841N v13";
+
+ gpio-keys-polled {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ poll-interval = <20>;
+
+ reset {
+ label = "reset";
+ gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+
+ rfkill {
+ label = "rfkill";
+ gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RFKILL>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ power {
+ label = "tl-wr841n-v13:green:power";
+ gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+ };
+
+ wps {
+ label = "tl-wr841n-v13:green:wps";
+ gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
+ };
+
+ lan1 {
+ label = "tl-wr841n-v13:green:lan1";
+ gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+ };
+
+ lan2 {
+ label = "tl-wr841n-v13:green:lan2";
+ gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+ };
+
+ lan3 {
+ label = "tl-wr841n-v13:green:lan3";
+ gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+ };
+
+ lan4 {
+ label = "tl-wr841n-v13:green:lan4";
+ gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+ };
+
+ wan_green {
+ label = "tl-wr841n-v13:green:wan";
+ gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+ };
+
+ wan_orange {
+ label = "tl-wr841n-v13:orange:wan";
+ gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
+ };
+
+ wlan {
+ label = "tl-wr841n-v13:green:wlan";
+ gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "gpio", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an", "perst", "refclk", "uart1", "wdt", "wled_an";
+ ralink,function = "gpio";
+ };
+ };
+};
diff --git a/target/linux/ramips/dts/TL-WR84XN.dtsi b/target/linux/ramips/dts/TL-WR84XN.dtsi
new file mode 100644
index 0000000000..c9d0cddb37
--- /dev/null
+++ b/target/linux/ramips/dts/TL-WR84XN.dtsi
@@ -0,0 +1,67 @@
+#include "mt7628an.dtsi"
+
+/ {
+ chosen {
+ bootargs = "console=ttyS0,115200";
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x4000000>;
+ };
+};
+
+&spi0 {
+ status = "okay";
+
+ m25p80@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <10000000>;
+ m25p,chunked-io = <32>;
+
+ partition@0 {
+ label = "boot";
+ reg = <0x0 0x20000>;
+ read-only;
+ };
+
+ partition@20000 {
+ label = "firmware";
+ reg = <0x20000 0x7a0000>;
+ };
+
+ partition@7c0000 {
+ label = "config";
+ reg = <0x7c0000 0x10000>;
+ read-only;
+ };
+
+ factory: partition@7d0000 {
+ label = "factory";
+ reg = <0x7d0000 0x30000>;
+ read-only;
+ };
+ };
+};
+
+&ehci {
+ status = "disabled";
+};
+
+&ohci {
+ status = "disabled";
+};
+
+&wmac {
+ status = "okay";
+ mtd-mac-address = <&factory 0xf100>;
+ mediatek,mtd-eeprom = <&factory 0x20000>;
+};
+
+&ethernet {
+ mtd-mac-address = <&factory 0xf100>;
+ mediatek,portmap = "llllw";
+};
diff --git a/target/linux/ramips/image/mt7628.mk b/target/linux/ramips/image/mt7628.mk
index f8bd2c18b2..fbfc37d986 100644
--- a/target/linux/ramips/image/mt7628.mk
+++ b/target/linux/ramips/image/mt7628.mk
@@ -2,6 +2,8 @@
# MT7628 Profiles
#
+DEVICE_VARS += TPLINK_BOARD_ID
+
define Device/mt7628
DTS := MT7628
BLOCKSIZE := 64k
@@ -26,6 +28,28 @@ define Device/miwifi-nano
endef
TARGET_DEVICES += miwifi-nano
+define Device/tl-wr840n-v4
+ DTS := TL-WR840NV4
+ IMAGE_SIZE := 7808k
+ DEVICE_TITLE := TP-Link TL-WR840N v4
+ TPLINK_BOARD_ID := TL-WR840NV4
+ KERNEL := $(KERNEL_DTB)
+ IMAGES += tftp-recovery.bin
+ IMAGE/factory.bin := tplink-v2-image
+ IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
+ IMAGE/sysupgrade.bin := tplink-v2-image -s | append-metadata | \
+ check-size $$$$(IMAGE_SIZE)
+endef
+TARGET_DEVICES += tl-wr840n-v4
+
+define Device/tl-wr841n-v13
+ $(Device/tl-wr840n-v4)
+ DTS := TL-WR841NV13
+ DEVICE_TITLE := TP-Link TL-WR841N v13
+ TPLINK_BOARD_ID := TL-WR841NV13
+endef
+TARGET_DEVICES += tl-wr841n-v13
+
define Device/gl-mt300n-v2
DTS := GL-MT300N-V2
IMAGE_SIZE := 16064k
diff --git a/target/linux/ramips/mt7628/config-4.4 b/target/linux/ramips/mt7628/config-4.4
index 1dd8c75824..4b1bddb3c8 100644
--- a/target/linux/ramips/mt7628/config-4.4
+++ b/target/linux/ramips/mt7628/config-4.4
@@ -138,6 +138,7 @@ CONFIG_MTD_NAND_MT7620=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_SPI_NOR=y
CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_TPLINK_FW=y
CONFIG_MTD_SPLIT_TRX_FW=y
CONFIG_MTD_SPLIT_UIMAGE_FW=y
CONFIG_NEED_DMA_MAP_STATE=y
@@ -191,6 +192,7 @@ CONFIG_SPI_MT7621=y
# CONFIG_SPI_RT2880 is not set
CONFIG_SRCU=y
CONFIG_SWCONFIG=y
+CONFIG_SWCONFIG_LEDS=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
CONFIG_SYS_HAS_CPU_MIPS32_R2=y
diff --git a/target/linux/ramips/mt7628/config-4.9 b/target/linux/ramips/mt7628/config-4.9
index 0c6026c9f7..23ee65cd1e 100644
--- a/target/linux/ramips/mt7628/config-4.9
+++ b/target/linux/ramips/mt7628/config-4.9
@@ -140,6 +140,7 @@ CONFIG_MTD_M25P80=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_SPI_NOR=y
CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_TPLINK_FW=y
CONFIG_MTD_SPLIT_TRX_FW=y
CONFIG_MTD_SPLIT_UIMAGE_FW=y
CONFIG_NEED_DMA_MAP_STATE=y
@@ -193,6 +194,7 @@ CONFIG_SPI_MT7621=y
# CONFIG_SPI_RT2880 is not set
CONFIG_SRCU=y
CONFIG_SWCONFIG=y
+CONFIG_SWCONFIG_LEDS=y
CONFIG_SWPHY=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c
index b6dd670b90..14c5a492b7 100644
--- a/tools/firmware-utils/src/mktplinkfw2.c
+++ b/tools/firmware-utils/src/mktplinkfw2.c
@@ -208,6 +208,22 @@ static struct board_info boards[] = {
.hdr_ver = 3,
.endian_swap = true,
}, {
+ .id = "TL-WR840NV4",
+ .hw_id = 0x08400004,
+ .hw_rev = 0x1,
+ .hw_ver_add = 0x4,
+ .layout_id = "8Mmtk",
+ .hdr_ver = 3,
+ .endian_swap = true,
+ }, {
+ .id = "TL-WR841NV13",
+ .hw_id = 0x08410013,
+ .hw_rev = 0x268,
+ .hw_ver_add = 0x13,
+ .layout_id = "8Mmtk",
+ .hdr_ver = 3,
+ .endian_swap = true,
+ }, {
/* terminating entry */
}
};