mediatek: filogic: add support for Cudy WR3000S v1
authorDavid Ignjic <ignjic@gmail.com>
Wed, 13 Nov 2024 10:20:27 +0000 (11:20 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 23 Nov 2024 19:24:57 +0000 (20:24 +0100)
Hardware
--------
MediaTek MT7981 WiSoC
256MB DDR3 RAM
128MB SPI-NAND (XMC XM25QH128C)
MediaTek MT7981 2x2 DBDC 802.11ax 2T2R (2.4 / 5)
UART: 115200 8N1 3.3V

MAC:
LAN MAC: label mac
WAN MAC: label mac + 1
2.4G MAC: label mac
5G MAC: label mac + 1 with LA bit set

Installation
------------

1. Connect to the serial port as described in the "Hardware" section.

2. Power on the device + press reset pin. Keep pressing reset pin to enter the U-Boot  shell.

3. Download the OpenWrt initramfs image. Place it on an TFTP server
   connected to the Cudy LAN ports. Make sure the server is reachable at
   192.168.1.88. Rename the image to "cudy3000s.bin"

4. Download and boot the OpenWrt initramfs image.

   $ tftpboot 0x46000000 cudy3000s.bin; bootm 0x46000000

5. Transfer the OpenWrt sysupgrade image to the device using scp.
   Install with sysupgrade.

Signed-off-by: David Ignjic <ignjic@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16939
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/mediatek/dts/mt7981b-cudy-wr3000s-v1.dts [new file with mode: 0644]
target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
target/linux/mediatek/image/filogic.mk

diff --git a/target/linux/mediatek/dts/mt7981b-cudy-wr3000s-v1.dts b/target/linux/mediatek/dts/mt7981b-cudy-wr3000s-v1.dts
new file mode 100644 (file)
index 0000000..a643969
--- /dev/null
@@ -0,0 +1,283 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)\r
+\r
+/dts-v1/;\r
+\r
+#include <dt-bindings/leds/common.h>\r
+\r
+#include "mt7981.dtsi"\r
+\r
+/ {\r
+       model = "Cudy WR3000S v1";\r
+       compatible = "cudy,wr3000s-v1", "mediatek,mt7981-spim-snand-rfb";\r
+\r
+       aliases {\r
+               label-mac-device = &gmac0;\r
+               led-boot = &led_status;\r
+               led-failsafe = &led_status;\r
+               led-running = &led_status;\r
+               led-upgrade = &led_status;\r
+               serial0 = &uart0;\r
+       };\r
+\r
+       chosen {\r
+               stdout-path = "serial0:115200n8";\r
+       };\r
+\r
+       gpio-keys {\r
+               compatible = "gpio-keys";\r
+\r
+               reset {\r
+                       label = "reset";\r
+                       linux,code = <KEY_RESTART>;\r
+                       gpios = <&pio 1 GPIO_ACTIVE_LOW>;\r
+               };\r
+\r
+               wps {\r
+                       label = "wps";\r
+                       linux,code = <KEY_WPS_BUTTON>;\r
+                       gpios = <&pio 0 GPIO_ACTIVE_LOW>;\r
+               };\r
+       };\r
+\r
+       leds {\r
+               compatible = "gpio-leds";\r
+\r
+               led_status: led@0 {\r
+                       function = LED_FUNCTION_STATUS;\r
+                       color = <LED_COLOR_ID_WHITE>;\r
+                       gpios = <&pio 10 GPIO_ACTIVE_LOW>;\r
+               };\r
+\r
+\r
+               led_internet {\r
+                       function = LED_FUNCTION_WAN_ONLINE;\r
+                       color = <LED_COLOR_ID_WHITE>;\r
+                       gpios = <&pio 11 GPIO_ACTIVE_LOW>;\r
+               };\r
+\r
+               led_wps {\r
+                       function = LED_FUNCTION_WPS;\r
+                       color = <LED_COLOR_ID_WHITE>;\r
+                       gpios = <&pio 9 GPIO_ACTIVE_LOW>;\r
+               };\r
+\r
+               led_wlan2g {\r
+                       function = LED_FUNCTION_WLAN_2GHZ;\r
+                       color = <LED_COLOR_ID_WHITE>;\r
+                       gpios = <&pio 6 GPIO_ACTIVE_LOW>;\r
+                       linux,default-trigger = "phy0tpt";\r
+               };\r
+\r
+               led_wlan5g {\r
+                       function = LED_FUNCTION_WLAN_5GHZ;\r
+                       color = <LED_COLOR_ID_WHITE>;\r
+                       gpios = <&pio 7 GPIO_ACTIVE_LOW>;\r
+                       linux,default-trigger = "phy1tpt";\r
+               };\r
+       };\r
+};\r
+\r
+&uart0 {\r
+       status = "okay";\r
+};\r
+\r
+&watchdog {\r
+       status = "okay";\r
+};\r
+\r
+&eth {\r
+       pinctrl-names = "default";\r
+       pinctrl-0 = <&mdio_pins>;\r
+\r
+       status = "okay";\r
+\r
+       gmac0: mac@0 {\r
+               compatible = "mediatek,eth-mac";\r
+               reg = <0>;\r
+               phy-mode = "2500base-x";\r
+\r
+               nvmem-cell-names = "mac-address";\r
+               nvmem-cells = <&macaddr_bdinfo_de00 0>;\r
+\r
+               fixed-link {\r
+                       speed = <2500>;\r
+                       full-duplex;\r
+                       pause;\r
+               };\r
+       };\r
+};\r
+\r
+&mdio_bus {\r
+       switch: switch@1f {\r
+               compatible = "mediatek,mt7531";\r
+               reg = <31>;\r
+               reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;\r
+               interrupt-controller;\r
+               #interrupt-cells = <1>;\r
+               interrupt-parent = <&pio>;\r
+               interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;\r
+       };\r
+};\r
+\r
+&spi0 {\r
+       pinctrl-names = "default";\r
+       pinctrl-0 = <&spi0_flash_pins>;\r
+       status = "okay";\r
+\r
+       spi_nand: flash@0 {\r
+               #address-cells = <1>;\r
+               #size-cells = <1>;\r
+               compatible = "spi-nand";\r
+               reg = <0>;\r
+               spi-max-frequency = <52000000>;\r
+\r
+               spi-cal-enable;\r
+               spi-cal-mode = "read-data";\r
+               spi-cal-datalen = <7>;\r
+               spi-cal-data = /bits/ 8 <0x53 0x50 0x49 0x4E 0x41 0x4E 0x44>;\r
+               spi-cal-addrlen = <5>;\r
+               spi-cal-addr = /bits/ 32 <0x0 0x0 0x0 0x0 0x0>;\r
+\r
+               spi-tx-bus-width = <4>;\r
+               spi-rx-bus-width = <4>;\r
+               mediatek,nmbm;\r
+               mediatek,bmt-max-ratio = <1>;\r
+               mediatek,bmt-max-reserved-blocks = <64>;\r
+\r
+               partitions {\r
+                       compatible = "fixed-partitions";\r
+                       #address-cells = <1>;\r
+                       #size-cells = <1>;\r
+\r
+                       partition@0 {\r
+                               label = "BL2";\r
+                               reg = <0x00000 0x0100000>;\r
+                               read-only;\r
+                       };\r
+\r
+                       partition@100000 {\r
+                               label = "u-boot-env";\r
+                               reg = <0x0100000 0x0080000>;\r
+                               read-only;\r
+                       };\r
+\r
+                       factory: partition@180000 {\r
+                               label = "Factory";\r
+                               reg = <0x180000 0x0200000>;\r
+                               read-only;\r
+                               nvmem-layout {\r
+                                       compatible = "fixed-layout";\r
+                                       #address-cells = <1>;\r
+                                       #size-cells = <1>;\r
+\r
+                                       eeprom_factory_0: eeprom@0 {\r
+                                               reg = <0x0 0x1000>;\r
+                                       };\r
+                               };\r
+                       };\r
+\r
+                       partition@380000 {\r
+                               label = "bdinfo";\r
+                               reg = <0x380000 0x0040000>;\r
+                               read-only;\r
+                               nvmem-layout {\r
+                                       compatible = "fixed-layout";\r
+                                       #address-cells = <1>;\r
+                                       #size-cells = <1>;\r
+\r
+                                       macaddr_bdinfo_de00: macaddr@de00 {\r
+                                               compatible = "mac-base";\r
+                                               reg = <0xde00 0x6>;\r
+                                               #nvmem-cell-cells = <1>;\r
+                                       };\r
+                               };\r
+                       };\r
+\r
+                       partition@3C0000 {\r
+                               label = "FIP";\r
+                               reg = <0x3C0000 0x0200000>;\r
+                               read-only;\r
+                       };\r
+\r
+                       partition@580000 {\r
+                               label = "ubi";\r
+                               reg = <0x5C0000 0x4000000>;\r
+                               compatible = "linux,ubi";\r
+                       };\r
+               };\r
+       };\r
+};\r
+\r
+&pio {\r
+       spi0_flash_pins: spi0-pins {\r
+               mux {\r
+                       function = "spi";\r
+                       groups = "spi0", "spi0_wp_hold";\r
+               };\r
+               conf-pu {\r
+                       pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";\r
+                       drive-strength = <MTK_DRIVE_8mA>;\r
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_11>;\r
+               };\r
+\r
+               conf-pd {\r
+                       pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";\r
+                       drive-strength = <MTK_DRIVE_8mA>;\r
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_11>;\r
+               };\r
+       };\r
+};\r
+\r
+&switch {\r
+       ports {\r
+               #address-cells = <1>;\r
+               #size-cells = <0>;\r
+\r
+               port@0 {\r
+                       reg = <0>;\r
+                       label = "wan";\r
+\r
+                       nvmem-cell-names = "mac-address";\r
+                       nvmem-cells = <&macaddr_bdinfo_de00 1>;\r
+               };\r
+\r
+               port@1 {\r
+                       reg = <1>;\r
+                       label = "lan1";\r
+               };\r
+\r
+               port@2 {\r
+                       reg = <2>;\r
+                       label = "lan2";\r
+               };\r
+\r
+               port@3 {\r
+                       reg = <3>;\r
+                       label = "lan3";\r
+               };\r
+\r
+               port@4 {\r
+                       reg = <4>;\r
+                       label = "lan4";\r
+               };\r
+\r
+               port@6 {\r
+                       reg = <6>;\r
+                       label = "cpu";\r
+                       ethernet = <&gmac0>;\r
+                       phy-mode = "2500base-x";\r
+\r
+                       fixed-link {\r
+                               speed = <2500>;\r
+                               full-duplex;\r
+                               pause;\r
+                       };\r
+               };\r
+       };\r
+};\r
+\r
+&wifi {\r
+       status = "okay";\r
+       nvmem-cells = <&eeprom_factory_0>;\r
+       nvmem-cell-names = "eeprom";\r
+};\r
index f87cc0646edbb29da545914035afecedcba817b5..7402bfc71babb8bb672cfa45d023ce44646943ce 100644 (file)
@@ -81,6 +81,7 @@ case "$board" in
                ;;
        cudy,ap3000outdoor-v1|\
        cudy,m3000-v1|\
