[openwrt/openwrt] ramips: add support for TP-Link RE305 v3

LEDE Commits lede-commits at lists.infradead.org
Sat Oct 30 13:12:22 PDT 2021


adrian pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/c12ef2f76098923fc08ef9d7aa3d080b6e72dfb1

commit c12ef2f76098923fc08ef9d7aa3d080b6e72dfb1
Author: Michal Kozuch <servitkar at gmail.com>
AuthorDate: Fri Mar 19 20:20:11 2021 +0100

    ramips: add support for TP-Link RE305 v3
    
    Specs (same as in v1):
    - MT7628AN (575 MHz)
    - 64MB RAM
    - 8MB of flash (SPI NOR)
    - 1x 10/100Mbps Ethernet (MT7628AN built-in switch with vlan)
    - 1x 2.4GHz wifi (MT7628AN)
    - 1x 5Ghz wifi (MT7612E)
    - 4x LEDs (5 GPIO-controlled)
    - 1x reset button
    - 1x WPS button
    
    The only and important difference between v1 & v3 is in flash memory
    layout, so pls don't interchange these 2 builds!
    
    Installation through web-ui (on OEM factory firmware):
    1. Visit http://tplinkrepeater.net or the configured IP address of
       your RE305 v3 (default 192.168.0.254).
    2. Log in with the password you've set during initial setup of the
       RE305 (there is no default password).
    3. Go to Settings -> System Tools -> Firmware upgrade
    4. Click Browse and select the OpenWRT image with factory.bin suffix
       (not sysupgrade.bin)
    5. A window with a progress bar will appear. Wait until it completes.
    6. The RE305 will reboot into OpenWRT and serve DHCP requests on the
       ethernet port.
    7. Connect an RJ45 cable from the RE305 to your computer and access
       LuCI at http://192.168.1.1/ to configure (or use ssh).
    
    Disassembly:
    Just unscrew 4 screws in the corners & take off the back cover.
    Serial is exposed to the right side of the main board (in the middle)
    and marked with TX/RX/3V3/GND, but the holes are filled with solder.
    
    Installation through serial:
    1. connect trough serial (1n8, baudrate=57600)
    2. setup the TFTP server and connect it via ethernet
       (ipaddr=192.168.0.254 of device, serverip=192.168.0.184 - your pc)
    3. boot from a initramfs image first (choose 1 in the bootloader
       options)
    4. test it a bit with that, then proceed to run sysupgrade build
    
    MAC addresses as verified by OEM firmware:
    
      use  OpenWrt  address  reference
      LAN  eth0     *:d2     label
      2g   wlan0    *:d1     label - 1
      5g   wlan1    *:d0     label - 2
    
      The label MAC address can be found in config 0x2008.
    
    Signed-off-by: Michal Kozuch <servitkar at gmail.com>
    [redistribute WLAN node properties between DTS/DTSI, remove
     compatible on DTSI, fix indent/wrapping, split out firmware-utils
     change]
    Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../linux/ramips/dts/mt7628an_tplink_re305-v1.dts  | 88 ++--------------------
 .../linux/ramips/dts/mt7628an_tplink_re305-v3.dts  | 79 +++++++++++++++++++
 ...ink_re305-v1.dts => mt7628an_tplink_re305.dtsi} | 74 +-----------------
 target/linux/ramips/image/mt76x8.mk                | 10 +++
 .../mt76x8/base-files/etc/board.d/02_network       |  1 +
 5 files changed, 98 insertions(+), 154 deletions(-)

