From 1bbb94df9687e7376ca5f50c69f24aa15c704f85 Mon Sep 17 00:00:00 2001 From: Filip Milivojevic Date: Thu, 18 Jan 2024 19:47:47 +0100 Subject: [PATCH] ramips: Add support for Cudy WR1300 v3 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 (cherry picked from commit 288738c59de0eeca1a0d2042882445ad54d95fe7) --- .../ramips/dts/mt7621_cudy_wr1300-v2.dts | 173 +---------------- .../ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi | 174 ++++++++++++++++++ .../ramips/dts/mt7621_cudy_wr1300-v3.dts | 36 ++++ target/linux/ramips/image/mt7621.mk | 12 ++ 4 files changed, 225 insertions(+), 170 deletions(-) create mode 100644 target/linux/ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi create mode 100644 target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts diff --git a/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts b/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts index a5d2fc4607..feeff0e7b0 100644 --- a/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts +++ b/target/linux/ramips/dts/mt7621_cudy_wr1300-v2.dts @@ -1,117 +1,10 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT -#include "mt7621.dtsi" - -#include -#include +#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 = ; - }; - - wps { - label = "wps"; - gpios = <&gpio 7 GPIO_ACTIVE_LOW>; - linux,code = ; - }; - }; - - 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 { @@ -121,6 +14,7 @@ mediatek,mtd-eeprom = <&factory 0x0000>; nvmem-cells = <&macaddr_bdinfo_de00>; nvmem-cell-names = "mac-address"; + ieee80211-freq-limit = <2400000 2500000>; }; }; @@ -132,67 +26,6 @@ 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 = <ðphy4>; - - 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 index 0000000000..9d68ad7f82 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_cudy_wr1300-v2v3.dtsi @@ -0,0 +1,174 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7621.dtsi" + +#include +#include + +/ { + 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 = ; + }; + + wps { + label = "wps"; + gpios = <&gpio 7 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + 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 = <ðphy4>; + + 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 index 0000000000..062f901c31 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_cudy_wr1300-v3.dts @@ -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>; + }; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index d25f91a0ed..945fe3668f 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -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 -- 2.30.2