filogic: add support for ASUS TUF AX6000
authorPatryk Kowalczyk <patryk@kowalczyk.ws>
Sat, 16 Sep 2023 01:02:35 +0000 (03:02 +0200)
committerDavid Bauer <mail@david-bauer.net>
Tue, 31 Oct 2023 20:12:15 +0000 (21:12 +0100)
Hardware
========
SOC: MediaTek MT7986
RAM: 512MB DDR3
FLASH: 256MB SPI-NAND
WIFI: Mediatek MT7986 DBDC 802.11ax 2.4/5 GHz 4T4R
ETH: MediaTek MT7530 Switch (LAN)
MaxLinear GPY211C 2.5 N-Base-T PHY (WAN)
MaxLinear GPY211C 2.5 N-Base-T PHY (LAN)
UART: 3V3 115200 8N1 (Do not connect VCC)
USB 3.1

Installation
============

Download the OpenWrt initramfs image. Copy the image to a TFTP server
reachable at 192.168.1.70/24. Rename the image to TUF-AX6000.bin.

Connect to the serial console, interrupt the auto boot process by
pressing '4' when prompted or press '1' and set client IP, server
IP and name of the image.

yOU don't need to open the case or even soldering anything.
use three goldpin wires, remove their plastic cover and connect
them to the console pinout via the case holes.

You can see three holes
From Bottom: RX, TX, Ground - partially covered

Download & Boot the OpenWrt initramfs image.

In case of option '4'
$ setenv ipaddr 192.168.1.1
$ setenv serverip 192.168.1.70
$ tftpboot 0x46000000 TUF-AX6000.bin
$ bootm 0x46000000

In case of option '1'
1: Load System code to SDRAM via TFTP.
Please Input new ones /or Ctrl-C to discard
Input device IP (192.168.1.1) ==:
Input server IP (192.168.1.70) ==:
Input Linux Kernel filename (TUF-AX6000.trx) ==:

Wait for OpenWrt to boot. Transfer the sysupgrade
image to the device using scp and install using sysupgrade.

$ sysupgrade -n <path-to-sysupgrade.bin>

Missing features
================

2.5Gb LAN port LED is ON during boot or when the LAN cable is disconnected

The cover yellow light is not supported. (only blue one)

