diff --git a/target/linux/ramips/dts/mt7620a_tplink_re200-v1.dts b/target/linux/ramips/dts/mt7620a_tplink_re200-v1.dts new file mode 100644 index 0000000000..39fdc0af53 --- /dev/null +++ b/target/linux/ramips/dts/mt7620a_tplink_re200-v1.dts @@ -0,0 +1,158 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "mt7620a.dtsi" + +#include +#include + +/ { + compatible = "tplink,re200-v1", "ralink,mt7620a-soc"; + model = "TP-Link RE200 v1"; + + aliases { + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + label-mac-device = ðernet; + }; + + chosen { + bootargs = "console=ttyS0,57600n8"; + }; + + leds { + compatible = "gpio-leds"; + + led_power: power { + label = "re200-v1:green:power"; + gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; + }; + + lan { + label = "re200-v1:green:lan"; + gpios = <&gpio2 0 GPIO_ACTIVE_LOW>; + }; + + wlan { + label = "re200-v1:green:wlan"; + gpios = <&gpio1 3 GPIO_ACTIVE_LOW>; + }; + + qss { + label = "re200-v1:green:qss"; + gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; + }; + + wlan2g_red { + label = "re200-v1:red:wlan2g"; + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; + }; + + wlan2g_green { + label = "re200-v1:green:wlan2g"; + gpios = <&gpio3 0 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1radio"; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps { + label = "wps"; + gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + + +&state_default { + gpio { + ralink,group = "i2c", "uartf", "ephy", "wled", "rgmii1", "spi refclk"; + ralink,function = "gpio"; + }; +}; + +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <50000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + uboot: partition@0 { + label = "u-boot"; + reg = <0x0 0x20000>; + read-only; + }; + + partition@20000 { + compatible = "tplink,firmware"; + label = "firmware"; + reg = <0x20000 0x7c0000>; + }; + + partition@7e0000 { + label = "userconfig"; + reg = <0x7e0000 0x10000>; + read-only; + }; + + radio: partition@7f0000 { + label = "radio"; + reg = <0x7f0000 0x10000>; + read-only; + }; + }; + }; +}; + +&gpio1 { + status = "okay"; +}; + +&gpio2 { + status = "okay"; +}; + +&gpio3 { + status = "okay"; +}; + +ðernet { + mtd-mac-address = <&uboot 0x1fc00>; +}; + +&wmac { + ralink,mtd-eeprom = <&radio 0x0>; + mtd-mac-address = <&uboot 0x1fc00>; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + mt76@0,0 { + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&radio 0x8000>; + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <2>; + ieee80211-freq-limit = <5000000 6000000>; + }; +}; diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk index 291495ec0d..cbf35f804a 100644 --- a/target/linux/ramips/image/mt7620.mk +++ b/target/linux/ramips/image/mt7620.mk @@ -16,6 +16,23 @@ define Build/elecom-header --owner=0 --group=0 -f $@ -C $(KDIR) v_0.0.0.bin v_0.0.0.md5 endef +# combine kernel and rootfs into one image +# mktplinkfw +# is "sysupgrade" or "factory" +# +# -a align the rootfs start on an bytes boundary +# -j add jffs2 end-of-filesystem markers +# -s strip padding from end of the image +# -X reserve bytes in the firmware image (hexval prefixed with 0x) +define Build/mktplinkfw + -$(STAGING_DIR_HOST)/bin/mktplinkfw \ + -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \ + -N OpenWrt -V $(REVISION) -m $(TPLINK_HEADER_VERSION) \ + -k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new -j -X 0x40000 -a 0x4 \ + $(wordlist 2,$(words $(1)),$(1)) \ + $(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@ +endef + define Device/aigale_ai-br100 SOC := mt7620a IMAGE_SIZE := 7936k @@ -938,6 +955,25 @@ define Device/tplink_archer-mr200 endef TARGET_DEVICES += tplink_archer-mr200 +define Device/tplink_re200-v1 + SOC := mt7620a + DEVICE_VENDOR := TP-Link + DEVICE_MODEL := RE200 + DEVICE_VARIANT := v1 + DEVICE_PACKAGES := kmod-mt76x0e + IMAGES += factory.bin + IMAGE/sysupgrade.bin := mktplinkfw sysupgrade -e -O + IMAGE/factory.bin := mktplinkfw factory -e -O + IMAGE_SIZE := 7936k + KERNEL := $(KERNEL_DTB) + KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v1-header -e -O + TPLINK_HWID := 0x02000001 + TPLINK_HWREV := 0x1 + TPLINK_HEADER_VERSION := 1 + TPLINK_FLASHLAYOUT := 8Mmtk +endef +TARGET_DEVICES += tplink_re200-v1 + define Device/vonets_var11n-300 SOC := mt7620n IMAGE_SIZE := 3776k diff --git a/target/linux/ramips/mt7620/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7620/base-files/etc/board.d/01_leds index d88fdfb043..77a98fa095 100755 --- a/target/linux/ramips/mt7620/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/mt7620/base-files/etc/board.d/01_leds @@ -198,6 +198,9 @@ tplink,archer-mr200) ucidef_set_led_netdev "wan" "wan" "$boardname:white:wan" "usb0" set_wifi_led "$boardname:white:wlan" ;; +tplink,re200-v1) + ucidef_set_led_netdev "lan" "lan" "$boardname:green:lan" "eth0" + ;; youku,yk1) set_wifi_led "$boardname:blue:air" ucidef_set_led_switch "wan" "wan" "$boardname:blue:wan" "switch0" "0x10" diff --git a/target/linux/ramips/mt7620/base-files/etc/board.d/02_network b/target/linux/ramips/mt7620/base-files/etc/board.d/02_network index 852336f811..7397ddcc2c 100755 --- a/target/linux/ramips/mt7620/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt7620/base-files/etc/board.d/02_network @@ -50,6 +50,7 @@ ramips_setup_interfaces() planex,mzk-ex300np|\ planex,mzk-ex750np|\ ravpower,wd03|\ + tplink,re200-v1|\ sercomm,na930) ucidef_set_interface_lan "eth0" ;; diff --git a/tools/firmware-utils/src/mktplinkfw.c b/tools/firmware-utils/src/mktplinkfw.c index ce2acc20c9..ed785b48e5 100644 --- a/tools/firmware-utils/src/mktplinkfw.c +++ b/tools/firmware-utils/src/mktplinkfw.c @@ -144,6 +144,12 @@ static struct flash_layout layouts[] = { .kernel_la = 0x80060000, .kernel_ep = 0x80060000, .rootfs_ofs = 0x100000, + }, { + .id = "8Mmtk", + .fw_max_len = 0x7c0000, + .kernel_la = 0x80000000, + .kernel_ep = 0x8000c310, + .rootfs_ofs = 0x100000, }, { .id = "16M", .fw_max_len = 0xf80000,