How to write mt7981 dts with gpio table

I made a mt7981 development board device by myself, but I don't know how to write dts and compile the system. I have a gpio table. Can someone help me write a dts? Thank you very much.

Do you have a working bootloader / u-boot? If this is a custom board you need to start there.

Obviously changing it for mt7981 reference board that matches.
You shouldn't have to write a device tree from scratch.
Learning it by example with existing boards and reading the programming manual and datasheet should be sufficient?

From memory with the GPIO you're probably just configuring the mux for the peripherals. i.e. out of gpio mode.

Are you planning on putting on vanilla openwrt and upstreaming it? Will this board or the board files be commercially available?

Yes, can you write dts and adapt it to upstream OpenWrt? I will mail the device to you, thank you

Ah not what I meant.

Nor do I want to be doing board bringup from u-boot haha.

But yeah basically take the mt7981 reference board code and modify to suit your board?

To start you would need to compare schematics to the ref board or openwrt one and then adapt?

Here's some references below.

Use openwrt one as a reference? They have schematics and board files too?
Hardware:
https://one.openwrt.org/hardware/

u-boot patch example:

openwrt patch example: (this misses mac address stuff which was added later, but you can find later stuff in the git history)

mt7981 reference board stuff:

I don't know how to code, I have no coding experience, I don't understand, can you help me write one, thank you

No programming experience is going to be very difficult/too hard for me to support.

How about starting with a known good reference board and building openwrt for it?

https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem

Only other thing I can say is share the board files/schematics somewhere publicly accessible and then someone might pick it up if there is going to be eventual commercial availability and the hardware features are better than openwrt one haha.

Publicly accessible != having to sign into google and request access FYI.

Thanks, I re-edited it

1 Like

Can someone help me make a uboot and OpenWrt system? Thanks

(post deleted by author)

Probably easier to answer if there was a brand and model posted...

If you post the specs for a computer, will people be able to guess the model ?

4 Likes

Do you intended to publicly post the files/schematics for this "R35 Mini"?

FYI, it was difficult to even get the name, it may be easier if you offer the community more information.

And you’re being very cagey about whether this is a commercial product.

If this is something you plan to sell then you should be paying a professional for the development, not asking for freebies from a volunteer web forum


~~Moderators merge "an Openwrt for this device"~~

just boot it as you already did in previous thread?

1 Like
Pin name	GPIO	是否使用	上电时用途	启动后用途	备注
GPIO_USER	0	是		USER键	低使能
GPIO_RESET	1	是		RESET键	低使能
SYS_WATCHDOG	3	NC			
PCIE_PERESET_N	3	NC			
JTAG_JTDO	4	NC			
JTAG_JTDI	5	NC			
JTAG_JTMS	6	NC			
JTAG_JTCLK	7	是		7981_RJ45灯	低使能
JTAG_JTRST_N	8	是		7981_RJ45灯	低使能
WO_JTAG_JTDO	9	是		SYS_LED	低使能
WO_JTAG_JTDI	10	NC			
WO_JTAG_JTMS	11	是		5G_REST	高复位模组
WO_JTAG_JTCLK	12	是		USB3/PCIE切换	低=PCIE,高=USB3
WO_JTAG_JTRST_N	13	是		5G_POW_EN	高5G模快供电
USB_VBUS	14	是 特殊脚	启动配置	PWM	PWM风扇调速
PWM0	15	是 特殊脚	启动配置		EMMC=RST
TF=CD
SPI0_CLK	16	是	NOR-NAND	TF-DATA0	默认启动方式NAND
SPI0_MOSI	17	是	NOR-NAND	TF-DATA1	默认启动方式NAND
SPI0_MISO	18	是	NOR-NAND	TF-DATA2	默认启动方式NAND
SPI0_CS	19	是	NOR-NAND	TF-DATA3	默认启动方式NAND
SPI0_HOLD	20	是	NOR-NAND		默认启动方式NAND
SPI0_WP	21	是	NOR-NAND		默认启动方式NAND
SPI1_CLK	22	NC			
SPI1_MOSI	23	NC			
SPI1_MISO	24	是		TF-CMD	
SPI1_CS	25	是		TF-CLK	
SPI2_CLK	26	是 特殊脚	SPI-NOR		 
SPI2_MOSI	27	是	SPI-NOR		
SPI2_MISO	28	是	SPI-NOR		
SPI2_CS	29	是	SPI-NOR		
SPI2_HOLD	30	是	SPI-NOR		
SPI2_WP	31	是	SPI-NOR		
UART0_RXD	32	是		UART0_RXD	调试串口
UART0_TXD	33	是		UART0_TXD	调试串口
WF2G_LED	34	是		2.4G WIFI-LED	低使能
WF5G_LED	35	是		5.8G WIFI-LED	低使能
SMI_MDC	36	是		SGMII_MDC	GPY211_2.5G_PHY
SMI_MDIO	37	是		SGMII_MDIO	GPY211_2.5G_PHY
GBE_INT	38	是		SGMII_INT	GPY211_2.5G_PHY
GBE_RESET	39	是		SGMII_RESET	GPY211_2.5G_PHY