diff --git a/target/linux/ramips/dts/mt7628an_tplink_re305-v1.dts b/target/linux/ramips/dts/mt7628an_tplink_re305-v1.dts
index 6ac3730194..7948668b84 100644
--- a/target/linux/ramips/dts/mt7628an_tplink_re305-v1.dts
+++ b/target/linux/ramips/dts/mt7628an_tplink_re305-v1.dts
@@ -1,68 +1,10 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "mt7628an.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "mt7628an_tplink_re305.dtsi"
 
 / {
 	compatible = "tplink,re305-v1", "mediatek,mt7628an-soc";
 	model = "TP-Link RE305 v1";
-
-	aliases {
-		led-boot = &led_power;
-		led-failsafe = &led_power;
-		led-running = &led_power;
-		led-upgrade = &led_power;
-		label-mac-device = ðernet;
-	};
-
-	keys {
-		compatible = "gpio-keys";
-
-		reset {
-			label = "reset";
-			gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_RESTART>;
-		};
-
-		wps {
-			label = "wps";
-			gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_WPS_BUTTON>;
-		};
-	};
-
-	leds {
-		compatible = "gpio-leds";
-
-		led_power: power {
-			label = "blue:power";
-			gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
-		};
-
-		wlan2g {
-			label = "blue:wlan2g";
-			gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "phy0tpt";
-		};
-
-		wlan5g {
-			label = "blue:wlan5g";
-			gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "phy1tpt";
-		};
-
-		rssi1 {
-			label = "red:rssi";
-			gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
-		};
-
-		rssi2 {
-			label = "blue:rssi";
-			gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
-		};
-	};
 };
 
 &spi0 {
@@ -110,33 +52,17 @@
 	};
 };
 
