1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-12 11:21:55 +00:00

Add alpha support of z8109ax

This commit is contained in:
Ycarus (Yannick Chabanois) 2025-02-10 10:38:12 +01:00
parent 356805d755
commit 7c29555b98
10 changed files with 494 additions and 1 deletions

View file

@ -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>;
};

View file

@ -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>;
};

View file

@ -0,0 +1,380 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#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 = <KEY_RESTART>;
gpios = <&pio 1 GPIO_ACTIVE_LOW>;
};
wps {
label = "wps";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&pio 0 GPIO_ACTIVE_LOW>;
};
};
leds {
compatible = "gpio-leds";
led_status_red: red {
label = "red:status";
gpios = <&pio 9 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_RED>;
function = LED_FUNCTION_STATUS;
};
led_status_green: green {
label = "green:status";
gpios = <&pio 10 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
};
led_status_blue: blue {
label = "blue:status";
gpios = <&pio 11 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_STATUS;
};
led_status_modem1: modem1 {
label = "modem1:status";
gpios = <&pio 8 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_USB;
function-enumerator = <0>;
};
led_status_modem2: modem2 {
label = "modem2:status";
gpios = <&pio 13 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_USB;
function-enumerator = <1>;
};
led_status_modem3: modem3 {
label = "modem3:status";
gpios = <&pio 9 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_USB;
function-enumerator = <2>;
};
led_status_modem4: modem4 {
label = "modem3:status";
gpios = <&pio 10 GPIO_ACTIVE_LOW>;
color = <LED_COLOR_ID_BLUE>;
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>;
};
};
};
&eth {
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>;
};
};

View file

@ -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"
;;

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

16
config-z8109ax_128m Normal file
View file

@ -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

16
config-z8109ax_512m Normal file
View file

@ -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