git clone https://github.com/openwrt/openwrt.git

cd openwrt

grep -lri r35-mini target/

target/linux/mediatek/filogic/base-files/etc/board.d/01_leds
target/linux/mediatek/filogic/base-files/etc/board.d/02_network
target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface
target/linux/mediatek/image/filogic.mk
target/linux/mediatek/dts/mt7981b-one-r35-mini.dts

cat target/linux/mediatek/filogic/base-files/etc/board.d/01_leds

...............
one,r35-mini)
        ucidef_set_led_netdev "5g" "5G" "blue:indicator-0" "eth2" "link"
        ucidef_set_led_netdev "wlan2g" "WLAN2G" "blue:wlan-1" "phy0-ap0" "link"
        ucidef_set_led_netdev "wlan5g" "WLAN5G" "blue:wlan-2" "phy1-ap0" "link"
        ;;
...............

cat target/linux/mediatek/filogic/base-files/etc/board.d/02_network

...............
        one,r35-mini)
                ucidef_set_interfaces_lan_wan eth1 eth0
                ;;
...............

cat target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface

...............
        one,r35-mini)
                ip link set eth1 up
                ifname=eth1
                ;;
..............

cat target/linux/mediatek/image/filogic.mk

..............
define Device/one_r35-mini
  DEVICE_VENDOR := one
  DEVICE_MODEL := r35-mini
  DEVICE_DTS := mt7981b-one-r35-mini
  DEVICE_DTS_DIR := ../dts
  SUPPORTED_DEVICES += one,r35-mini-snand
  DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware kmod-hwmon-pwmfan kmod-usb3 \
        kmod-usb-serial-option kmod-usb-net-cdc-ether kmod-usb-net-qmi-wwan 
  UBINIZE_OPTS := -E 5
  BLOCKSIZE := 128k
  PAGESIZE := 2048
  IMAGE_SIZE := 246272k
  KERNEL_IN_UBI := 1
  IMAGE/sysupgrade.bin := sysupgrade-tar | append-gl-metadata
endef
TARGET_DEVICES += one_r35-mini
..............

cat target/linux/mediatek/dts/mt7981b-one-r35-mini.dts

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

/dts-v1/;

#include "mt7981.dtsi"

/ {
        model = "one r35-mini";
        compatible = "one,r35-mini", "mediatek,mt7981";

        aliases {
                label-mac-device = &gmac0;
                led-boot = &led_power;
                led-failsafe = &led_power;
                led-running = &led_power;
                led-upgrade = &led_power;
                serial0 = &uart0;
        };

        chosen {
                stdout-path = "serial0:115200n8";
                bootargs = "console=ttyS0,115200n8 root=PARTLABEL=rootfs rootwait";
        };

        gpio-keys {
                compatible = "gpio-keys";

                user {
                        label = "user";
                        linux,code = <BTN_0>;
                        gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
                };

                reset {
                        label = "reset";
                        linux,code = <KEY_RESTART>;
                        gpios = <&pio 1 GPIO_ACTIVE_LOW>;
                };
        };

        gpio-export {
               compatible = "gpio-export";
          
               module-reset {
                   gpio-export,name = "5g-reset";
                   gpio-export,output = <1>; /* Default high (release reset) */
                   gpios = <&pio 11 GPIO_ACTIVE_HIGH>; /* GPIO 11 */
               };
          
               mode-switch {
                   gpio-export,name = "usb-pcie-switch";
                   gpio-export,output = <0>; /* Default low (PCIE mode) */
                   gpios = <&pio 12 GPIO_ACTIVE_LOW>; /* GPIO 12, low for PCIE, high for USB3 */
               };
          
               module-power {
                   gpio-export,name = "5g-power";
                   gpio-export,output = <1>; /* Default high (power on) */
                   gpios = <&pio 13 GPIO_ACTIVE_HIGH>; /* GPIO 13 */
               };
        };


        leds {
                compatible = "gpio-leds";

                led_power: sys {
                        label = "green:sys";
                        gpios = <&pio 9 GPIO_ACTIVE_LOW>;
                };


                wifi2g {
                        label = "green:wifi2g";
                        gpios = <&pio 34 GPIO_ACTIVE_LOW>;
                };

                wifi5g {
                        label = "green:wifi5g";
                        gpios = <&pio 35 GPIO_ACTIVE_LOW>;
                };
        };
};

