ramips: Add support for Cudy WR1300 v3
authorFilip Milivojevic <zekica@gmail.com>
Thu, 18 Jan 2024 18:47:47 +0000 (19:47 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 11 Mar 2024 21:14:34 +0000 (22:14 +0100)
Specifications:
 - SoC: MediaTek MT7621AT
 - RAM: 128 MB (DDR3)
 - Flash: 16 MB (SPI NOR)
 - WiFi: MediaTek MT7603E, MediaTek MT7613BE
 - Switch: 1 WAN, 4 LAN (Gigabit)
 - Buttons: Reset, WPS
 - LEDs: System, Wan, Lan 1-4, WiFi 2.4G, WiFi 5G, WPS
 - Power: DC 12V 1A tip positive

Download and flash the manufacturer's built OpenWRT image available at
http://www.cudytech.com/openwrt_software_download
Install the new OpenWRT image via luci (System -> Backup/Flash firmware)
Be sure to NOT keep settings. The force upgrade may need to be checked
due to differences in router naming conventions.

Cudy WR1300 v3 differs from v2 only in swapped WiFi chip PCIe slots. Common
nodes are extracted to .dtsi and new v2 and v3 dts are created.

Cudy WR1300 v2 dts now contains ieee80211-freq-limit.

The same manufacturer's built OpenWRT image is provided for both v2 and v3
devices as a step in installing, but for proper WiFi functionality,
a separate build is required.

Recovery:
 - Loads only signed manufacture firmware due to bootloader RSA verification
 - serve tftp-recovery image as /recovery.bin on 192.168.1.88/24
 - connect to any lan ethernet port
 - power on the device while holding the reset button
 - wait at least 8 seconds before releasing reset button for image to
   download
 - See http://www.cudytech.com/newsinfo/547425.html

Backported from branch main to 23.05.

Signed-off-by: Filip Milivojevic <zekica@gmail.com>
(cherry picked from commit 288738c59de0eeca1a0d2042882445ad54d95fe7)

target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts
target/linux/ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi [new file with mode: 0644]
target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts [new file with mode: 0644]
target/linux/ramips/image/mt7621.mk

index a5d2fc4607934388d985e38907f8dfdd2e63e29b..feeff0e7b0133ffbf350be331ee9ed40ee03da86 100644 (file)
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "mt7621.dtsi"
-
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/gpio/gpio.h>
+#include "mt7621_cudy_wr1300-v2v3.dtsi"
 
 / {
        compatible = "cudy,wr1300-v2", "mediatek,mt7621-soc";
        model = "Cudy WR1300 v2";
-
-       aliases {
-               led-boot = &led_sys;
-               led-failsafe = &led_sys;
-               led-running = &led_sys;
-               led-upgrade = &led_sys;
-               label-mac-device = &gmac0;
-       };
-
-       chosen {
-               bootargs = "console=ttyS0,115200";
-       };
-
-       keys {
-               compatible = "gpio-keys";
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-               };
-
-               wps {
-                       label = "wps";
-                       gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_WPS_BUTTON>;
-               };
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               led_sys: sys {
-                       label = "green:sys";
-                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
-               };
-
-               wps {
-                       label = "green:wps";
-                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
-               };
-       };
-};
-
-&spi0 {
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <40000000>;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0 0x30000>;
-                               read-only;
-                       };
-
-                       partition@30000 {
-                               label = "u-boot-env";
-                               reg = <0x30000 0x10000>;
-                               read-only;
-                       };
-
-                       factory: partition@40000 {
-                               label = "factory";
-                               reg = <0x40000 0x10000>;
-                               read-only;
-                       };
-
-                       partition@50000 {
-                               compatible = "denx,uimage";
-                               label = "firmware";
-                               reg = <0x50000 0xf80000>;
-                       };
-
-                       partition@fd0000 {
-                               label = "debug";
-                               reg = <0xfd0000 0x10000>;
-                               read-only;
-                       };
-
-                       partition@fe0000 {
-                               label = "backup";
-                               reg = <0xfe0000 0x10000>;
-                               read-only;
-                       };
-
-                       bdinfo: partition@ff0000 {
-                               label = "bdinfo";
-                               reg = <0xff0000 0x10000>;
-                               read-only;
-                       };
-               };
-       };
-};
-
-&pcie {
-       status = "okay";
 };
 
 &pcie1 {
                mediatek,mtd-eeprom = <&factory 0x0000>;
                nvmem-cells = <&macaddr_bdinfo_de00>;
                nvmem-cell-names = "mac-address";
+               ieee80211-freq-limit = <2400000 2500000>;
        };
 };
 
                nvmem-cells = <&macaddr_bdinfo_de00>;
                nvmem-cell-names = "mac-address";
                mac-address-increment = <2>;