Signed-off-by: Patryk Kowalczyk <patryk@kowalczyk.ws>
target/linux/mediatek/dts/mt7986a-asus-tuf-ax6000.dts [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/firmware/11-mt76-caldata
target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
target/linux/mediatek/filogic/base-files/lib/preinit/10_fix_eth_mac.sh
target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
target/linux/mediatek/image/filogic.mk

diff --git a/target/linux/mediatek/dts/mt7986a-asus-tuf-ax6000.dts b/target/linux/mediatek/dts/mt7986a-asus-tuf-ax6000.dts
new file mode 100644 (file)
index 0000000..2e9114f
--- /dev/null
@@ -0,0 +1,382 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+#include "mt7986a.dtsi"
+
+/ {
+       model = "ASUS TUF-AX6000";
+       compatible = "asus,tuf-ax6000", "mediatek,mt7986a";
+
+       aliases {
+               serial0 = &uart0;
+               led-boot = &led_system;
+               led-failsafe = &led_system;
+               led-running = &led_system;
+               led-upgrade = &led_system;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+               bootargs-override = "ubi.mtd=UBI_DEV";
+       };
+
+       memory {
+               reg = <0 0x40000000 0 0x20000000>;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&pio 9 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               mesh {
+                       label = "wps";
+                       gpios = <&pio 10 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               wlan {
+                       label = "white:wlan";
+                       gpios = <&pio 2 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy1tpt";
+               };
+
+               led_system: system {
+                       label = "white:system";
+                       gpios = <&pio 11 GPIO_ACTIVE_HIGH>;
+               };
+
+               wan-red {
+                       label = "red:wan";
+                       gpios = <&pio 12 GPIO_ACTIVE_LOW>;
+               };
+
+               cover-blue {
+                       label = "blue:cover";
+                       gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_5v: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+};
+
+&crypto {
+       status = "okay";
+};
+
+&eth {
+       status = "okay";
+
+       gmac0: mac@0 {
+               /* LAN */
+               compatible = "mediatek,eth-mac";
+               reg = <0>;
+               phy-mode = "2500base-x";
+
+               fixed-link {
+                       speed = <2500>;
+                       full-duplex;
+                       pause;
+               };
+       };
+
+       gmac1: mac@1 {
+               /* WAN */
+               compatible = "mediatek,eth-mac";
+               reg = <1>;
+               phy-mode = "2500base-x";
+               phy-handle = <&phy6>;
+       };
+
+       mdio: mdio-bus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+       };
+};
+
+&mdio {
+       reset-gpios = <&pio 6 GPIO_ACTIVE_LOW>;
+       reset-delay-us = <50000>;
+       reset-post-delay-us = <20000>;
+
+       phy5: phy@5 {
+               compatible = "ethernet-phy-ieee802.3-c45";
+               reg = <5>;
+
+               mxl,led-config = <0x03f0 0x0 0x0 0x0>;
+       };
+
+       phy6: phy@6 {
+               compatible = "ethernet-phy-ieee802.3-c45";
+               reg = <6>;
+
+               /* LED0: CONN (WAN white) */
+               mxl,led-config = <0x03f0 0x0 0x0 0x0>;
+       };
+
+       switch: switch@0 {
+               compatible = "mediatek,mt7531";
+               reg = <31>;
+
+               reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
+               reset-assert-us = <10000>;
+               reset-deassert-us = <10000>;
+       };
+};
+
+&pio {
+       spi_flash_pins: spi-flash-pins-33-to-38 {
+               mux {
+                       function = "spi";
+                       groups = "spi0", "spi0_wp_hold";
+               };
+               conf-pu {
+                       pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
+                       drive-strength = <8>;
+                       mediatek,pull-up-adv = <0>; /* bias-disable */
+               };
+               conf-pd {
+                       pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
+                       drive-strength = <8>;
+                       mediatek,pull-down-adv = <0>; /* bias-disable */
+               };
+       };
+
+       wf_2g_5g_pins: wf_2g_5g-pins {
+               mux {
+                       function = "wifi";
+                       groups = "wf_2g", "wf_5g";
+               };
+               conf {
+                       pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
+                              "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
+                              "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
+                              "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
+                              "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
+                              "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
+                              "WF1_TOP_CLK", "WF1_TOP_DATA";
+                       drive-strength = <4>;
+               };
+       };
+
+       wf_dbdc_pins: wf-dbdc-pins {
+               mux {
+                       function = "wifi";
+                       groups = "wf_dbdc";
+               };
+               conf {
+                       pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
+                               "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
+                               "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
+                               "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
+                               "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
+                               "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
+                               "WF1_TOP_CLK", "WF1_TOP_DATA";
+                       drive-strength = <4>;
+               };
+       };
+};
+
+&pcie_phy {
+       status = "okay";
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi_flash_pins>;
+       status = "okay";
+
+       spi_nand_flash: flash@0 {
+               compatible = "spi-nand";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0>;
+
+               spi-max-frequency = <20000000>;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+
+               partitions: partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "bootloader";
+                               reg = <0x0 0x400000>;
+                               read-only;
+                       };
+
+                       partition@400000 {
+                               label = "UBI_DEV";
+                               reg = <0x400000 0xfc00000>;
+                       };
+               };
+       };
+};
+
+&switch {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@1 {
+                       reg = <4>;
+                       label = "lan1";
+               };
+
+               port@2 {
+                       reg = <3>;
+                       label = "lan2";
+               };
+
+               port@3 {
+                       reg = <2>;
+                       label = "lan3";
+               };
+
+               port@4 {
+                       reg = <1>;
+                       label = "lan4";
+               };
+
+               port@5 {
+                       reg = <5>;
+                       label = "lan5";
+                       phy-mode = "2500base-x";
+                       phy-handle = <&phy5>;
+
+               };
+
+               port@6 {
+                       reg = <6>;
+                       label = "cpu";
+                       ethernet = <&gmac0>;
+                       phy-mode = "2500base-x";
+
+                       fixed-link {
+                               speed = <2500>;
+                               full-duplex;
+                               pause;
+                       };
+               };
+       };
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               phy@1 {
+                       reg = <1>;
+
+                       mediatek,led-config = <
+                               0x21 0x8009 /* BASIC_CTRL */
+                               0x22 0x0c00 /* ON_DURATION */
+                               0x23 0x1400 /* BLINK_DURATION */
+                               0x24 0x8000 /* LED0_ON_CTRL */
+                               0x25 0x0000 /* LED0_BLINK_CTRL */
+                               0x26 0xc007 /* LED1_ON_CTRL */
+                               0x27 0x003f /* LED1_BLINK_CTRL */
+                       >;
+               };
+
+               phy@2 {
+                       reg = <2>;
+
+                       mediatek,led-config = <
+                               0x21 0x8009 /* BASIC_CTRL */
+                               0x22 0x0c00 /* ON_DURATION */
+                               0x23 0x1400 /* BLINK_DURATION */
+                               0x24 0x8000 /* LED0_ON_CTRL */
+                               0x25 0x0000 /* LED0_BLINK_CTRL */
+                               0x26 0xc007 /* LED1_ON_CTRL */
+                               0x27 0x003f /* LED1_BLINK_CTRL */
+                       >;
+               };
+
+               phy@3 {
+                       reg = <3>;
+
+                       mediatek,led-config = <
+                               0x21 0x8009 /* BASIC_CTRL */
+                               0x22 0x0c00 /* ON_DURATION */
+                               0x23 0x1400 /* BLINK_DURATION */
+                               0x24 0x8000 /* LED0_ON_CTRL */
+                               0x25 0x0000 /* LED0_BLINK_CTRL */
+                               0x26 0xc007 /* LED1_ON_CTRL */
+                               0x27 0x003f /* LED1_BLINK_CTRL */
+                       >;
+               };
+
+               phy@4 {
+                       reg = <4>;
+
+                       mediatek,led-config = <
+                               0x21 0x8009 /* BASIC_CTRL */
+                               0x22 0x0c00 /* ON_DURATION */
+                               0x23 0x1400 /* BLINK_DURATION */
+                               0x24 0x8000 /* LED0_ON_CTRL */
+                               0x25 0x0000 /* LED0_BLINK_CTRL */
+                               0x26 0xc007 /* LED1_ON_CTRL */
+                               0x27 0x003f /* LED1_BLINK_CTRL */
+                       >;
+               };
+       };
+};
+
+&watchdog {
+       status = "okay";
+};
+
+&wifi {
+       status = "okay";
+       pinctrl-names = "default", "dbdc";
+       pinctrl-0 = <&wf_2g_5g_pins>;
+       pinctrl-1 = <&wf_dbdc_pins>;
+};
+
+&trng {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&ssusb {
+       vusb33-supply = <&reg_3p3v>;
+       vbus-supply = <&reg_5v>;
+       status = "okay";
+};
+
+&usb_phy {
+       status = "okay";
+};
\ No newline at end of file
index d9fa4773535e5c8b87461420104370c1303dc2e4..aad1d67ff6fde57a85c5ded70065e145d8b90e4a 100644 (file)
@@ -15,6 +15,9 @@ mediatek_setup_interfaces()
        mediatek,mt7981-rfb)
                ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" eth1
                ;;