&uart0 {
        status = "okay";
};

&watchdog {
        status = "okay";
};

&mdio_bus {
        reset-gpios = <&pio 39 GPIO_ACTIVE_LOW>;
        reset-delay-us = <600>;
        reset-post-delay-us = <20000>;

        phy5: ethernet-phy@5 {
                reg = <5>;
                compatible = "ethernet-phy-ieee802.3-c45";
        };
};

&eth {
        status = "okay";

        gmac0: mac@0 {
                compatible = "mediatek,eth-mac";
                reg = <0>;
                phy-mode = "2500base-x";
                phy-handle = <&phy5>;
                nvmem-cells = <&macaddr_factory_a 0>;
                nvmem-cell-names = "mac-address";
        };

        gmac1: mac@1 {
                compatible = "mediatek,eth-mac";
                reg = <1>;
                phy-mode = "gmii";
                phy-handle = <&int_gbe_phy>;
                nvmem-cells = <&macaddr_factory_a 1>;
                nvmem-cell-names = "mac-address";
        };
};

&mdio_bus {
        reset-gpios = <&pio 39 GPIO_ACTIVE_LOW>;
        reset-delay-us = <600>;
        reset-post-delay-us = <20000>;

        phy0: ethernet-phy@5 {
                reg = <5>;
                compatible = "ethernet-phy-ieee802.3-c45";
                phy-mode = "2500base-x";
        };
};


&spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi0_flash_pins>;
        status = "okay";

        spi_nand: flash@0 {
                #address-cells = <1>;
                #size-cells = <1>;
                compatible = "spi-nand";
                reg = <0>;
                spi-max-frequency = <52000000>;

                spi-cal-enable;
                spi-cal-mode = "read-data";
                spi-cal-datalen = <7>;
                spi-cal-data = /bits/ 8 <0x53 0x50 0x49 0x4E 0x41 0x4E 0x44>;
                spi-cal-addrlen = <5>;
                spi-cal-addr = /bits/ 32 <0x0 0x0 0x0 0x0 0x0>;

                spi-tx-bus-width = <4>;
                spi-rx-bus-width = <4>;
                mediatek,nmbm;
                mediatek,bmt-max-ratio = <1>;
                mediatek,bmt-max-reserved-blocks = <64>;

                partitions {
                        compatible = "fixed-partitions";
                        #address-cells = <1>;
                        #size-cells = <1>;

                        partition@0 {
                                label = "BL2";
                                reg = <0x000000 0x0080000>; /* 512 KB */
                                read-only;
                        };

                        partition@80000 {
                                label = "u-boot-env";
                                reg = <0x0080000 0x0040000>; /* 256 KB */
                        };

                        factory: partition@c0000 {
                                label = "Factory";
                                reg = <0x00c0000 0x0100000>; /* 1 MB */
                                read-only;

                                nvmem-layout {
                                        compatible = "fixed-layout";
                                        #address-cells = <1>;
                                        #size-cells = <1>;

                                        macaddr: macaddr@a {
                                                compatible = "mac-base";
                                                reg = <0xa 0x6>;
                                                #nvmem-cell-cells = <1>;
                                        };
                                };
                        };

                        partition@1c0000 {
                                label = "FIP";
                                reg = <0x01c0000 0x0100000>; /* 1 MB */
                                read-only;
                        };

                        partition@2c0000 {
                                label = "log";
                                reg = <0x02c0000 0x0040000>; /* 256 KB */
                        };

                        partition@300000 {
                                label = "ubi";
                                reg = <0x0300000 0x04C00000>; /* 76 MB */
                                compatible = "linux,ubi";
                        };
                };
        };
};


&pio {
    spi0_flash_pins: spi0-pins {
        mux {
            function = "spi";
            groups = "spi0", "spi0_wp_hold";
        };
    };
    pcie_pins: pcie-pins {
        mux {
                function = "pcie";
                groups = "pcie_pereset", "pcie_clk", "pcie_wake";
        };
    };
};


