From 3d7cb14211bb2b9f7ad34d001c40ac0bd1558767 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Sun, 11 Feb 2024 18:57:52 +0100 Subject: [PATCH] qualcommax: ipq807x: add Asus RT-AX89X BX revision This commit adds support for Asus RT-AX89X BX revision. WARNING: Only the BX revision boards (So B1, B2 etc) are supported because AX revision boards use IPQ8074 v1 SoC which is unsupported. Specifications: --------------- * CPU: Qualcomm IPQ8074A Quad core Cortex-A53 @ 2.2GHz * RAM: 1024MB * Storage: 256MB SLC NAND (Macronix MX30UF2G18AC) * Ethernet: * 5x 1G RJ45 ports via QCA8337 switch * 3x 1G RJ45 ports via internal switch (QCA8075 PHY) * 1x 10G RJ45 via internal switch (AQR113C PHY) * 1x 10G SFP+ slot via internal switch * WLAN: * 2.4GHz 4x4 * 5GHz 8x8 * 8 external antennas * USB: 2x USB 3.0 Type-A * Buttons: * Power switch * WPS * Reset * Wireless ON/OFF * LED ON/OFF LED-s: * Power * Wi-Fi * WAN * 10G * SFP+ Power: * 19.5V via DC jack Installation instructions: -------------------------- 1. Flash temporary OpenWrt initramfs: * Flash openwrt-qualcommax-ipq807x-asus_rt-ax89x-initramfs-factory.trx via the stock firmware. Administration -> Firmware Upgrade -> Manual Firmware update (Upload) After flashing the device will reboot with OpenWrt initramfs and it can be accesed via any of the LAN ports via SSH with the usual OpenWrt default credentials. 2. Sysupgrade from OpenWrt initramfs: * Copy openwrt-qualcommax-ipq807x-asus_rt-ax89x-squashfs-sysupgrade.bin to /tmp/openwrt-qualcommax-ipq807x-asus_rt-ax89x-squashfs-sysupgrade.bin of the running initramfs image. * Simply sysupgrade -n /tmp/openwrt-qualcommax-ipq807x-asus_rt-ax89x-squashfs-sysupgrade.bin After flashing the device will reboot with OpenWrt initramfs and it can be accesed via any of the LAN ports via SSH with the usual OpenWrt default credentials. Link: https://github.com/openwrt/openwrt/pull/15840 Signed-off-by: Robert Marko --- .../uboot-envtools/files/qualcommax_ipq807x | 1 + .../arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts | 741 ++++++++++++++++++ target/linux/qualcommax/image/ipq807x.mk | 51 ++ .../ipq807x/base-files/etc/board.d/01_leds | 5 + .../ipq807x/base-files/etc/board.d/02_network | 3 + .../etc/hotplug.d/firmware/11-ath11k-caldata | 4 + .../base-files/lib/upgrade/platform.sh | 17 + .../linux/qualcommax/ipq807x/config-default | 1 + 8 files changed, 823 insertions(+) create mode 100644 target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts diff --git a/package/boot/uboot-envtools/files/qualcommax_ipq807x b/package/boot/uboot-envtools/files/qualcommax_ipq807x index 4ae0de4e26..852e05f29a 100644 --- a/package/boot/uboot-envtools/files/qualcommax_ipq807x +++ b/package/boot/uboot-envtools/files/qualcommax_ipq807x @@ -58,6 +58,7 @@ prpl,haze) [ -n "$mmcpart" ] && \ ubootenv_add_uci_config "$mmcpart" "0x0" "0x40000" "0x400" "0x100" ;; +asus,rt-ax89x|\ qnap,301w) idx="$(find_mtd_index 0:appsblenv)" [ -n "$idx" ] && \ diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts new file mode 100644 index 0000000000..4af942c289 --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-rt-ax89x.dts @@ -0,0 +1,741 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* Copyright (c) 2024, Robert Marko */ + +/dts-v1/; + +#include "ipq8074.dtsi" +#include "ipq8074-hk-cpu.dtsi" +#include "ipq8074-ess.dtsi" +#include +#include +#include + +/ { + model = "Asus RT-AX89X"; + compatible = "asus,rt-ax89x", "qcom,ipq8074"; + + aliases { + serial0 = &blsp1_uart5; + mdio-gpio0 = &mdio1; + ethernet0 = &dp1; + ethernet1 = &dp2; + ethernet2 = &dp3; + ethernet3 = &dp4; + ethernet4 = &dp5_syn; + ethernet5 = &dp6_syn; + led-boot = &led_pwr; + led-failsafe = &led_pwr; + led-running = &led_pwr; + led-upgrade = &led_pwr; + }; + + chosen { + stdout-path = "serial0:115200n8"; + /* We have to override root and ubi device passed by bootloader */ + bootargs-append = " ubi.block=0,jffs2 root=/dev/ubiblock0_4"; + }; + + keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + wifi-button { + label = "wifi"; + gpios = <&tlmm 26 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + reset-button { + label = "reset"; + gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps-button { + label = "wps"; + gpios = <&tlmm 34 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + led-button { + label = "led"; + gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&led_pins>; + pinctrl-names = "default"; + + led_pwr: led-pwr { + function = LED_FUNCTION_POWER; + gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led-2g { + function = LED_FUNCTION_WLAN_2GHZ; + gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>; + color = ; + linux,default-trigger = "phy0radio"; + }; + + led-5g { + function = LED_FUNCTION_WLAN_5GHZ; + gpios = <&tlmm 19 GPIO_ACTIVE_HIGH>; + color = ; + linux,default-trigger = "phy1radio"; + }; + + led-10g-copper { + function = "aqr10g"; + gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led-lan { + function = LED_FUNCTION_LAN; + gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led-sfp { + function = "sfp"; + gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led-wan-red { + function = LED_FUNCTION_WAN; + gpios = <&tlmm 44 GPIO_ACTIVE_HIGH>; + color = ; + }; + + led-wan-white { + function = LED_FUNCTION_WAN; + gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>; + color = ; + }; + }; + + gpio_fan: gpio-fan { + compatible = "gpio-fan"; + pinctrl-0 = <&fan_pins>; + pinctrl-names = "default"; + gpios = <&tlmm 64 GPIO_ACTIVE_HIGH + &tlmm 66 GPIO_ACTIVE_HIGH>; + /* + * Not supported upstream, but good to document for + * future uses. + * It seems that Delta AFB0712VHB fan has its tacho + * output connected to GPIO 65. + */ + //rpm-gpios = <&tlmm 65 GPIO_ACTIVE_HIGH>; + gpio-fan,speed-map = < 0 0 + 1600 1 + 1850 2 + 2100 3 >; + #cooling-cells = <2>; + }; + + usb0_vbus: regulator-usb0-vbus { + compatible = "regulator-fixed"; + regulator-name = "usb0_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-boot-on; + }; + + usb1_vbus: regulator-usb1-vbus { + compatible = "regulator-fixed"; + regulator-name = "usb1_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-boot-on; + }; + + output-usb0-power { + compatible = "regulator-output"; + vout-supply = <&usb0_vbus>; + }; + + output-usb1-power { + compatible = "regulator-output"; + vout-supply = <&usb1_vbus>; + }; +}; + +&cpu0_thermal { + trips { + cpu0_active: cpu-active { + temperature = <70000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + map2 { + trip = <&cpu0_active>; + cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; +}; + +&cpu1_thermal { + trips { + cpu1_active: cpu-active { + temperature = <70000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + map2 { + trip = <&cpu1_active>; + cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; +}; + +&cpu2_thermal { + trips { + cpu2_active: cpu-active { + temperature = <70000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + map2 { + trip = <&cpu2_active>; + cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; +}; + +&cpu3_thermal { + trips { + cpu3_active: cpu-active { + temperature = <70000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + map2 { + trip = <&cpu3_active>; + cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; +}; + +&cluster_thermal { + trips { + cluster_active: cluster-active { + temperature = <70000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + map2 { + trip = <&cluster_active>; + cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; +}; + +&tlmm { + button_pins: button-state { + pins = "gpio25", "gpio26", "gpio34", "gpio61"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + i2c_pins: i2c-pins { + pins = "gpio42", "gpio43"; + function = "blsp1_i2c"; + drive-strength = <8>; + bias-disable; + }; + + mdio_pins: mdio-pins { + mdc { + pins = "gpio68"; + function = "mdc"; + drive-strength = <16>; + bias-pull-up; + }; + + mdio { + pins = "gpio69"; + function = "mdio"; + drive-strength = <16>; + bias-pull-up; + }; + }; + + mdio_gpio_pins: mdio-gpio-pins { + pins = "gpio54", "gpio56"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + uniphy_pins: uniphy_pinmux { + mux { + pins = "gpio60"; + function = "rx2"; + bias-disable; + }; + + sfp_tx_disable { + pins = "gpio48"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + output-low; + }; + + sfp_tx_fault { + pins = "gpio62"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + output-high; + }; + + sfp_mod_def0 { + pins = "gpio46"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + led_pins: led-state { + power { + pins = "gpio21"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + default_off { + pins = "gpio18", "gpio19", "gpio20", "gpio47", + "gpio44", "gpio35", "gpio36"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + fan_pins: fan-state { + pins = "gpio64", "gpio66"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + output-high; + }; +}; + +&blsp1_uart5 { + status = "okay"; +}; + +&prng { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&ssphy_0 { + status = "okay"; +}; + +&qusb_phy_0 { + status = "okay"; +}; + +&ssphy_1 { + status = "okay"; +}; + +&qusb_phy_1 { + status = "okay"; +}; + +&usb_0 { + status = "okay"; +}; + +&usb_1 { + status = "okay"; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + status = "okay"; + + nand@0 { + reg = <0>; + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "0:sbl1"; + reg = <0x0 0x60000>; + read-only; + }; + + partition@60000 { + label = "0:mibib"; + reg = <0x00060000 0x40000>; + read-only; + }; + + partition@a0000 { + label = "0:qsee"; + reg = <0x000a0000 0x1e0000>; + read-only; + }; + + partition@280000 { + label = "0:devcfg"; + reg = <0x00280000 0x20000>; + read-only; + }; + + partition@2a0000 { + label = "0:apdp"; + reg = <0x002a0000 0x20000>; + read-only; + }; + + partition@2c0000 { + label = "0:rpm"; + reg = <0x002c0000 0x40000>; + read-only; + }; + + partition@300000 { + label = "0:cdt"; + reg = <0x00300000 0x20000>; + read-only; + }; + + partition@320000 { + label = "0:appsbl"; + reg = <0x00320000 0xc0000>; + read-only; + }; + + partition@3e0000 { + label = "0:appsblenv"; + reg = <0x003e0000 0x20000>; + }; + + partition@400000 { + compatible = "linux,ubi"; + label = "UBI_DEV"; + reg = <0x00400000 0xfc00000>; + }; + }; + }; +}; + +&blsp1_i2c2 { + status = "okay"; +}; + +&mdio { + status = "okay"; + + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; + + qca8337_0: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x0>; + }; + + qca8337_1: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x1>; + }; + + qca8337_2: ethernet-phy@2 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x2>; + }; + + qca8337_3: ethernet-phy@3 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x3>; + }; + + qca8337_4: ethernet-phy@4 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x4>; + }; + + /* + * Vendor bootloader has path for ethernet-phy@5 hardcoded + * and if its there it will delete the node, but since we + * need the QCA8035 for DSA lets fool the bootloader by using + * ethernet-phy@05 even though it causes DTC to print a warning. + */ + qca8035: ethernet-phy@05 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x5>; + }; + + qca8033: ethernet-phy@6 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x6>; + }; + + ethernet-phy-package@8 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "qcom,qca8075-package"; + reg = <8>; + + qcom,package-mode = "qsgmii"; + + qca8075_8: ethernet-phy@8 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x8>; + }; + + qca8075_9: ethernet-phy@9 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x9>; + }; + + qca8075_a: ethernet-phy@a { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0xa>; + }; + + qca8075_b: ethernet-phy@b { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0xb>; + }; + }; + + qca8337: switch@10 { + compatible = "qca,qca8337"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x10>; + + ports { + port@0 { + reg = <0>; + label = "cpu"; + ethernet = <&dp1>; + phy-mode = "rgmii-rxid"; + phy-handle = <&qca8035>; + }; + + port@1 { + reg = <1>; + label = "lan7"; + phy-handle = <&qca8337_0>; + }; + + port@2 { + reg = <2>; + label = "lan6"; + phy-handle = <&qca8337_1>; + }; + + port@3 { + reg = <3>; + label = "lan5"; + phy-handle = <&qca8337_2>; + }; + + port@4 { + reg = <4>; + label = "lan4"; + phy-handle = <&qca8337_3>; + }; + + port@5 { + reg = <5>; + label = "lan3"; + phy-handle = <&qca8337_4>; + }; + + port@6 { + reg = <6>; + label = "lan8"; + phy-mode = "sgmii"; + phy-handle = <&qca8033>; + managed = "in-band-status"; + qca,sgmii-enable-pll; + }; + }; + }; +}; + +&soc { + /* + * This is techically incorrect and will cause a DTC warning as + * all nodes under a bus are supposed to have addresses as well + * but its required as bootloader has this path hardcoded in + * order to enable AQR113C on newer revisions. + */ + mdio1: mdio1 { + compatible = "virtual,mdio-gpio"; + pinctrl-0 = <&mdio_gpio_pins>; + pinctrl-names = "default"; + gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>, + <&tlmm 54 GPIO_ACTIVE_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + + /* + * PCB R5.00, AQR113C + * No idea why the bitbanged this one. + * @5 is wrong, but their bootloader has it hardcoded in + * order to dynamically enable the PHY for newer HW. + */ + aqr113c: ethernet-phy@5 { + status = "disabled"; + compatible ="ethernet-phy-ieee802.3-c45"; + reg = <8>; + }; + }; +}; + +&switch { + status = "okay"; + + pinctrl-0 = <&uniphy_pins>; + pinctrl-names = "default"; + + switch_lan_bmp = <(ESS_PORT1 | ESS_PORT2 | ESS_PORT3 | ESS_PORT5 | ESS_PORT6)>; /* lan port bitmap */ + switch_wan_bmp = ; /* wan port bitmap */ + switch_mac_mode = ; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = ; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = ; /* mac mode for uniphy instance2*/ + + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0x8>; + }; + port@1 { + port_id = <2>; + phy_address = <0x9>; + }; + port@2 { + port_id = <3>; + phy_address = <0xa>; + }; + port@3 { + port_id = <4>; + phy_address = <0xb>; + }; + + sfp: port@4 { + port_id = <5>; + phy_address = <30>; + phy_i2c_address = <30>; + phy-i2c-mode; /*i2c access phy */ + media-type = "sfp"; /* fiber mode */ + sfp_tx_dis_pin = <&tlmm 48 GPIO_ACTIVE_HIGH>; + sfp_mod_present_pin = <&tlmm 46 GPIO_ACTIVE_LOW>; + }; + + /* PCB R5.00, AQR113C */ + port@5_113c { + status = "disabled"; + port_id = <6>; + phy_address = <8>; + ethernet-phy-ieee802.3-c45; + mdiobus = <&mdio1>; + }; + }; +}; + +&edma { + status = "okay"; +}; + +&dp1 { + status = "okay"; + phy-mode = "qsgmii"; + phy-handle = <&qca8075_8>; + label = "switch"; +}; + +&dp2 { + status = "okay"; + phy-mode = "qsgmii"; + phy-handle = <&qca8075_9>; + label = "lan2"; +}; + +&dp3 { + status = "okay"; + phy-mode = "qsgmii"; + phy-handle = <&qca8075_a>; + label = "lan1"; +}; + +&dp4 { + status = "okay"; + phy-mode = "qsgmii"; + phy-handle = <&qca8075_b>; + label = "wan"; +}; + +&dp5_syn { + status = "okay"; + phy-handle = <&sfp>; + label = "10g-sfp"; +}; + +&dp6_syn { + status = "okay"; + phy-handle = <&aqr113c>; + label = "10g-copper"; +}; + +&wifi { + status = "okay"; + qcom,ath11k-calibration-variant = "Asus-RT-AX89X"; +}; diff --git a/target/linux/qualcommax/image/ipq807x.mk b/target/linux/qualcommax/image/ipq807x.mk index e2a6da569c..8caa6a322c 100644 --- a/target/linux/qualcommax/image/ipq807x.mk +++ b/target/linux/qualcommax/image/ipq807x.mk @@ -1,3 +1,26 @@ +define Build/asus-fake-ramdisk + rm -rf $(KDIR)/tmp/fakerd + dd if=/dev/zero bs=32 count=1 > $(KDIR)/tmp/fakerd + $(info KERNEL_INITRAMFS is $(KERNEL_INITRAMFS)) +endef + +define Build/asus-fake-rootfs + $(eval comp=$(word 1,$(1))) + $(eval filepath=$(word 2,$(1))) + $(eval filecont=$(word 3,$(1))) + rm -rf $(KDIR)/tmp/fakefs $(KDIR)/tmp/fakehsqs + mkdir -p $(KDIR)/tmp/fakefs/$$(dirname $(filepath)) + echo '$(filecont)' > $(KDIR)/tmp/fakefs/$(filepath) + $(STAGING_DIR_HOST)/bin/mksquashfs4 $(KDIR)/tmp/fakefs $(KDIR)/tmp/fakehsqs -comp $(comp) \ + -b 4096 -no-exports -no-sparse -no-xattrs -all-root -noappend \ + $(wordlist 4,$(words $(1)),$(1)) +endef + +define Build/asus-trx + $(STAGING_DIR_HOST)/bin/asusuimage $(wordlist 1,$(words $(1)),$(1)) -i $@ -o $@.new + mv $@.new $@ +endef + define Build/wax6xx-netgear-tar mkdir $@.tmp mv $@ $@.tmp/nand-ipq807x-apps.img @@ -22,6 +45,34 @@ define Device/arcadyan_aw1000 endef TARGET_DEVICES += arcadyan_aw1000 +define Device/asus_rt-ax89x + DEVICE_VENDOR := Asus + DEVICE_MODEL := RT-AX89X + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_DTS_CONFIG := config@hk01 + SOC := ipq8074 + DEVICE_PACKAGES := kmod-hwmon-gpiofan ipq-wifi-asus_rt-ax89x + KERNEL_NAME := vmlinux + KERNEL := kernel-bin | libdeflate-gzip + KERNEL_IN_UBI := 1 + IMAGE/sysupgrade.bin/squashfs := \ + append-kernel | asus-fake-ramdisk |\ + multiImage gzip $$(KDIR)/tmp/fakerd $$(KDIR)/image-$$(DEVICE_DTS).dtb |\ + sysupgrade-tar kernel=$$$$@ | append-metadata +ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) + ARTIFACTS := initramfs-factory.trx initramfs-uImage.itb + ARTIFACT/initramfs-uImage.itb := \ + append-image-stage initramfs-kernel.bin | fit gzip $$(KDIR)/image-$$(DEVICE_DTS).dtb + ARTIFACT/initramfs-factory.trx := \ + append-image-stage initramfs-kernel.bin |\ + asus-fake-rootfs xz /lib/firmware/IPQ8074A/fw_version.txt "fake" -no-compression |\ + multiImage gzip $$(KDIR)/tmp/fakehsqs $$(KDIR)/image-$$(DEVICE_DTS).dtb |\ + asus-trx -v 2 -n RT-AX89U -b 388 -e 49000 +endif +endef +TARGET_DEVICES += asus_rt-ax89x + define Device/buffalo_wxr-5950ax12 $(call Device/FitImage) DEVICE_VENDOR := Buffalo diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds index 23d87f1b2d..b5c3cbc736 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds +++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds @@ -11,6 +11,11 @@ arcadyan,aw1000) ucidef_set_led_netdev "wan" "WAN" "green:internet" "wan" ucidef_set_led_netdev "wan-port-link" "WAN-PORT-LINK" "90000.mdio-1:1c:green:wan" "wan" "tx rx link_10 link_100 link_1000 link_2500" ;; +asus,rt-ax89x) + ucidef_set_led_netdev "aqr" "AQR" "white:aqr10g" "10g-copper" + ucidef_set_led_netdev "sfp" "SFP" "white:sfp" "10g-sfp" + ucidef_set_led_netdev "wan" "WAN" "white:wan" "wan" + ;; dynalink,dl-wrx36) ucidef_set_led_netdev "wan-port-link-green" "WAN-PORT-LINK-GREEN" "90000.mdio-1:1c:green:wan" "wan" "link_2500" ucidef_set_led_netdev "wan-port-link-yellow" "WAN-PORT-LINK-YELLOW" "90000.mdio-1:1c:yellow:wan" "wan" "tx rx link_10 link_100 link_1000" diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network index 0bf224f380..f87dbdd2be 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network +++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network @@ -11,6 +11,9 @@ ipq807x_setup_interfaces() local board="$1" case "$board" in + asus,rt-ax89x) + ucidef_set_interfaces_lan_wan "10g-sfp 10g-copper lan1 lan2 lan3 lan4 lan5 lan6 lan7 lan8" "wan" + ;; arcadyan,aw1000|\ buffalo,wxr-5950ax12|\ dynalink,dl-wrx36|\ diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata index 1170a35413..e413801ef9 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata +++ b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata @@ -9,6 +9,10 @@ board=$(board_name) case "$FIRMWARE" in "ath11k/IPQ8074/hw2.0/cal-ahb-c000000.wifi.bin") case "$board" in + asus,rt-ax89x) + CI_UBIPART="UBI_DEV" + caldata_extract_ubi "Factory" 0x1000 0x20000 + ;; arcadyan,aw1000|\ buffalo,wxr-5950ax12|\ cmcc,rm2-6|\ diff --git a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh index 5d89554133..f78a4b04f1 100644 --- a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh +++ b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh @@ -27,12 +27,23 @@ xiaomi_initramfs_prepare() { ubiformat /dev/mtd$kern_mtdnum -y } +asus_initial_setup() { + # Remove existing linux and jffs2 volumes + [ "$(rootfs_type)" = "tmpfs" ] || return 0 + + ubirmvol /dev/ubi0 -N linux + ubirmvol /dev/ubi0 -N jffs2 +} + platform_check_image() { return 0; } platform_pre_upgrade() { case "$(board_name)" in + asus,rt-ax89x) + asus_initial_setup + ;; redmi,ax6|\ xiaomi,ax3600|\ xiaomi,ax9000) @@ -56,6 +67,12 @@ platform_do_upgrade() { netgear,wax630) nand_do_upgrade "$1" ;; + asus,rt-ax89x) + CI_UBIPART="UBI_DEV" + CI_KERNPART="linux" + CI_ROOTPART="jffs2" + nand_do_upgrade "$1" + ;; buffalo,wxr-5950ax12) CI_KERN_UBIPART="rootfs" CI_ROOT_UBIPART="user_property" diff --git a/target/linux/qualcommax/ipq807x/config-default b/target/linux/qualcommax/ipq807x/config-default index 1fa8d84ad6..f4942c32cc 100644 --- a/target/linux/qualcommax/ipq807x/config-default +++ b/target/linux/qualcommax/ipq807x/config-default @@ -32,6 +32,7 @@ CONFIG_REGULATOR_CPR4_APSS=y # CONFIG_REGULATOR_QCOM_LABIBB is not set CONFIG_REGULATOR_QCOM_SPMI=y # CONFIG_REGULATOR_QCOM_USB_VBUS is not set +CONFIG_REGULATOR_USERSPACE_CONSUMER=y CONFIG_RTC_DRV_PM8XXX=y CONFIG_SPMI=y # CONFIG_SPMI_HISI3670 is not set -- 2.30.2