]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
mediatek: add cudy m3000-v2-yt8821 ubootmod
authorDmitry Mostovoy <stavultras@gmail.com>
Sat, 9 May 2026 18:56:45 +0000 (14:56 -0400)
committerJonas Jelonek <jelonek.jonas@gmail.com>
Wed, 1 Jul 2026 07:32:36 +0000 (09:32 +0200)
RAM: ESMT M15T2G16128A-DEB DDR3 1866 MT/s

This allows us to use the full size of nand,
which extends ubi size from 64Mb to 122.25Mb.

1. Log in to the device and backup all the partitions,
especially unique "Factory" and "bdinfo" partitions
from System -> Backup / Flash Firmware -> Save mtdblock contents.
2. Install kmod-mtd-rw to unlock mtd partitions for writing
  apk update && apk add kmod-mtd-rw && insmod mtd-rw i_want_a_brick=1

3. Write new OpenWrt (U-Boot Layout) "BL2" and "FIP":
  mtd -e BL2 write openwrt-mediatek-filogic-cudy_m3000-v2-yt8821-ubootmod-preloader.bin BL2
  mtd -e FIP write openwrt-mediatek-filogic-cudy_m3000-v2-yt8821-ubootmod-bl31-uboot.fip FIP
4. Set static IP on your PC: "192.168.1.254", gateway "192.168.1.1"
5. Serve openwrt-mediatek-filogic-cudy_m3000-v2-yt8821-ubootmod-initramfs-recovery.itb
using TFTP server.
6. Connect Router LAN with PC LAN.
7. Cut off the power and re-engage, wait for TFTP recovery to complete.
8. After OpenWrt initramfs recovery has booted,
clean "/dev/mtd5" ubi partition to utilize maximum of free space:
  ubidetach -p /dev/mtd5; ubiformat /dev/mtd5 -y; ubiattach -p /dev/mtd5
  ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
  ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
9. Perform sysupgrade.

Signed-off-by: Dmitry Mostovoy <stavultras@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23274
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
package/boot/uboot-mediatek/Makefile
package/boot/uboot-mediatek/patches/468-add-cudy_m3000-v2-yt8821.patch [new file with mode: 0644]
package/boot/uboot-tools/uboot-envtools/files/mediatek_filogic
target/linux/mediatek/dts/mt7981b-cudy-m3000-v2-yt8821-ubootmod.dts [new file with mode: 0644]
target/linux/mediatek/dts/mt7981b-cudy-m3000-v2-yt8821.dts
target/linux/mediatek/dts/mt7981b-cudy-m3000-v2-yt8821.dtsi [new file with mode: 0644]
target/linux/mediatek/filogic/base-files/etc/board.d/02_network
target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
target/linux/mediatek/image/filogic.mk

index 72891a471abc5d7ed57d639e405366d0ed9c43b3..4b50e78234c01ef537257666533a7191e408358e 100644 (file)
@@ -341,6 +341,18 @@ define U-Boot/mt7981_cudy_m3000-v1
   DEPENDS:=+trusted-firmware-a-mt7981-cudy-ddr3
 endef
 
+define U-Boot/mt7981_cudy_m3000-v2-yt8821
+  NAME:=Cudy M3000 v2 with Motorcomm YT8821
+  BUILD_SUBTARGET:=filogic
+  BUILD_DEVICES:=cudy_m3000-v2-yt8821-ubootmod
+  UBOOT_CONFIG:=mt7981_cudy_m3000-v2-yt8821
+  UBOOT_IMAGE:=u-boot.fip
+  BL2_BOOTDEV:=cudy
+  BL2_SOC:=mt7981
+  BL2_DDRTYPE:=ddr3
+  DEPENDS:=+trusted-firmware-a-mt7981-cudy-ddr3
+endef
+
 define U-Boot/mt7981_cudy_tr3000-v1
   NAME:=Cudy TR3000 v1
   BUILD_SUBTARGET:=filogic