+       asus,tuf-ax6000)
+               ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 lan5" eth1
+               ;;
        netgear,wax220|\
        ubnt,unifi-6-plus|\
        zyxel,nwa50ax-pro)
@@ -78,7 +81,8 @@ mediatek_setup_macs()
        local label_mac=""
 
        case $board in
-       asus,tuf-ax4200)
+       asus,tuf-ax4200|\
+       asus,tuf-ax6000)
                CI_UBIPART="UBI_DEV"
                addr=$(mtd_get_mac_binary_ubi "Factory" 0x4)
                wan_mac="${addr}"
index e7826373489fb148ea1be63c2a791c4afb709c0e..63c1ec31b7a09ee10c50093a88a2dca4e78f3679 100644 (file)
@@ -45,7 +45,8 @@ case "$FIRMWARE" in
        ;;
 "mediatek/mt7986_eeprom_mt7976_dbdc.bin")
        case "$board" in
-       asus,tuf-ax4200)
+       asus,tuf-ax4200|\
+       asus,tuf-ax6000)
                CI_UBIPART="UBI_DEV"
                caldata_extract_ubi "Factory" 0x0 0x1000
                ;;
index 5de4061c948be8a046aea3e166d7c293fa0bdcca..395cc0f2dc546616e1b0e51149eff3e2b03322de 100644 (file)
@@ -16,7 +16,8 @@ case "$board" in
                [ "$PHYNBR" = "1" ] && cat $key_path/6gMAC > /sys${DEVPATH}/macaddress
                [ "$PHYNBR" = "2" ] && cat $key_path/5gMAC > /sys${DEVPATH}/macaddress
                ;;