&usb_phy {
        status = "okay";
};


&xhci {
        phys = <&u2port0 PHY_TYPE_USB2>;
        vusb33-supply = <&reg_3p3v>;
        vbus-supply = <&reg_5v>;
        mediatek,u3p-dis-msk = <0x01>;
        status = "okay";
};

&pcie {
        pinctrl-names = "default";
        pinctrl-0 = <&pcie_pins>;
        status = "okay";
};

&wifi {
        mediatek,mtd-eeprom = <&factory 0x0>;

        status = "okay";
};

./scripts/feeds update -a

./scripts/feeds install -a

make menuconfig

make -j 1 V=s

/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-gatonetworks-gdsp.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
../dts/mt7981b-gatonetworks-gdsp.dts:246.22-250.4: Warning (avoid_default_addr_size): /soc/wifi@18000000/band@0: Relying on default #address-cells value
../dts/mt7981b-gatonetworks-gdsp.dts:246.22-250.4: Warning (avoid_default_addr_size): /soc/wifi@18000000/band@0: Relying on default #size-cells value
../dts/mt7981b-gatonetworks-gdsp.dts:252.9-256.4: Warning (avoid_default_addr_size): /soc/wifi@18000000/band@1: Relying on default #address-cells value
../dts/mt7981b-gatonetworks-gdsp.dts:252.9-256.4: Warning (avoid_default_addr_size): /soc/wifi@18000000/band@1: Relying on default #size-cells value
rm -f /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-dlink-aquila-pro-ai-m30-a1.dtb.tmp
rm -f /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-edgecore-eap111.dtb.tmp
rm -f /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-gatonetworks-gdsp.dtb.tmp
aarch64-openwrt-linux-musl-cpp -nostdinc -x assembler-with-cpp  -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek/include -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/include/ -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/include-prefixes -undef -D__DTS__  -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt3000.dtb.tmp ../dts/mt7981b-glinet-gl-mt3000.dts
aarch64-openwrt-linux-musl-cpp -nostdinc -x assembler-with-cpp  -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek/include -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/include/ -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/include-prefixes -undef -D__DTS__  -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-one-r35-mini.dtb.tmp ../dts/mt7981b-one-r35-mini.dts
aarch64-openwrt-linux-musl-cpp -nostdinc -x assembler-with-cpp  -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek/include -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/include/ -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/include-prefixes -undef -D__DTS__  -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7986a-glinet-gl-mt6000.dtb.tmp ../dts/mt7986a-glinet-gl-mt6000.dts
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/dtc -O dtb -i../dts/ -Wno-interrupt_provider -Wno-unique_unit_address -Wno-unit_address_vs_reg -Wno-avoid_unnecessary_addr_size -Wno-alias_paths -Wno-graph_child_address -Wno-simple_bus_reg   -@ -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt2500.dtb /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt2500.dtb.tmp
../dts/mt7981b-glinet-gl-mt2500.dts:158.3-13: Warning (reg_format): /soc/mmc@11230000/card@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt2500.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt2500.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt2500.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt2500.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
../dts/mt7981b-glinet-gl-mt2500.dts:156.9-204.4: Warning (avoid_default_addr_size): /soc/mmc@11230000/card@0: Relying on default #address-cells value
../dts/mt7981b-glinet-gl-mt2500.dts:156.9-204.4: Warning (avoid_default_addr_size): /soc/mmc@11230000/card@0: Relying on default #size-cells value
rm -f /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt2500.dtb.tmp
aarch64-openwrt-linux-musl-cpp -nostdinc -x assembler-with-cpp  -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek/include -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/include/ -I/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/include-prefixes -undef -D__DTS__  -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-glinet-gl-x3000.dtb.tmp ../dts/mt7981a-glinet-gl-x3000.dts
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/dtc -O dtb -i../dts/ -Wno-interrupt_provider -Wno-unique_unit_address -Wno-unit_address_vs_reg -Wno-avoid_unnecessary_addr_size -Wno-alias_paths -Wno-graph_child_address -Wno-simple_bus_reg   -@ -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt3000.dtb /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt3000.dtb.tmp
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/dtc -O dtb -i../dts/ -Wno-interrupt_provider -Wno-unique_unit_address -Wno-unit_address_vs_reg -Wno-avoid_unnecessary_addr_size -Wno-alias_paths -Wno-graph_child_address -Wno-simple_bus_reg   -@ -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-one-r35-mini.dtb /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-one-r35-mini.dtb.tmp
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/dtc -O dtb -i../dts/ -Wno-interrupt_provider -Wno-unique_unit_address -Wno-unit_address_vs_reg -Wno-avoid_unnecessary_addr_size -Wno-alias_paths -Wno-graph_child_address -Wno-simple_bus_reg   -@ -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7986a-glinet-gl-mt6000.dtb /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7986a-glinet-gl-mt6000.dtb.tmp
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/arch/arm64/boot/dts/mediatek/mt7981.dtsi:351.22-372.5: ERROR (phandle_references): /soc/usb@11200000: Reference to non-existent node or label "reg_5v"

  also defined at ../dts/mt7981b-one-r35-mini.dts:240.7-246.3
