diff --git a/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax-128.dts b/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax-128.dts new file mode 100644 index 00000000..99549b8a --- /dev/null +++ b/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax-128.dts @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7981b-zbt-z8109ax.dtsi" + +/ { + model = "ZBT Z8109AX 128M"; + compatible = "z8109ax-128m", "z8109ax", "mediatek,mt7981"; +}; + +&nand_rootfs { + reg = <0x0580000 0x7E80000>; +}; + diff --git a/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax-512.dts b/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax-512.dts new file mode 100644 index 00000000..9df6322f --- /dev/null +++ b/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax-512.dts @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7981b-zbt-z8109ax.dtsi" + +/ { + model = "ZBT Z8109AX 512M"; + compatible = "z8109ax-512m", "z8109ax", "mediatek,mt7981"; +}; + +&nand_rootfs { + reg = <0x0580000 0x20000000>; +}; + diff --git a/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax.dtsi b/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax.dtsi new file mode 100644 index 00000000..ff9155ef --- /dev/null +++ b/6.6/target/linux/mediatek/dts/mt7981b-zbt-z8109ax.dtsi @@ -0,0 +1,380 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +/dts-v1/; +#include +#include + +#include "mt7981.dtsi" + +/ { + model = "ZBT Z8109AX"; + compatible = "z8109ax", "mediatek,mt7981-spim-snand-rfb", "zbtlink,zbt-z8109ax"; + + aliases { + serial0 = &uart0; + led-boot = &led_status_green; + led-failsafe = &led_status_red; + led-running = &led_status_green; + led-upgrade = &led_status_green; + label-mac-device = &gmac0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8 loglevel=8"; + }; + + gpio-keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&pio 1 GPIO_ACTIVE_LOW>; + }; + + wps { + label = "wps"; + linux,code = ; + gpios = <&pio 0 GPIO_ACTIVE_LOW>; + }; + + }; + + leds { + compatible = "gpio-leds"; + + led_status_red: red { + label = "red:status"; + gpios = <&pio 9 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_STATUS; + }; + + led_status_green: green { + label = "green:status"; + gpios = <&pio 10 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_STATUS; + }; + + led_status_blue: blue { + label = "blue:status"; + gpios = <&pio 11 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_STATUS; + }; + + led_status_modem1: modem1 { + label = "modem1:status"; + gpios = <&pio 8 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_USB; + function-enumerator = <0>; + }; + + led_status_modem2: modem2 { + label = "modem2:status"; + gpios = <&pio 13 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_USB; + function-enumerator = <1>; + }; + + led_status_modem3: modem3 { + label = "modem3:status"; + gpios = <&pio 9 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_USB; + function-enumerator = <2>; + }; + + led_status_modem4: modem4 { + label = "modem3:status"; + gpios = <&pio 10 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_USB; + function-enumerator = <3>; + }; + }; + + watchdog { + compatible = "linux,wdt-gpio"; + gpios = <&pio 2 GPIO_ACTIVE_HIGH>; + hw_algo = "toggle"; + hw_margin_ms = <1000>; + }; + + gpio-export { + compatible = "gpio-export"; + #size-cells = <0>; + + modem1 { + gpio-export,name = "modem1"; + gpio-export,output = <1>; + gpios = <&pio 4 GPIO_ACTIVE_HIGH>; + }; + + modem2 { + gpio-export,name = "modem2"; + gpio-export,output = <1>; + gpios = <&pio 5 GPIO_ACTIVE_HIGH>; + }; + + modem3 { + gpio-export,name = "modem3"; + gpio-export,output = <1>; + gpios = <&pio 0 GPIO_ACTIVE_HIGH>; + }; + + modem4 { + gpio-export,name = "modem4"; + gpio-export,output = <1>; + gpios = <&pio 3 GPIO_ACTIVE_HIGH>; + }; + + sim1 { + gpio-export,name = "sim1"; + gpio-export,output = <1>; + gpios = <&pio 6 GPIO_ACTIVE_HIGH>; + }; + + sim2 { + gpio-export,name = "sim2"; + gpio-export,output = <1>; + gpios = <&pio 7 GPIO_ACTIVE_HIGH>; + }; + + sim3 { + gpio-export,name = "sim3"; + gpio-export,output = <1>; + gpios = <&pio 12 GPIO_ACTIVE_HIGH>; + }; + + sim4 { + gpio-export,name = "sim4"; + gpio-export,output = <1>; + gpios = <&pio 14 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +ð { + status = "okay"; + + gmac0: mac@0 { + compatible = "mediatek,eth-mac"; + reg = <0>; + phy-mode = "2500base-x"; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_factory_004>; + + fixed-link { + speed = <2500>; + full-duplex; + pause; + }; + }; + + gmac1: mac@1 { + compatible = "mediatek,eth-mac"; + reg = <1>; + phy-mode = "gmii"; + phy-handle = <&int_gbe_phy>; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_factory_02a>; + }; +}; + +&mdio_bus { + switch: switch@0 { + compatible = "mediatek,mt7531"; + reg = <31>; + reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>; + interrupt-controller; + #interrupt-cells = <1>; + interrupt-parent = <&pio>; + interrupts = <38 IRQ_TYPE_LEVEL_HIGH>; + }; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_flash_pins>; + status = "okay"; + + spi_nand@0 { + compatible = "spi-nand"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + + spi-max-frequency = <52000000>; + spi-tx-buswidth = <4>; + spi-rx-buswidth = <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 = <0x0000000 0x0100000>; + read-only; + }; + + partition@100000 { + label = "u-boot-env"; + reg = <0x0100000 0x0080000>; + }; + + factory: partition@180000 { + label = "Factory"; + reg = <0x0180000 0x0200000>; + read-only; + }; + + partition@380000 { + label = "FIP"; + reg = <0x0380000 0x0200000>; + read-only; + }; + + nand_rootfs: partition@580000 { + label = "ubi"; + }; + }; + }; +}; + +&switch { + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "lan1"; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_factory_004>; + }; + + port@1 { + reg = <1>; + label = "lan2"; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_factory_004>; + }; + + port@2 { + reg = <2>; + label = "lan3"; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_factory_004>; + }; + + port@3 { + reg = <3>; + label = "lan4"; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_factory_004>; + }; + + port@4 { + reg = <4>; + label = "lan5"; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_factory_004>; + }; + + port@6 { + reg = <6>; + label = "cpu"; + ethernet = <&gmac0>; + phy-mode = "2500base-x"; + + fixed-link { + speed = <2500>; + full-duplex; + pause; + }; + }; + }; +}; + +&pio { + gpio-line-names = + "wps", + "reset", + "watchdog", + "pcie", + "modem1", + "modem2", + "sim1", + "sim2", + "modem1_status", + "red_status", + "green_status", + "blue_status", + "", + "", + "modem2_status"; + + spi0_flash_pins: spi0-pins { + mux { + function = "spi"; + groups = "spi0", "spi0_wp_hold"; + }; + + conf-pu { + pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP"; + drive-strength = <8>; + mediatek,pull-up-adv = <0>; /* bias-disable */ + }; + + conf-pd { + pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO"; + drive-strength = <8>; + mediatek,pull-up-adv = <0>; /* bias-disable */ + }; + }; +}; + +&uart0 { + status = "okay"; +}; + +&watchdog { + status = "okay"; +}; + +&usb_phy { + status = "okay"; +}; + +&xhci { + status = "okay"; +}; + +&wifi { + status = "okay"; + mediatek,mtd-eeprom = <&factory 0x0>; +}; + +&factory { + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_factory_004: macaddr@004 { + reg = <0x004 0x6>; + }; + macaddr_factory_02a: macaddr@02a { + reg = <0x02a 0x6>; + }; +}; diff --git a/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds b/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds index 077568fd..55e3c70b 100644 --- a/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds +++ b/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds @@ -143,6 +143,13 @@ z8102ax-64m) ucidef_set_led_netdev "modem1" "modem1" "modem1:status" "wwan0" ucidef_set_led_netdev "modem2" "modem2" "modem2:status" "wwan1" ;; +z8109ax-512m|\ +z8109ax-128m) + ucidef_set_led_netdev "modem1" "modem1" "modem1:status" "wwan0" + ucidef_set_led_netdev "modem2" "modem2" "modem2:status" "wwan1" + ucidef_set_led_netdev "modem3" "modem3" "modem3:status" "wwan2" + ucidef_set_led_netdev "modem4" "modem4" "modem4:status" "wwan3" + ;; zbtlink,zbt-z8103ax) ucidef_set_led_netdev "wan" "wan" "green:wan" "eth1" "link tx rx" ;; diff --git a/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/02_network index fd9c169d..3f913892 100644 --- a/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/02_network +++ b/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/02_network @@ -58,7 +58,9 @@ mediatek_setup_interfaces() glinet,gl-mt6000|\ tplink,tl-xdr4288|\ tplink,tl-xdr6088|\ - tplink,tl-xtr8488) + tplink,tl-xtr8488|\ + z8109ax-512m|\ + z8109ax-128m) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 lan5" eth1 ;; bananapi,bpi-r3) diff --git a/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/03_gpio_switches b/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/03_gpio_switches index 51f1e4ba..aef5a53d 100644 --- a/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/03_gpio_switches +++ b/6.6/target/linux/mediatek/filogic/base-files/etc/board.d/03_gpio_switches @@ -20,6 +20,17 @@ z8102ax-128m) ucidef_add_gpio_switch "sim1" "SIM 1" "sim1" "0" ucidef_add_gpio_switch "sim2" "SIM 2" "sim2" "0" ;; +z8109ax-512m|\ +z8109ax-128m) + ucidef_add_gpio_switch "modem1" "Power 1st modem" "modem1" "1" + ucidef_add_gpio_switch "modem2" "Power 2nd modem" "modem2" "1" + ucidef_add_gpio_switch "modem3" "Power 3th modem" "modem3" "1" + ucidef_add_gpio_switch "modem4" "Power 4th modem" "modem4" "1" + ucidef_add_gpio_switch "sim1" "SIM 1" "sim1" "0" + ucidef_add_gpio_switch "sim2" "SIM 2" "sim2" "0" + ucidef_add_gpio_switch "sim3" "SIM 3" "sim3" "0" + ucidef_add_gpio_switch "sim4" "SIM 4" "sim4" "0" + ;; esac board_config_flush diff --git a/6.6/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/6.6/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac index 512f5370..3d34a32f 100644 --- a/6.6/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac +++ b/6.6/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac @@ -118,6 +118,8 @@ case "$board" in zbtlink,zbt-z8102ax|\ z8102ax-128m|\ z8102ax-64m|\ + z8109ax-512m|\ + z8109ax-128m|\ zbtlink,zbt-z8103ax|\ zyxel,ex5601-t0|\ zyxel,ex5601-t0-ubootmod) diff --git a/6.6/target/linux/mediatek/image/filogic.mk b/6.6/target/linux/mediatek/image/filogic.mk index ee1afcdf..5f19e1db 100644 --- a/6.6/target/linux/mediatek/image/filogic.mk +++ b/6.6/target/linux/mediatek/image/filogic.mk @@ -1580,3 +1580,36 @@ define Device/z8102ax-128m IMAGE_SIZE := 131072k endef TARGET_DEVICES += z8102ax-128m + +define Device/z8109ax + DEVICE_VENDOR := ZBT + DEVICE_MODEL := Z8109AX +# DEVICE_DTS := mt7981b-zbt-z8102ax + DEVICE_DTS_DIR := ../dts + DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware + KERNEL_IN_UBI := 1 + UBINIZE_OPTS := -E 5 + BLOCKSIZE := 128k + PAGESIZE := 2048 +ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) + ARTIFACTS := initramfs-factory.ubi + ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-kernel.bin | ubinize-kernel +endif + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata +endef + +define Device/z8109ax-512m + $(call Device/z8109ax) + DEVICE_VARIANT := 512 NAND + DEVICE_DTS := mt7981b-zbt-z8109ax-512m + IMAGE_SIZE := 524288k +endef +TARGET_DEVICES += z8109ax-512m + +define Device/z8109ax-128m + $(call Device/z8109ax) + DEVICE_VARIANT := 128 NAND + DEVICE_DTS := mt7981b-zbt-z8109ax-128m + IMAGE_SIZE := 131072k +endef +TARGET_DEVICES += z8109ax-128m diff --git a/config-z8109ax_128m b/config-z8109ax_128m new file mode 100644 index 00000000..fa071beb --- /dev/null +++ b/config-z8109ax_128m @@ -0,0 +1,16 @@ +CONFIG_TARGET_mediatek=y +CONFIG_TARGET_mediatek_filogic=y +CONFIG_TARGET_mediatek_filogic_DEVICE_z8109ax-128m=y +CONFIG_KERNEL_ARM64_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y +CONFIG_PACKAGE_z8102=y +CONFIG_PACKAGE_kmod-mt76=y +CONFIG_TARGET_ROOTFS_PARTSIZE=128 +CONFIG_TARGET_INITRAMFS_COMPRESSION_NONE=y +# CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2 is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZO is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4 is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_XZ is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD is not set diff --git a/config-z8109ax_512m b/config-z8109ax_512m new file mode 100644 index 00000000..63623ec6 --- /dev/null +++ b/config-z8109ax_512m @@ -0,0 +1,16 @@ +CONFIG_TARGET_mediatek=y +CONFIG_TARGET_mediatek_filogic=y +CONFIG_TARGET_mediatek_filogic_DEVICE_z8109ax-512m=y +CONFIG_KERNEL_ARM64_MODULE_PLTS=y +CONFIG_KERNEL_TCP_CONG_BBR2=y +CONFIG_PACKAGE_z8102=y +CONFIG_PACKAGE_kmod-mt76=y +CONFIG_TARGET_ROOTFS_PARTSIZE=512 +CONFIG_TARGET_INITRAMFS_COMPRESSION_NONE=y +# CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2 is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZO is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4 is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_XZ is not set +# CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD is not set