-       asus,tuf-ax4200)
+       asus,tuf-ax4200|\
+       asus,tuf-ax6000)
                CI_UBIPART="UBI_DEV"
                addr=$(mtd_get_mac_binary_ubi "Factory" 0x4)
                # Originally, phy0 is phy1 mac with LA bit set. However, this would conflict
index 69d0ab6c60c54f5bcefbd02f8159ff785f5c8324..d770b1364322afd0c23a17f4ae835e192acaa43d 100644 (file)
@@ -10,7 +10,8 @@ preinit_set_mac_address() {
                ip link set dev game address "$(cat $key_path/LANMAC)"
                ip link set dev eth1 address "$(cat $key_path/WANMAC)"
                ;;
-       asus,tuf-ax4200)
+       asus,tuf-ax4200|\
+       asus,tuf-ax6000)
                CI_UBIPART="UBI_DEV"
                addr=$(mtd_get_mac_binary_ubi "Factory" 0x4)
                ip link set dev eth0 address "$addr"
index c8eea2eca2627dd9d04cfdc0e47db4a9d385b4cc..b7b9d6599325614e6c629e8598927e54af0a70db 100755 (executable)
@@ -56,7 +56,8 @@ platform_do_upgrade() {
                CI_ROOTPART="rootfs"
                emmc_do_upgrade "$1"
                ;;
-       asus,tuf-ax4200)
+       asus,tuf-ax4200|\
+       asus,tuf-ax6000)
                CI_UBIPART="UBI_DEV"
                CI_KERNPART="linux"
                nand_do_upgrade "$1"
index f7b838cf3bf4610379b9f5cd945faa27e8fa7273..e501ac3c7448650c3b0f095640987b0008a7571b 100644 (file)
@@ -121,6 +121,22 @@ define Device/asus_tuf-ax4200
 endef
 TARGET_DEVICES += asus_tuf-ax4200
 
+define Device/asus_tuf-ax6000
+  DEVICE_VENDOR := ASUS
+  DEVICE_MODEL := TUF-AX6000
+  DEVICE_DTS := mt7986a-asus-tuf-ax6000
+  DEVICE_DTS_DIR := ../dts
+  DEVICE_DTS_LOADADDR := 0x47000000
+  DEVICE_PACKAGES := kmod-usb3 kmod-mt7986-firmware mt7986-wo-firmware
+  IMAGES := sysupgrade.bin
+  KERNEL := kernel-bin | lzma | \
+       fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  KERNEL_INITRAMFS := kernel-bin | lzma | \
+       fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+endef
+TARGET_DEVICES += asus_tuf-ax6000
+
 define Device/acer_predator-w6
   DEVICE_VENDOR := Acer
   DEVICE_MODEL := Predator W6