../dts/mt7981b-one-r35-mini.dts:107.15-114.4: ERROR (phandle_references): /soc/ethernet@15100000/mac@0: Reference to non-existent node or label "macaddr_factory_a"

../dts/mt7981b-one-r35-mini.dts:116.15-123.4: ERROR (phandle_references): /soc/ethernet@15100000/mac@1: Reference to non-existent node or label "macaddr_factory_a"

ERROR: Input tree has errors, aborting (use -f to force output)
make[5]: *** [Makefile:43: /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-one-r35-mini.dtb] Error 2
make[5]: *** Waiting for unfinished jobs....
../dts/mt7986a-glinet-gl-mt6000.dts:319.3-13: Warning (reg_format): /soc/mmc@11230000/card@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7986a-glinet-gl-mt6000.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7986a-glinet-gl-mt6000.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7986a-glinet-gl-mt6000.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7986a-glinet-gl-mt6000.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
../dts/mt7986a-glinet-gl-mt6000.dts:317.9-353.4: Warning (avoid_default_addr_size): /soc/mmc@11230000/card@0: Relying on default #address-cells value
../dts/mt7986a-glinet-gl-mt6000.dts:317.9-353.4: Warning (avoid_default_addr_size): /soc/mmc@11230000/card@0: Relying on default #size-cells value
rm -f /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981b-glinet-gl-mt3000.dtb.tmp
rm -f /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7986a-glinet-gl-mt6000.dtb.tmp
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.65/scripts/dtc/dtc -O dtb -i../dts/ -Wno-interrupt_provider -Wno-unique_unit_address -Wno-unit_address_vs_reg -Wno-avoid_unnecessary_addr_size -Wno-alias_paths -Wno-graph_child_address -Wno-simple_bus_reg   -@ -o /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-glinet-gl-x3000.dtb /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-glinet-gl-x3000.dtb.tmp
../dts/mt7981a-glinet-gl-x3000-xe3000-common.dtsi:142.3-13: Warning (reg_format): /soc/mmc@11230000/card@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-glinet-gl-x3000.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-glinet-gl-x3000.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-glinet-gl-x3000.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
/home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-glinet-gl-x3000.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
../dts/mt7981a-glinet-gl-x3000-xe3000-common.dtsi:140.9-176.4: Warning (avoid_default_addr_size): /soc/mmc@11230000/card@0: Relying on default #address-cells value
../dts/mt7981a-glinet-gl-x3000-xe3000-common.dtsi:140.9-176.4: Warning (avoid_default_addr_size): /soc/mmc@11230000/card@0: Relying on default #size-cells value
rm -f /home/ubuntu/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/image-mt7981a-glinet-gl-x3000.dtb.tmp
make[5]: Leaving directory '/home/ubuntu/openwrt/target/linux/mediatek/image'
make[4]: *** [Makefile:17: install] Error 2
make[4]: Leaving directory '/home/ubuntu/openwrt/target/linux/mediatek'
make[3]: *** [Makefile:12: install] Error 2
make[3]: Leaving directory '/home/ubuntu/openwrt/target/linux'
time: target/linux/install#43.66#7.73#47.75
    ERROR: target/linux failed to build.
make[2]: *** [target/Makefile:32: target/linux/install] Error 1
make[2]: Leaving directory '/home/ubuntu/openwrt'
make[1]: *** [target/Makefile:26: /home/ubuntu/openwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.target_install] Error 2
make[1]: Leaving directory '/home/ubuntu/openwrt'
make: *** [/home/ubuntu/openwrt/include/toplevel.mk:233: world] Error 2

I wrote it according to gpio, but the compilation reported an error. What is the problem? Does anyone know what the problem is? Thank you