@@ -1273,6 +1285,7 @@ UBOOT_TARGETS := \
        mt7981_comfast_cf-wr632ax \
        mt7981_creatlentem_clt-r30b1-ubi \
        mt7981_cudy_m3000-v1 \
+       mt7981_cudy_m3000-v2-yt8821 \
        mt7981_cudy_tr3000-v1 \
        mt7981_cudy_wbr3000uax-v1 \
        mt7981_cudy_wr3000e-v1 \
diff --git a/package/boot/uboot-mediatek/patches/468-add-cudy_m3000-v2-yt8821.patch b/package/boot/uboot-mediatek/patches/468-add-cudy_m3000-v2-yt8821.patch
new file mode 100644 (file)
index 0000000..4771966
--- /dev/null
@@ -0,0 +1,325 @@
+--- /dev/null
++++ b/configs/mt7981_cudy_m3000-v2-yt8821_defconfig
+@@ -0,0 +1,112 @@
++CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
++CONFIG_SYS_HAS_NONCACHED_MEMORY=y
++CONFIG_POSITION_INDEPENDENT=y
++CONFIG_ARCH_MEDIATEK=y
++CONFIG_TEXT_BASE=0x41e00000
++CONFIG_SYS_MALLOC_F_LEN=0x4000
++CONFIG_NR_DRAM_BANKS=1
++CONFIG_DEFAULT_DEVICE_TREE="mt7981-cudy-m3000-v2-yt8821"
++CONFIG_OF_LIBFDT_OVERLAY=y
++CONFIG_TARGET_MT7981=y
++CONFIG_SYS_LOAD_ADDR=0x46000000
++CONFIG_PRE_CON_BUF_ADDR=0x4007EF00
++CONFIG_DEBUG_UART_BASE=0x11002000
++CONFIG_DEBUG_UART_CLOCK=40000000
++CONFIG_DEBUG_UART=y
++CONFIG_FIT=y
++CONFIG_BOOTDELAY=30
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_AUTOBOOT_MENU_SHOW=y
++CONFIG_DEFAULT_FDT_FILE="mediatek/mt7981-cudy-m3000-v2-yt8821.dtb"
++CONFIG_LOGLEVEL=7
++CONFIG_PRE_CONSOLE_BUFFER=y
++CONFIG_LOG=y
++# CONFIG_BOARD_INIT is not set
++CONFIG_BOARD_LATE_INIT=y
++CONFIG_HUSH_PARSER=y
++CONFIG_SYS_PROMPT="MT7981> "
++CONFIG_CMD_CPU=y
++CONFIG_CMD_LICENSE=y
++CONFIG_CMD_BOOTMENU=y
++CONFIG_CMD_ASKENV=y
++CONFIG_CMD_ERASEENV=y
++CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
++CONFIG_CMD_STRINGS=y
++CONFIG_CMD_DM=y
++CONFIG_CMD_GPIO=y
++CONFIG_CMD_GPT=y
++CONFIG_CMD_MTD=y
++CONFIG_CMD_PART=y
++CONFIG_CMD_TFTPSRV=y
++CONFIG_CMD_RARP=y
++CONFIG_CMD_CDP=y
++CONFIG_CMD_SNTP=y
++CONFIG_CMD_LINK_LOCAL=y
++CONFIG_CMD_DHCP=y
++CONFIG_CMD_DNS=y
++CONFIG_CMD_PING=y
++CONFIG_CMD_PXE=y
++CONFIG_CMD_CACHE=y
++CONFIG_CMD_PSTORE=y
++CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
++CONFIG_CMD_UUID=y
++CONFIG_CMD_HASH=y
++CONFIG_CMD_SMC=y
++CONFIG_CMD_UBI=y
++CONFIG_CMD_UBI_RENAME=y
++CONFIG_OF_EMBED=y
++CONFIG_ENV_OVERWRITE=y
++CONFIG_ENV_IS_IN_UBI=y
++CONFIG_ENV_REDUNDANT=y
++CONFIG_ENV_UBI_PART="ubi"
++CONFIG_ENV_UBI_VOLUME="ubootenv"
++CONFIG_ENV_UBI_VOLUME_REDUND="ubootenv2"
++CONFIG_ENV_RELOC_GD_ENV_ADDR=y
++CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y
++CONFIG_ENV_DEFAULT_ENV_TEXT_FILE="defenvs/cudy_m3000-v2-yt8821_env"
++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
++CONFIG_VERSION_VARIABLE=y
++CONFIG_NETCONSOLE=y
++CONFIG_USE_IPADDR=y
++CONFIG_IPADDR="192.168.1.1"
++CONFIG_USE_SERVERIP=y
++CONFIG_SERVERIP="192.168.1.254"
++CONFIG_NET_RANDOM_ETHADDR=y
++CONFIG_REGMAP=y
++CONFIG_SYSCON=y
++CONFIG_BUTTON=y
++CONFIG_BUTTON_GPIO=y
++CONFIG_CLK=y
++CONFIG_GPIO_HOG=y
++CONFIG_LED=y
++CONFIG_LED_BLINK=y
++CONFIG_LED_GPIO=y
++# CONFIG_MMC is not set
++CONFIG_MTD=y
++CONFIG_DM_MTD=y
++CONFIG_MTD_SPI_NAND=y
++CONFIG_MTD_UBI_FASTMAP=y
++CONFIG_PHY_FIXED=y
++CONFIG_MEDIATEK_ETH=y
++CONFIG_PHY=y
++CONFIG_PINCTRL=y
++CONFIG_PINCONF=y
++CONFIG_PINCTRL_MT7981=y
++CONFIG_POWER_DOMAIN=y
++CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_DM_REGULATOR=y
++CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_REGULATOR_GPIO=y
++CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
++CONFIG_DM_SERIAL=y
++CONFIG_SERIAL_RX_BUFFER=y
++CONFIG_MTK_SERIAL=y
++CONFIG_SPI=y
++CONFIG_DM_SPI=y
++CONFIG_MTK_SPIM=y
++CONFIG_ZSTD=y
++CONFIG_HEXDUMP=y
+--- /dev/null
++++ b/arch/arm/dts/mt7981-cudy-m3000-v2-yt8821.dts
+@@ -0,0 +1,150 @@
++// SPDX-License-Identifier: GPL-2.0-or-later
++
++/dts-v1/;
++#include "mt7981.dtsi"
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/linux-event-codes.h>
++
++/ {
++      #address-cells = <1>;
++      #size-cells = <1>;
++      model = "Cudy M3000 v2 with Motorcomm YT8821";
++      compatible = "mediatek,mt7981", "mediatek,mt7981-rfb";
++
++      chosen {
++              stdout-path = &uart0;
++              tick-timer = &timer0;
++      };
++
++      memory@40000000 {
++              device_type = "memory";
++              reg = <0x40000000 0x10000000>;
++      };
++
++      gpio-keys {
++              compatible = "gpio-keys";
++
++              button-reset {
++                      label = "reset";
++                      linux,code = <KEY_RESTART>;
++                      gpios = <&pio 1 GPIO_ACTIVE_LOW>;
++              };
++      };
++
++      gpio-leds {
++              compatible = "gpio-leds";
++
++              led_status_white {
++                      label = "white:status";
++                      gpios = <&pio 10 GPIO_ACTIVE_LOW>;
++              };
++
++              led_wan_white {
++                      label = "white:wan";
++                      gpios = <&pio 5 GPIO_ACTIVE_LOW>;
++              };
++      };
++};
++
++&eth {
++      status = "okay";
++      mediatek,gmac-id = <1>;
++      phy-mode = "gmii";
++      phy-handle = <&phy0>;
++
++      mdio {
++              phy0: ethernet-phy@0 {
++                      compatible = "ethernet-phy-id03a2.9461";
++                      reg = <0x0>;
++                      phy-mode = "gmii";
++              };
++      };
++};
++
++&pio {
++      spi_flash_pins: spi0-pins-func-1 {
++              mux {
++                      function = "flash";
++                      groups = "spi0", "spi0_wp_hold";
++              };
++
++              conf-pu {
++                      pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
++                      drive-strength = <MTK_DRIVE_8mA>;
++                      bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
++              };
++
++              conf-pd {
++                      pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
++                      drive-strength = <MTK_DRIVE_8mA>;
++                      bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
++              };
++      };
++};
++
++&spi0 {
++      #address-cells = <1>;
++      #size-cells = <0>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&spi_flash_pins>;
++      status = "okay";
++      must_tx;
++      enhance_timing;
++      dma_ext;
++      ipm_design;
++      support_quad;
++      tick_dly = <2>;
++      sample_sel = <0>;
++
++      spi_nand@0 {
++              compatible = "spi-nand";
++              reg = <0>;
++              spi-max-frequency = <52000000>;
++
++              partitions {
++                      compatible = "fixed-partitions";
++                      #address-cells = <1>;
++                      #size-cells = <1>;
++
++                      partition@0 {
++                              label = "bl2";
++                              reg = <0x0 0x100000>;
++                      };
++
++                      partition@100000 {
++                              label = "u-boot-env";
++                              reg = <0x100000 0x80000>;
++                      };
++
++                      partition@180000 {
++                              label = "factory";
++                              reg = <0x180000 0x200000>;
++                      };
++
++                      partition@380000 {
++                              label = "bdinfo";
++                              reg = <0x380000 0x40000>;
++                      };
++
++                      partition@3c0000 {
++                              label = "fip";
++                              reg = <0x3c0000 0x200000>;
++                      };
++
++                      partition@5c0000 {
++                              label = "ubi";
++                              reg = <0x5c0000 0x7a40000>;
++                              compatible = "linux,ubi";
++                      };
++              };
++      };
++};
++
++&uart0 {
++      mediatek,force-highspeed;
++      status = "okay";
++};
++
++&watchdog {
++      status = "disabled";
++};
+--- /dev/null
++++ b/defenvs/cudy_m3000-v2-yt8821_env
+@@ -0,0 +1,54 @@
++ipaddr=192.168.1.1
++serverip=192.168.1.254
++loadaddr=0x46000000
++console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
++bootcmd=if pstore check ; then run boot_recovery ; else run boot_ubi ; fi
++bootconf=config-1
++bootdelay=0
++bootfile=openwrt-mediatek-filogic-cudy_m3000-v2-yt8821-ubootmod-initramfs-recovery.itb
++bootfile_bl2=openwrt-mediatek-filogic-cudy_m3000-v2-yt8821-ubootmod-preloader.bin
++bootfile_fip=openwrt-mediatek-filogic-cudy_m3000-v2-yt8821-ubootmod-bl31-uboot.fip
++bootfile_upg=openwrt-mediatek-filogic-cudy_m3000-v2-yt8821-ubootmod-squashfs-sysupgrade.itb
++bootled_pwr=white:status
++bootled_rec=white:wan
++bootmenu_confirm_return=askenv - Press ENTER to return to menu ; bootmenu 60
++bootmenu_default=0
++bootmenu_delay=0
++bootmenu_title=      \e[0;34m( ( ( \e[1;39mOpenWrt\e[0;34m ) ) )
++bootmenu_0=Initialize environment.=run _firstboot
++bootmenu_0d=Run default boot command.=run boot_default
++bootmenu_1=Boot system via TFTP.=run boot_tftp ; run bootmenu_confirm_return
++bootmenu_2=Boot production system from NAND.=run boot_production ; run bootmenu_confirm_return
++bootmenu_3=Boot recovery system from NAND.=run boot_recovery ; run bootmenu_confirm_return
++bootmenu_4=Load production system via TFTP then write to NAND.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_production ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
++bootmenu_5=Load recovery system via TFTP then write to NAND.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_recovery ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
++bootmenu_6=\e[31mLoad BL31+U-Boot FIP via TFTP then write to NAND.\e[0m=run boot_tftp_write_fip ; run bootmenu_confirm_return
++bootmenu_7=\e[31mLoad BL2 preloader via TFTP then write to NAND.\e[0m=run boot_tftp_write_bl2 ; run bootmenu_confirm_return
++bootmenu_8=Reboot.=reset
++bootmenu_9=Reset all settings to factory defaults.=run reset_factory ; reset
++boot_first=if button reset ; then led $bootled_rec on ; run boot_tftp_recovery ; setenv flag_recover 1 ; run boot_default ; fi ; bootmenu
++boot_default=if env exists flag_recover ; then else run bootcmd ; fi ; run boot_recovery ; setenv replacevol 1 ; run boot_tftp_forever
++boot_production=led $bootled_pwr on ; run ubi_read_production && bootm $loadaddr#$bootconf ; led $bootled_pwr off
++boot_recovery=led $bootled_rec on ; run ubi_read_recovery && bootm $loadaddr#$bootconf ; led $bootled_rec off
++boot_ubi=run boot_production ; run boot_recovery ; run boot_tftp_forever
++boot_tftp_forever=led $bootled_rec on ; while true ; do run boot_tftp_recovery ; sleep 1 ; done
++boot_tftp_production=tftpboot $loadaddr $bootfile_upg && env exists replacevol && iminfo $loadaddr && run ubi_write_production ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
++boot_tftp_recovery=tftpboot $loadaddr $bootfile && env exists replacevol && iminfo $loadaddr && run ubi_write_recovery ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
++boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr#$bootconf
++boot_tftp_write_fip=tftpboot $loadaddr $bootfile_fip && run mtd_write_fip && run reset_factory
++boot_tftp_write_bl2=tftpboot $loadaddr $bootfile_bl2 && run mtd_write_bl2
++reset_factory=ubi part ubi ; mw $loadaddr 0x0 0x800 ; ubi write $loadaddr ubootenv 0x800 ; ubi write $loadaddr ubootenv2 0x800
++mtd_write_fip=mtd erase fip && mtd write fip $loadaddr
++mtd_write_bl2=mtd erase bl2 && mtd write bl2 $loadaddr
++ubi_create_env=ubi check ubootenv || ubi create ubootenv 0x100000 dynamic || run ubi_format ; ubi check ubootenv2 || ubi create ubootenv2 0x100000 dynamic || run ubi_format
++ubi_format=ubi detach ; mtd erase ubi && ubi part ubi ; reset
++ubi_prepare_rootfs=if ubi check rootfs_data ; then else if env exists rootfs_data_max ; then ubi create rootfs_data $rootfs_data_max dynamic || ubi create rootfs_data - dynamic ; else ubi create rootfs_data - dynamic ; fi ; fi
++ubi_read_production=ubi read $loadaddr fit && iminfo $loadaddr && run ubi_prepare_rootfs
++ubi_read_recovery=ubi check recovery && ubi read $loadaddr recovery
++ubi_remove_rootfs=ubi check rootfs_data && ubi remove rootfs_data
++ubi_write_production=ubi check fit && ubi remove fit ; run ubi_remove_rootfs ; ubi create fit $filesize dynamic && ubi write $loadaddr fit $filesize
++ubi_write_recovery=ubi check recovery && ubi remove recovery ; run ubi_remove_rootfs ; ubi create recovery $filesize dynamic && ubi write $loadaddr recovery $filesize
++_init_env=setenv _init_env ; run ubi_create_env ; saveenv ; saveenv
++_firstboot=setenv _firstboot ; run _switch_to_menu ; run _init_env ; run boot_first
++_switch_to_menu=setenv _switch_to_menu ; setenv bootdelay 3 ; setenv bootmenu_delay 3 ; setenv bootmenu_0 $bootmenu_0d ; setenv bootmenu_0d ; run _bootmenu_update_title
++_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title       \e[33m$ver\e[0m"
index 8e181ed3ba1060b7751a56ca36ee90e3c2403032..b65fff07243ae6cdefc0c11993e8fe6cd5432ac0 100644 (file)
@@ -29,6 +29,7 @@ cmcc,a10-ubootmod|\
 comfast,cf-wr632ax-ubootmod|\
 creatlentem,clt-r30b1-ubi|\
 cudy,m3000-v1-ubootmod|\
+cudy,m3000-v2-yt8821-ubootmod|\
 cudy,tr3000-v1-ubootmod|\
 cudy,wbr3000uax-v1-ubootmod|\
 cudy,wr3000e-v1-ubootmod|\
diff --git a/target/linux/mediatek/dts/mt7981b-cudy-m3000-v2-yt8821-ubootmod.dts b/target/linux/mediatek/dts/mt7981b-cudy-m3000-v2-yt8821-ubootmod.dts
new file mode 100644 (file)
index 0000000..977cad3
--- /dev/null
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+#include "mt7981b-cudy-m3000-v2-yt8821.dtsi"
+
+/ {
+       model = "Cudy M3000 v2 with Motorcomm YT8821 (OpenWrt U-Boot layout)";
+       compatible = "cudy,m3000-v2-yt8821-ubootmod", "mediatek,mt7981";
+
+       chosen {
+               bootargs = "root=/dev/fit0 rootwait";
+               rootdisk = <&ubi_rootdisk>;
+       };
+};
+
+&ubi {
+       reg = <0x5c0000 0x7a40000>;
+
+       volumes {
+               ubi_rootdisk: ubi-volume-fit {
+                       volname = "fit";
+               };
+       };
+};
index 0922b318e1d15a9bead9578b7d09bb8549b3f076..79e8f2352c5b06c8152122a99f5e9fa70c4387d2 100644 (file)
@@ -2,21 +2,15 @@
 
 /dts-v1/;
 
-#include "mt7981b-cudy-m3000.dtsi"
+#include "mt7981b-cudy-m3000-v2-yt8821.dtsi"
 
 / {
        model = "Cudy M3000 v2 with Motorcomm YT8821";
        compatible = "cudy,m3000-v2-yt8821", "mediatek,mt7981";
 };
 
-&mdio_bus {
-       wan_phy: ethernet-phy@1 {
-               compatible = "ethernet-phy-id4f51.ea19";
-               reg = <1>;
-               reset-assert-us = <100000>;
-               reset-deassert-us = <100000>;
-               reset-gpios = <&pio 39 GPIO_ACTIVE_LOW>;
-               interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
-               interrupt-parent = <&pio>;
-       };
+&spi_nand {
+       mediatek,nmbm;
+       mediatek,bmt-max-ratio = <1>;
+       mediatek,bmt-max-reserved-blocks = <64>;
 };
diff --git a/target/linux/mediatek/dts/mt7981b-cudy-m3000-v2-yt8821.dtsi b/target/linux/mediatek/dts/mt7981b-cudy-m3000-v2-yt8821.dtsi
new file mode 100644 (file)
index 0000000..9401c7a
--- /dev/null
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+
+#include "mt7981b-cudy-m3000.dtsi"
+
+&mdio_bus {
+       wan_phy: ethernet-phy@1 {
+               compatible = "ethernet-phy-id4f51.ea19";
+               reg = <1>;
+               reset-assert-us = <100000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&pio 39 GPIO_ACTIVE_LOW>;
+               interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-parent = <&pio>;
+       };
+};
index a14bc7025289b1fc97e5a069029cf60e7b1bb220..3acac5e6753dc3738e4593eec21efaa8b85c79c9 100644 (file)
@@ -151,6 +151,7 @@ mediatek_setup_interfaces()
        cudy,m3000-v1|\
        cudy,m3000-v1-ubootmod|\
        cudy,m3000-v2-yt8821|\
+       cudy,m3000-v2-yt8821-ubootmod|\
        cudy,tr3000-256mb-v1|\
        cudy,tr3000-v1|\
        cudy,tr3000-v1-ubootmod|\
index fbdad933f99038dc1abe3f4308152ec49afcd040..4c96df3121d4e3c2414dc1ff7b6d2e599ce08dde 100644 (file)
@@ -94,6 +94,7 @@ case "$board" in
        cudy,m3000-v1|\
        cudy,m3000-v1-ubootmod|\
        cudy,m3000-v2-yt8821|\
+       cudy,m3000-v2-yt8821-ubootmod|\
        cudy,re3000-v1|\
        cudy,tr3000-256mb-v1|\
        cudy,tr3000-v1|\
index b9e5316920a89e2e6f4da466833dc1867f99b657..79e25abdf736a8513c40a07ea61fc869cc139019 100644 (file)
@@ -149,6 +149,7 @@ platform_do_upgrade() {
        comfast,cf-wr632ax-ubootmod|\
        creatlentem,clt-r30b1-ubi|\
        cudy,m3000-v1-ubootmod|\
+       cudy,m3000-v2-yt8821-ubootmod|\
        cudy,tr3000-v1-ubootmod|\
        cudy,wbr3000uax-v1-ubootmod|\
        cudy,wr3000e-v1-ubootmod|\
@@ -364,6 +365,7 @@ platform_check_image() {
        comfast,cf-wr632ax-ubootmod|\
        creatlentem,clt-r30b1-ubi|\
        cudy,m3000-v1-ubootmod|\
+       cudy,m3000-v2-yt8821-ubootmod|\
        cudy,tr3000-v1-ubootmod|\
        cudy,wbr3000uax-v1-ubootmod|\
        cudy,wr3000e-v1-ubootmod|\
index 83bb7d7dc317ccf0336bf8b8ac6754bf3a647555..8a611c36c7b82f9efea886b9020dbd47f5780635 100644 (file)
@@ -1242,6 +1242,31 @@ define Device/cudy_m3000-v2-yt8821
 endef
 TARGET_DEVICES += cudy_m3000-v2-yt8821
 
+define Device/cudy_m3000-v2-yt8821-ubootmod
+  DEVICE_VENDOR := Cudy
+  DEVICE_MODEL := M3000
+  DEVICE_VARIANT := v2 with Motorcomm YT8821 (OpenWrt U-Boot layout)
+  DEVICE_DTS := mt7981b-cudy-m3000-v2-yt8821-ubootmod
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware kmod-phy-motorcomm
+  UBINIZE_OPTS := -E 5
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  KERNEL_IN_UBI := 1
+  UBOOTENV_IN_UBI := 1
+  IMAGES := sysupgrade.itb
+  KERNEL_INITRAMFS_SUFFIX := -recovery.itb
+  KERNEL := kernel-bin | gzip
+  KERNEL_INITRAMFS := kernel-bin | lzma | \
+       fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
+  IMAGE/sysupgrade.itb := append-kernel | \
+       fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
+  ARTIFACTS := preloader.bin bl31-uboot.fip
+  ARTIFACT/preloader.bin := mt7981-bl2 cudy-ddr3
+  ARTIFACT/bl31-uboot.fip := mt7981-bl31-uboot cudy_m3000-v2-yt8821
+endef
+TARGET_DEVICES += cudy_m3000-v2-yt8821-ubootmod
+
 define Device/cudy_re3000-v1
   DEVICE_VENDOR := Cudy
   DEVICE_MODEL := RE3000