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"
mzk-wdpr|\
rb750gr3|\
rt-n14u|\
+ tl-wr840n-v4|\
+ tl-wr841n-v13|\
ubnt-erx|\
ubnt-erx-sfp|\
ur-326n4g|\
nbg-419n2|\
pwh2004|\
r6220|\
+ tl-wr840n-v4|\
+ tl-wr841n-v13|\
vr500|\
wnce2001|\
wndr3700v5|\
*"Timecloud")
name="timecloud"
;;
+ *"TL-WR840N v4")
+ name="tl-wr840n-v4"
+ ;;
+ *"TL-WR841N v13")
+ name="tl-wr841n-v13"
+ ;;
*"UBNT-ERX")
name="ubnt-erx"
;;
;;
c20i|\
c50|\
- mr200)
+ mr200|\
+ tl-wr840n-v4|\
+ tl-wr841n-v13)
[ "$magic" != "03000000" ] && {
echo "Invalid image type."
return 1
--- /dev/null
+/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";
+ };
+ };
+};
--- /dev/null
+/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";
+ };
+ };
+};
--- /dev/null
+#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>;
+};
+
+ðernet {
+ mtd-mac-address = <&factory 0xf100>;
+ mediatek,portmap = "llllw";
+};
# MT7628 Profiles
#
+DEVICE_VARS += TPLINK_BOARD_ID
+
define Device/mt7628
DTS := MT7628
BLOCKSIZE := 64k
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
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
# 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
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
# 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
.layout_id = "8MLmtk",
.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 */
}