-       };
-};
-
-&gmac0 {
-       nvmem-cells = <&macaddr_bdinfo_de00>;
-       nvmem-cell-names = "mac-address";
-};
-
-&gmac1 {
-       status = "okay";
-       label = "wan";
-       phy-handle = <&ethphy4>;
-
-       nvmem-cells = <&macaddr_bdinfo_de00>;
-       nvmem-cell-names = "mac-address";
-       mac-address-increment = <1>;
-};
-
-&mdio {
-       ethphy4: ethernet-phy@4 {
-               reg = <4>;
-       };
-};
-
-&switch0 {
-       ports {
-               port@0 {
-                       status = "okay";
-                       label = "lan4";
-               };
-
-               port@1 {
-                       status = "okay";
-                       label = "lan3";
-               };
-
-               port@2 {
-                       status = "okay";
-                       label = "lan2";
-               };
-
-               port@3 {
-                       status = "okay";
-                       label = "lan1";
-               };
-       };
-};
-
-&state_default {
-       gpio {
-               groups = "wdt", "i2c", "jtag";
-               function = "gpio";
-       };
-};
-
-&bdinfo {
-       compatible = "nvmem-cells";
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       macaddr_bdinfo_de00: macaddr@de00 {
-               reg = <0xde00 0x6>;
+               ieee80211-freq-limit = <5000000 6000000>;
        };
 };
diff --git a/target/linux/ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi b/target/linux/ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi
new file mode 100644 (file)
index 0000000..9d68ad7
--- /dev/null
@@ -0,0 +1,174 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       aliases {
+               led-boot = &led_sys;
+               led-failsafe = &led_sys;
+               led-running = &led_sys;
+               led-upgrade = &led_sys;
+               label-mac-device = &gmac0;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               wps {
+                       label = "wps";
+                       gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_sys: sys {
+                       label = "green:sys";
+                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+               };
+
+               wps {
+                       label = "green:wps";
+                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x30000>;
+                               read-only;
+                       };
+
+                       partition@30000 {
+                               label = "u-boot-env";
+                               reg = <0x30000 0x10000>;
+                               read-only;
+                       };
+
+                       factory: partition@40000 {
+                               label = "factory";
+                               reg = <0x40000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@50000 {
+                               compatible = "denx,uimage";
+                               label = "firmware";
+                               reg = <0x50000 0xf80000>;
+                       };
+
+                       partition@fd0000 {
+                               label = "debug";
+                               reg = <0xfd0000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@fe0000 {
+                               label = "backup";
+                               reg = <0xfe0000 0x10000>;
+                               read-only;
+                       };
+
+                       bdinfo: partition@ff0000 {
+                               label = "bdinfo";
+                               reg = <0xff0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&pcie {
+       status = "okay";
+};
+
+&gmac0 {
+       nvmem-cells = <&macaddr_bdinfo_de00>;
+       nvmem-cell-names = "mac-address";
+};
+
+&gmac1 {
+       status = "okay";
+       label = "wan";
+       phy-handle = <&ethphy4>;
+
+       nvmem-cells = <&macaddr_bdinfo_de00>;
+       nvmem-cell-names = "mac-address";
+       mac-address-increment = <1>;
+};
+
+&mdio {
+       ethphy4: ethernet-phy@4 {
+               reg = <4>;
+       };
+};
+
+&switch0 {
+       ports {
+               port@0 {
+                       status = "okay";
+                       label = "lan4";
+               };
+
+               port@1 {
+                       status = "okay";
+                       label = "lan3";
+               };
+
+               port@2 {
+                       status = "okay";
+                       label = "lan2";
+               };
+
+               port@3 {
+                       status = "okay";
+                       label = "lan1";
+               };
+       };
+};
+
+&state_default {
+       gpio {
+               groups = "wdt", "i2c", "jtag";
+               function = "gpio";
+       };
+};
+
+&bdinfo {
+       compatible = "nvmem-cells";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       macaddr_bdinfo_de00: macaddr@de00 {
+               reg = <0xde00 0x6>;
+       };
+};
diff --git a/target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts b/target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts
new file mode 100644 (file)
index 0000000..062f901
--- /dev/null
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621_cudy_wr1300-v2v3.dtsi"
+
+/ {
+       compatible = "cudy,wr1300-v3", "mediatek,mt7621-soc";
+       model = "Cudy WR1300 v3";
+};
+
+&pcie0 {
+       wifi@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x0000>;
+               nvmem-cells = <&macaddr_bdinfo_de00>;
+               nvmem-cell-names = "mac-address";
+               ieee80211-freq-limit = <2400000 2500000>;
+
+               led {
+                       led-sources = <0>;
+                       led-active-low;
+               };
+       };
+};
+
+&pcie1 {
+       wifi@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x8000>;
+               nvmem-cells = <&macaddr_bdinfo_de00>;
+               nvmem-cell-names = "mac-address";
+               mac-address-increment = <2>;
+               ieee80211-freq-limit = <5000000 6000000>;
+       };
+};
index d25f91a0ed5190db9b5561139658f3dc39d0f0b0..945fe3668feab2bf90b8495ec2fc2891b4a692b9 100644 (file)
@@ -584,6 +584,18 @@ define Device/cudy_wr1300-v2
 endef
 TARGET_DEVICES += cudy_wr1300-v2
 
+define Device/cudy_wr1300-v3
+  $(Device/dsa-migration)
+  IMAGE_SIZE := 15872k
+  DEVICE_VENDOR := Cudy
+  DEVICE_MODEL := WR1300
+  DEVICE_VARIANT := v3
+  DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap \
+       -uboot-envtools
+  SUPPORTED_DEVICES += cudy,wr1300 R30
+endef
+TARGET_DEVICES += cudy_wr1300-v3
+
 define Device/cudy_wr2100
   $(Device/dsa-migration)
   DEVICE_VENDOR := Cudy