+       cudy,wr3000s-v1|\
        cudy,wr3000-v1)
                addr=$(mtd_get_mac_binary bdinfo 0xde00)
                # Originally, phy0 is phy1 mac with LA bit set. However, this would conflict
index 072cae0d1f47edaf1aadb830e2871264ab98629a..f366a9b9202a7c1d1934fd146e9376c7767774fe 100644 (file)
@@ -667,6 +667,23 @@ define Device/cudy_wr3000-v1
 endef
 TARGET_DEVICES += cudy_wr3000-v1
 
+define Device/cudy_wr3000s-v1
+  DEVICE_VENDOR := Cudy
+  DEVICE_MODEL := WR3000S
+  DEVICE_VARIANT := v1
+  DEVICE_DTS := mt7981b-cudy-wr3000s-v1
+  DEVICE_DTS_DIR := ../dts
+  SUPPORTED_DEVICES += R59
+  UBINIZE_OPTS := -E 5
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  IMAGE_SIZE := 65536k
+  KERNEL_IN_UBI := 1
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware
+endef
+TARGET_DEVICES += cudy_wr3000s-v1
+
 define Device/dlink_aquila-pro-ai-m30-a1
   DEVICE_VENDOR := D-Link
   DEVICE_MODEL := AQUILA PRO AI M30