-&state_default {
-	gpio {
-		groups = "refclk", "wdt", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an";
-		function = "gpio";
-	};
-};
-
-&pcie {
-	status = "okay";
-};
+&wlan5g {
+	mediatek,mtd-eeprom = <&radio 0x8000>;
 
-&pcie0 {
-	mt76 at 0,0 {
-		compatible = "mediatek,mt76";
-		reg = <0x0000 0 0 0 0>;
-		mediatek,mtd-eeprom = <&radio 0x8000>;
-		ieee80211-freq-limit = <5000000 6000000>;
-		nvmem-cells = <&macaddr_config_10008>;
-		nvmem-cell-names = "mac-address";
-		mac-address-increment = <2>;
-	};
+	nvmem-cells = <&macaddr_config_10008>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <2>;
 };
 
 &wmac {
-	status = "okay";
-
 	mediatek,mtd-eeprom = <&radio 0x0>;
+
 	nvmem-cells = <&macaddr_config_10008>;
 	nvmem-cell-names = "mac-address";
 	mac-address-increment = <1>;
diff --git a/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts b/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts
new file mode 100644
index 0000000000..652aebec83
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_tplink_re305-v3.dts
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an_tplink_re305.dtsi"
+
+/ {
+	compatible = "tplink,re305-v3", "mediatek,mt7628an-soc";
+	model = "TP-Link RE305 v3";
+};
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <50000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x20000>;
+				read-only;
+			};
+
+			partition at 20000 {
+				compatible = "tplink,firmware";
+				label = "firmware";
+				reg = <0x20000 0x7a0000>;
+			};
+
+			config: partition at 7c0000 {
+				label = "config";
+				reg = <0x7c0000 0x30000>;
+				read-only;
+			};
+
+			radio: partition at 7f0000 {
+				label = "radio";
+				reg = <0x7f0000 0x10000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&wlan5g {
+	mediatek,mtd-eeprom = <&radio 0x8000>;
+
+	nvmem-cells = <&macaddr_config_2008>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(-2)>;
+};
+
+&wmac {
+	mediatek,mtd-eeprom = <&radio 0x0>;
+
+	nvmem-cells = <&macaddr_config_2008>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(-1)>;
+};
+
+&ethernet {
+	nvmem-cells = <&macaddr_config_2008>;
+	nvmem-cell-names = "mac-address";
+};
+
+&config {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_config_2008: macaddr at 2008 {
+		reg = <0x2008 0x6>;
+	};
+};
diff --git a/target/linux/ramips/dts/mt7628an_tplink_re305-v1.dts b/target/linux/ramips/dts/mt7628an_tplink_re305.dtsi
similarity index 50%
copy from target/linux/ramips/dts/mt7628an_tplink_re305-v1.dts
copy to target/linux/ramips/dts/mt7628an_tplink_re305.dtsi
index 6ac3730194..029b955911 100644
--- a/target/linux/ramips/dts/mt7628an_tplink_re305-v1.dts
+++ b/target/linux/ramips/dts/mt7628an_tplink_re305.dtsi
@@ -6,9 +6,6 @@
 #include <dt-bindings/input/input.h>
 
 / {
-	compatible = "tplink,re305-v1", "mediatek,mt7628an-soc";
-	model = "TP-Link RE305 v1";
-
 	aliases {
 		led-boot = &led_power;
 		led-failsafe = &led_power;
@@ -65,51 +62,6 @@
 	};
 };
 
-&spi0 {
-	status = "okay";
-
-	flash at 0 {
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-max-frequency = <50000000>;
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition at 0 {
-				label = "u-boot";
-				reg = <0x0 0x20000>;
-				read-only;
-			};
-
-			partition at 20000 {
-				compatible = "tplink,firmware";
-				label = "firmware";
-				reg = <0x20000 0x5e0000>;
-			};
-
-			config: partition at 600000 {
-				label = "config";
-				reg = <0x600000 0x50000>;
-				read-only;
-			};
-
-			/*
-				The flash space between 0x650000 and 0x7f0000 is blank in the
-				stock firmware so it is left out as well.
-			*/
-
-			radio: partition at 7f0000 {
-				label = "radio";
-				reg = <0x7f0000 0x10000>;
-				read-only;
-			};
-		};
-	};
-};
-
 &state_default {
 	gpio {
 		groups = "refclk", "wdt", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an";
@@ -122,37 +74,13 @@
 };
 
 &pcie0 {
-	mt76 at 0,0 {
+	wlan5g: mt76 at 0,0 {
 		compatible = "mediatek,mt76";
 		reg = <0x0000 0 0 0 0>;
-		mediatek,mtd-eeprom = <&radio 0x8000>;
 		ieee80211-freq-limit = <5000000 6000000>;
-		nvmem-cells = <&macaddr_config_10008>;
-		nvmem-cell-names = "mac-address";
-		mac-address-increment = <2>;
 	};
 };
 
 &wmac {
 	status = "okay";
-
-	mediatek,mtd-eeprom = <&radio 0x0>;
-	nvmem-cells = <&macaddr_config_10008>;
-	nvmem-cell-names = "mac-address";
-	mac-address-increment = <1>;
-};
-
-&ethernet {
-	nvmem-cells = <&macaddr_config_10008>;
-	nvmem-cell-names = "mac-address";
-};
-
-&config {
-	compatible = "nvmem-cells";
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	macaddr_config_10008: macaddr at 10008 {
-		reg = <0x10008 0x6>;
-	};
 };
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index 7862f7b799..5f5d281d5c 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -512,6 +512,16 @@ define Device/tplink_re305-v1
 endef
 TARGET_DEVICES += tplink_re305-v1
 
+define Device/tplink_re305-v3
+  $(Device/tplink-safeloader)
+  IMAGE_SIZE := 7808k
+  DEVICE_MODEL := RE305
+  DEVICE_VARIANT := v3
+  DEVICE_PACKAGES := kmod-mt76x2
+  TPLINK_BOARD_ID := RE305-V3
+endef
+TARGET_DEVICES += tplink_re305-v3
+
 define Device/tplink_tl-mr3020-v3
   $(Device/tplink-v2)
   IMAGE_SIZE := 7808k
diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
index 7cdf27c004..638b8f2181 100644
--- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
@@ -25,6 +25,7 @@ ramips_setup_interfaces()
 	tplink,re200-v4|\
 	tplink,re220-v2|\
 	tplink,re305-v1|\
+	tplink,re305-v3|\
 	tplink,tl-mr3020-v3|\
 	tplink,tl-wr802n-v4|\
 	tplink,tl-wa801nd-v5|\



More information about the lede-commits mailing list