Adding OpenWrt Support for Netgear RAX120 (Nighthawk AX12)

Hi,

I am wondering if there have been any updates re support for the RAX120 (or if anyone knows whether it will ever happen?)

Same here. I’ve been periodically checking the Forum for any updates with the RAX120, but so far everything with IPQ8074 seems to be focused on the Xiaomi ax3600 (price?).
Hopefully at some point we will see more development as the price for these units drops.

Hi @hwhh & @spuriousoffspring

Looks like this is highly unlikely to happen - main reason is a fact that RAX120's hardware isn't fully supported by Linux drivers and unfortunately there are no plans to add support for it.
Price is also a factor :slight_smile:

That’s the main reason I went with the RAX120 because it uses Qualcomm. The RAX200 and other ‘higher end’ models all have Broadcom.

Hello!

Is there anything we can do?
What would be needed?

I really bought this router because of it using Qualcomm and try to finally runaway from Broadcom crap.

Edit Current firmware (non v2) source: https://www.downloads.netgear.com/files/GPL/RAX120-V1.2.3.28_gpl_src.tar.bz2.zip

As far as v1 goes, forget it, will never be supported especially since ath11k will never support v1 SoC which lacks a lot of final 802.11ax features and cant really even be advertised as such.

And v2, well maybe if it gets down in price as its 300+ EUR

Damn just checked and i have the V1....
Then what AX router with QCA should we buy?

I tend to avoid Broadcom because of the WRT3200ACM so...

I cannot really recommend you one, depends on what you need.

You can find whats currently supported out of tree, but should get upstream soonish.

Probably the AX router best supported by OpenWrt at the moment is Linksys E8450 / Belkin RT3200, which is well supported in OpenWrt master.
Mediatek mt76xx, not Qualcomm. (but not Broadcom in any case)

Long thread:

The UBI variant with improved file system created by Daniel Golle:

@novaprospekt216 @spuriousoffspring @RobertP , I am trying to play RAX120 and hope it will work with OpenWrt. But I destroyed the calibration data partition by accident. Would you help to enable telnet ,dump it and then use the usb to copy it out? Thanks!
How to enable telnet:

The command to dump is:

root@RAX120:/#nanddump /dev/mtd17 -f /tmp/rax120-mtd17

command to copy it to usb driver:

root@RAX120:/#cp /tmp/rax120-mtd17 /tmp/mnt/sdaX(X depends on your usb device)

BTW, you can use below command to double check if your HW is v1. "01" means v1.

root@RAX120:/# hexdump -C /proc/device-tree/soc_version_major 
00000000  01 00 00 00                                       |....|
00000004

Hello Tony.He,

Done! i have the file rax120-mtd17. Here it is:

Best regards,

Thanks a lot . Will have a try!

You are welcome!

So you are trying to build an image?

Yes, I think there is a long way to go. I plan to disable its wifi first.

It was a very minimal test without much hardware support in ipq8074-hk01.dtb but it does boot at least.

This was using @robimarko's repo with minor extension for the rax120.

Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset),  D - Delta,  S - Statistic
S - QC_IMAGE_VERSION_STRING=BOOT.BF.3.3.1-00147
S - IMAGE_VARIANT_STRING=HAACANAZA
S - OEM_IMAGE_VERSION_STRING=CRM
S - Boot Config, 0x000002e5
B -       201 - PBL, Start
B -      2735 - bootable_media_detect_entry, Start
B -      3442 - bootable_media_detect_success, Start
B -      3446 - elf_loader_entry, Start
B -      6108 - auth_hash_seg_entry, Start
B -      6351 - auth_hash_seg_exit, Start
B -     68444 - elf_segs_hash_verify_entry, Start
B -    131140 - PBL, End
B -    143380 - SBL1, Start
B -    195657 - GCC [RstStat:0x10, RstDbg:0x600000] WDog Stat : 0x4
B -    202184 - pm_device_init, Start
B -    323147 - PM_SET_VAL:Skip
D -    120322 - pm_device_init, Delta
B -    325404 - pm_driver_init, Start
D -      5307 - pm_driver_init, Delta
B -    331901 - clock_init, Start
D -      2074 - clock_init, Delta
B -    335896 - boot_flash_init, Start
D -     12535 - boot_flash_init, Delta
B -    352214 - boot_config_data_table_init, Start
D -      3111 - boot_config_data_table_init, Delta - (575 Bytes)
B -    359717 - Boot Setting :  0x00000618
B -    363651 - CDT version:2,Platform ID:8,Major ID:1,Minor ID:0,Subtype:0
B -    370544 - sbl1_ddr_set_params, Start
B -    374357 - CPR configuration: 0x30c
B -    377742 - cpr_init, Start
B -    380609 - Rail:0 Mode: 5 Voltage: 792000
B -    385703 - CL CPR settled at 744000mV
B -    388631 - Rail:1 Mode: 5 Voltage: 880000
B -    392809 - Rail:1 Mode: 7 Voltage: 896000
D -     16500 - cpr_init, Delta
B -    399611 - Pre_DDR_clock_init, Start
B -    403698 - Pre_DDR_clock_init, End
B -    406992 - DDR Type : PCDDR3
B -    412756 - do ddr sanity test, Start
D -      1037 - do ddr sanity test, Delta
B -    417514 - DDR: Start of HAL DDR Boot Training
B -    422242 - DDR: End of HAL DDR Boot Training
B -    427915 - DDR: Checksum to be stored on flash is 961181427
B -    438254 - Image Load, Start
D -    224358 - QSEE Image Loaded, Delta - (1373936 Bytes)
B -    662704 - Image Load, Start
D -        61 - SEC Image Loaded, Delta - (0 Bytes)
B -    670390 - Image Load, Start
D -     10736 - DEVCFG Image Loaded, Delta - (26008 Bytes)
B -    681217 - Image Load, Start
D -     25254 - RPM Image Loaded, Delta - (105964 Bytes)
B -    706532 - Image Load, Start
D -     74939 - APPSBL Image Loaded, Delta - (451008 Bytes)
B -    781623 - QSEE Execution, Start
D -        91 - QSEE Execution, Delta
B -    787418 - USB D+ check, Start
D -         0 - USB D+ check, Delta
B -    793823 - SBL1, End
D -    652731 - SBL1, Delta
S - Flash Throughput, 6696 KB/s  (1958163 Bytes,  292398 us)
S - DDR Frequency, 466 MHz
S - Core 0 Frequency, 1651 MHz


U-Boot 2016.01 (Nov 12 2019 - 11:55:34 +0800)

Model: QCA, IPQ807x-HK01
U-boot dni1 V1.6 for DNI HW ID: 29765589; NAND flash 512MB; RAM 1024MB .
developed based on 'qsdk-ipq807x.ilq.10.0-spf.10.0.CS_patch_4'
DRAM:  smem ram ptable found: ver: 1 len: 4
1 GiB
NAND:  ONFI device found
ID = 1590acef
Vendor = ef
Device = ac
SF: Unsupported flash IDs: manuf 00, jedec 0000, ext_jedec 0000
ipq_spi: SPI Flash not found (bus/cs/speed/mode) = (0/0/48000000/0)
512 MiB
MMC:   <NULL>: 0
*** Warning - bad CRC, using default environment

In:    serial@78B3000
Out:   serial@78B3000
Err:   serial@78B3000
machid: 8010000
Net:   MAC0 addr:c8:9e:43:82:f0:c0
PHY ID1: 0x4d
PHY ID2: 0xd0b1

NAND read: device 0 offset 0x7e00000, size 0x80000
 524288 bytes read: OK
bad magic on ETHPHYFW partition
PHY ID1: 0x3a1
PHY ID2: 0xb612
EDMA ver 1 hw init
Num rings - TxDesc:1 (0-0) TxCmpl:1 (7-7)
RxDesc:1 (15-15) RxFill:1 (7-7)
ipq807x_edma_alloc_rings: successfull
ipq807x_edma_setup_ring_resources: successfull
ipq807x_edma_configure_rings: successfull
ipq807x_edma_hw_init: successfull
eth0
Hit any key to stop autoboot:  0
IPQ807x#
IPQ807x# tftpboot $loadaddr
ipq807x_eth_halt: done
eth0 PHY0 Down Speed :10 Half duplex
eth0 PHY1 Down Speed :10 Half duplex
eth0 PHY2 up Speed :1000 Full duplex
eth0 PHY3 Down Speed :10 Half duplex
eth0 PHY4 Down Speed :10 Half duplex
10M speed not supported
ipq807x_eth_init: done
*** Warning: no boot file name; using 'C0A80101.img'
Using eth0 device
TFTP from server 192.168.1.10; our IP address is 192.168.1.1
Filename 'C0A80101.img'.
Load address: 0x44000000
Loading: *
Got TFTP_OACK: TFTP remote port: changes from 69 to 60876
#################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #########################################
         2.3 MiB/s
done
Bytes transferred = 9177448 (8c0968 hex)
ipq807x_eth_halt: done
IPQ807x# bootm $loadaddr
## Loading kernel from FIT Image at 44000000 ...
   Using 'config@hk14' configuration
   Trying 'kernel-1' kernel subimage
     Description:  ARM64 OpenWrt Linux-5.15.35
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x440000e8
     Data Size:    9155199 Bytes = 8.7 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x40908000
     Entry Point:  0x40908000
     Hash algo:    crc32
     Hash value:   9a94afa1
     Hash algo:    sha1
     Hash value:   c99a0013ab5ef8b4a85ddf8412bbdf8e0b236b98
   Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading fdt from FIT Image at 44000000 ...
   Using 'config@hk14' configuration
   Trying 'fdt-1' fdt subimage
     Description:  ARM64 OpenWrt netgear_rax120 device tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x448bb4a8
     Data Size:    20348 Bytes = 19.9 KiB
     Architecture: AArch64
     Hash algo:    crc32
     Hash value:   c636a1d4
     Hash algo:    sha1
     Hash value:   10ef9bc0bf01e5d3408b7f5bf0caf10121f9438d
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Booting using the fdt blob at 0x448bb4a8
   Uncompressing Kernel Image ... OK
   Loading Device Tree to 4a776000, end 4a77df7b ... OK
mtdids not defined, no default present
Using machid 0x8010000 from environment

Starting kernel ...

Jumping to AARCH64 kernel via monitor
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.35 (user@user-virtual-machine) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 11.2.0 r19615-580723e86a) 11.2.0, GNU ld (GNU Binutils) 2.37) #0 SMP Sat May 7 15:23:45 2022
[    0.000000] Machine model: Qualcomm Technologies, Inc. IPQ8074-HK01
[    0.000000] [Firmware Bug]: Kernel image misaligned at boot, please fix your bootloader!
[    0.000000] OF: fdt: Reserved memory: failed to reserve memory for node 'nss@40000000': base 0x0000000040000000, size 16 MiB
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x000000004a3fffff]
[    0.000000]   node   0: [mem 0x000000004a400000-0x000000004a5fffff]
[    0.000000]   node   0: [mem 0x000000004a600000-0x000000004aafffff]
[    0.000000]   node   0: [mem 0x000000004ab00000-0x00000000510fffff]
[    0.000000]   node   0: [mem 0x0000000051100000-0x000000007fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.0 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.0
[    0.000000] psci: OSI mode supported.
[    0.000000] percpu: Embedded 17 pages/cpu s30104 r8192 d31336 u69632
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
[    0.000000] Kernel command line: console=ttyMSM0,115200n8
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 899060K/1048576K available (7360K kernel code, 852K rwdata, 1968K rodata, 12224K init, 274K bss, 149516K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv2m: range[mem 0x0b00a000-0x0b00affc], SPI[448:479]
[    0.000000] random: get_random_bytes called from start_kernel+0x4a8/0x6e0 with crng_init=0
[    0.000000] arch_timer: cp15 and mmio timer(s) running at 19.20MHz (virt/virt).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[    0.000000] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[    0.000066] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[    0.000082] pid_max: default: 32768 minimum: 301
[    0.000231] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.000249] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.001668] rcu: Hierarchical SRCU implementation.
[    0.001808] dyndbg: Ignore empty _ddebug table in a CONFIG_DYNAMIC_DEBUG_CORE build
[    0.002112] smp: Bringing up secondary CPUs ...
[    0.002632] Detected VIPT I-cache on CPU1
[    0.002698] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.003241] Detected VIPT I-cache on CPU2
[    0.003281] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.003798] Detected VIPT I-cache on CPU3
[    0.003835] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.003895] smp: Brought up 1 node, 4 CPUs
[    0.003920] SMP: Total of 4 processors activated.
[    0.003929] CPU features: detected: 32-bit EL0 Support
[    0.003936] CPU features: detected: CRC32 instructions
[    0.003989] CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
[    0.003999] CPU: All CPU(s) started at EL1
[    0.004021] alternatives: patching kernel code
[    0.008200] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.008234] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.008376] pinctrl core: initialized pinctrl subsystem
[    0.009090] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.009516] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.009575] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.009612] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.009996] thermal_sys: Registered thermal governor 'step_wise'
[    0.011007] cpuidle: using governor menu
[    0.011177] ASID allocator initialised with 65536 entries
[    0.069361] cryptd: max_cpu_qlen set to 1000
[    0.070733] SCSI subsystem initialized
[    0.070905] usbcore: registered new interface driver usbfs
[    0.070946] usbcore: registered new interface driver hub
[    0.070982] usbcore: registered new device driver usb
[    0.071217] qcom_scm: convention: smc arm 64
[    0.072370] clocksource: Switched to clocksource arch_sys_counter
[    0.073072] NET: Registered PF_INET protocol family
[    0.073176] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.073993] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    0.074027] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.074115] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.074266] TCP: Hash tables configured (established 8192 bind 8192)
[    0.074356] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.074397] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.074550] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.074582] PCI: CLS 0 bytes, default 64
[    0.085729] workingset: timestamp_bits=46 max_order=18 bucket_order=0
[    0.089611] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.089636] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.091617] qcom-qmp-phy 58000.phy: supply vdda-phy not found, using dummy regulator
[    0.091798] qcom-qmp-phy 58000.phy: supply vdda-pll not found, using dummy regulator
[    0.093089] qcom-qmp-phy 58000.phy: Registered Qcom-QMP phy
[    0.093409] qcom-qmp-phy 78000.phy: supply vdda-phy not found, using dummy regulator
[    0.093595] qcom-qmp-phy 78000.phy: supply vdda-pll not found, using dummy regulator
[    0.094841] qcom-qmp-phy 78000.phy: Registered Qcom-QMP phy
[    0.095539] qcom-qusb2-phy 59000.phy: supply vdda-pll not found, using dummy regulator
[    0.095709] qcom-qusb2-phy 59000.phy: supply vdda-phy-dpdm not found, using dummy regulator
[    0.095883] qcom-qusb2-phy 59000.phy: Registered Qcom-QUSB2 phy
[    0.096031] qcom-qusb2-phy 79000.phy: supply vdda-pll not found, using dummy regulator
[    0.096142] qcom-qusb2-phy 79000.phy: supply vdda-phy-dpdm not found, using dummy regulator
[    0.096283] qcom-qusb2-phy 79000.phy: Registered Qcom-QUSB2 phy
[    0.103121] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.103832] msm_serial 78b1000.serial: msm_serial: detected port #1
[    0.103884] msm_serial 78b1000.serial: uartclk = 19200000
[    0.103938] 78b1000.serial: ttyMSM1 at MMIO 0x78b1000 (irq = 23, base_baud = 1200000) is a MSM
[    0.104238] msm_serial 78b3000.serial: msm_serial: detected port #0
[    0.104266] msm_serial 78b3000.serial: uartclk = 3686400
[    0.104299] 78b3000.serial: ttyMSM0 at MMIO 0x78b3000 (irq = 24, base_baud = 230400) is a MSM
[    0.104322] msm_serial: console setup on port #0
[    0.806432] printk: console [ttyMSM0] enabled
[    0.811406] msm_serial: driver initialized
[    0.819352] loop: module loaded
[    0.820647] nand: device found, Manufacturer ID: 0xef, Chip ID: 0xac
[    0.822403] nand: Winbond W29N04GZ
[    0.828975] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    0.839920] spi_qup 78b5000.spi: IN:block:16, fifo:64, OUT:block:16, fifo:64
[    0.840570] spi-nor spi0.0: unrecognized JEDEC id bytes: 00 00 00 00 00 00
[    0.846975] spi-nor: probe of spi0.0 failed with error -2
[    0.853936] spmi spmi-0: PMIC arbiter version v2 (0x20010000)
[    0.859780] pmd9655_s3: supplied by regulator-dummy
[    0.865155] pmd9655_s4: supplied by regulator-dummy
[    0.869910] pmd9655_ldo11: supplied by regulator-dummy
[    0.875598] i2c_dev: i2c /dev entries driver
[    0.882637] sdhci: Secure Digital Host Controller Interface driver
[    0.884016] sdhci: Copyright(c) Pierre Ossman
[    0.890001] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.895474] NET: Registered PF_INET6 protocol family
[    0.900948] Segment Routing with IPv6
[    0.905148] In-situ OAM (IOAM) with IPv6
[    0.908720] NET: Registered PF_PACKET protocol family
[    0.912708] 8021q: 802.1Q VLAN Support v1.8
[    0.925044] mmc0: SDHCI controller on 7824900.sdhci [7824900.sdhci] using ADMA 64-bit
[    0.934862] nand: device found, Manufacturer ID: 0xef, Chip ID: 0xac
[    0.934911] nand: Winbond W29N04GZ
[    0.940289] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    0.949695] 23 qcomsmem partitions found on MTD device qcom_nand.0
[    0.951062] Creating 23 MTD partitions on "qcom_nand.0":
[    0.957249] 0x000000000000-0x000000100000 : "0:sbl1"
[    0.963998] 0x000000100000-0x000000200000 : "0:mibib"
[    0.968761] 0x000000200000-0x000000280000 : "0:bootconfig"
[    0.973363] 0x000000280000-0x000000300000 : "0:bootconfig1"
[    0.978711] 0x000000300000-0x000000600000 : "0:qsee"
[    0.986232] 0x000000600000-0x000000900000 : "0:qsee_1"
[    0.991372] 0x000000900000-0x000000980000 : "0:devcfg"
[    0.994374] 0x000000980000-0x000000a00000 : "0:devcfg_1"
[    0.999465] 0x000000a00000-0x000000a80000 : "0:apdp"
[    1.004960] 0x000000a80000-0x000000b00000 : "0:apdp_1"
[    1.009884] 0x000000b00000-0x000000b80000 : "0:rpm"
[    1.014876] 0x000000b80000-0x000000c00000 : "0:rpm_1"
[    1.019601] 0x000000c00000-0x000000c80000 : "0:cdt"
[    1.024839] 0x000000c80000-0x000000d00000 : "0:cdt_1"
[    1.029517] 0x000000d00000-0x000000d80000 : "0:appsblenv"
[    1.034747] 0x000000d80000-0x000000e80000 : "0:appsbl"
[    1.039945] random: fast init done
[    1.044956] 0x000000e80000-0x000000f80000 : "0:appsbl_1"
[    1.048905] 0x000000f80000-0x000001000000 : "0:art"
[    1.054024] 0x000001000000-0x000003e00000 : "rootfs"
[    1.094550] mtd: device 18 (rootfs) set to be root filesystem
[    1.094865] mtdsplit: no squashfs found in "rootfs"
[    1.099281] 0x000003e00000-0x000004700000 : "0:wififw"
[    1.111439] 0x000004700000-0x000007500000 : "rootfs_1"
[    1.148269] 0x000007500000-0x000007e00000 : "0:wififw_1"
[    1.155816] 0x000007e00000-0x000007e80000 : "0:ethphyfw"
[    1.164153] remoteproc remoteproc0: cd00000.q6v5_wcss is available
[    1.166553] ------------[ cut here ]------------
[    1.169233] gcc_usb1_master_clk status stuck at 'on'
[    1.169262] WARNING: CPU: 0 PID: 1 at clk_branch_wait+0x130/0x140
[    1.178957] Modules linked in:
[    1.184942] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.15.35 #0
[    1.187898] Hardware name: Qualcomm Technologies, Inc. IPQ8074-HK01 (DT)
[    1.194065] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    1.200747] pc : clk_branch_wait+0x130/0x140
[    1.207425] lr : clk_branch_wait+0x130/0x140
[    1.211939] sp : ffffffc00802bc70
[    1.216190] x29: ffffffc00802bc70 x28: 0000000000000000 x27: ffffffc008a48410
[    1.219410] x26: ffffffc008a99068 x25: ffffffc008a99078 x24: ffffffc008a31530
[    1.226529] x23: ffffffc0089bd690 x22: 0000000000000000 x21: ffffffc0084ea3b0
[    1.233646] x20: 0000000000000000 x19: ffffffc0096ddb78 x18: 00000000000000aa
[    1.240764] x17: 000000000000000e x16: 0000000000000001 x15: ffffffc009652a40
[    1.247882] x14: 00000000000001fe x13: 00000000000000aa x12: ffffffc00802b998
[    1.255000] x11: fffffffffffe2c90 x10: fffffffffffe2c58 x9 : ffffffc0096aaa40
[    1.262119] x8 : 0000000000000ff0 x7 : ffffffc009652a40 x6 : 00000000ffffefff
[    1.269237] x5 : ffffffc0096aaa40 x4 : 00000000ffffefff x3 : 0000000000000001
[    1.276355] x2 : 0000000000000000 x1 : ffffffc009652998 x0 : 0000000000000028
[    1.283473] Call trace:
[    1.290581]  clk_branch_wait+0x130/0x140
[    1.292841]  clk_branch2_disable+0x2c/0x40
[    1.297007]  clk_disable_unused_subtree+0xb0/0x110
[    1.300915]  clk_disable_unused_subtree+0x40/0x110
[    1.305689]  clk_disable_unused_subtree+0x40/0x110
[    1.310463]  clk_disable_unused_subtree+0x40/0x110
[    1.315238]  clk_disable_unused_subtree+0x40/0x110
[    1.320013]  clk_disable_unused+0x58/0xe0
[    1.324786]  do_one_initcall+0x50/0x1b0
[    1.328865]  kernel_init_freeable+0x234/0x29c
[    1.332512]  kernel_init+0x24/0x120
[    1.337023]  ret_from_fork+0x10/0x20
[    1.340323] ---[ end trace 9faa29b0f4f4eed9 ]---
[    1.344530] ------------[ cut here ]------------
[    1.348746] gcc_usb0_master_clk status stuck at 'on'
[    1.348769] WARNING: CPU: 0 PID: 1 at clk_branch_wait+0x130/0x140
[    1.358296] Modules linked in:
[    1.364281] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W         5.15.35 #0
[    1.367241] Hardware name: Qualcomm Technologies, Inc. IPQ8074-HK01 (DT)
[    1.374792] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    1.381475] pc : clk_branch_wait+0x130/0x140
[    1.388155] lr : clk_branch_wait+0x130/0x140
[    1.392668] sp : ffffffc00802bc70
[    1.396920] x29: ffffffc00802bc70 x28: 0000000000000000 x27: ffffffc008a48410
[    1.400139] x26: ffffffc008a99068 x25: ffffffc008a99078 x24: ffffffc008a31530
[    1.407257] x23: ffffffc0089bd7a8 x22: 0000000000000000 x21: ffffffc0084ea3b0
[    1.414375] x20: 0000000000000000 x19: ffffffc0096ddef8 x18: 00000000000000cc
[    1.421493] x17: 000000000000000e x16: 0000000000000001 x15: ffffffc009652a40
[    1.428612] x14: 0000000000000264 x13: 00000000000000cc x12: ffffffc00802b998
[    1.435730] x11: fffffffffffe3430 x10: fffffffffffe33f8 x9 : ffffffc0096aaa40
[    1.442848] x8 : 0000000000001320 x7 : ffffffc009652a40 x6 : 00000000ffffefff
[    1.449966] x5 : ffffffc0096aaa40 x4 : 00000000ffffefff x3 : 0000000000000001
[    1.457084] x2 : 0000000000000000 x1 : ffffffc009652998 x0 : 0000000000000028
[    1.464201] Call trace:
[    1.471311]  clk_branch_wait+0x130/0x140
[    1.473570]  clk_branch2_disable+0x2c/0x40
[    1.477736]  clk_disable_unused_subtree+0xb0/0x110
[    1.481645]  clk_disable_unused_subtree+0x40/0x110
[    1.486418]  clk_disable_unused_subtree+0x40/0x110
[    1.491192]  clk_disable_unused_subtree+0x40/0x110
[    1.495967]  clk_disable_unused_subtree+0x40/0x110
[    1.500742]  clk_disable_unused+0x58/0xe0
[    1.505515]  do_one_initcall+0x50/0x1b0
[    1.509593]  kernel_init_freeable+0x234/0x29c
[    1.513242]  kernel_init+0x24/0x120
[    1.517753]  ret_from_fork+0x10/0x20▒[    1.530597] Freeing unused kernel memory: 12224K
[    1.602520] Run /init as init process
[    1.807648] init: Console is alive
[    1.807837] init: - watchdog -
[    1.816723] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    1.825304] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    1.830644] init: - preinit -
[    1.922570] random: jshn: uninitialized urandom read (4 bytes read)
[    1.950964] random: jshn: uninitialized urandom read (4 bytes read)
[    1.958438] random: jshn: uninitialized urandom read (4 bytes read)
/bin/board_detect: line 10: Unsupported: not found
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[    6.055742] procd: - early -
[    6.055858] procd: - watchdog -
[    6.592411] procd: - watchdog -
[    6.592697] procd: - ubus -
[    6.597787] urandom_read: 3 callbacks suppressed
[    6.597807] random: ubusd: uninitialized urandom read (4 bytes read)
[    6.644301] random: ubusd: uninitialized urandom read (4 bytes read)
[    6.644531] random: ubusd: uninitialized urandom read (4 bytes read)
[    6.651241] procd: - init -
Please press Enter to activate this console.
[    6.808909] urngd: v1.0.2 started.
[    6.820632] kmodloader: loading kernel modules from /etc/modules.d/*
[    6.845567] random: crng init done
[    6.845601] random: 1 urandom warning(s) missed due to ratelimiting
[    6.878279] Loading modules backported from Linux version v5.15.33-0-g06f50ca83ace
[    6.878321] Backport generated by backports.git v5.15.33-1-0-g183c4ab2
[    6.924741] PPP generic driver version 2.4.2
[    6.925668] NET: Registered PF_PPPOX protocol family
[    6.942247] kmodloader: done loading kernel modules from /etc/modules.d/*
[   31.832423] pmd9655_ldo11: disabling



BusyBox v1.35.0 (2022-05-07 15:23:45 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r19615-580723e86a
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:/#

Next steps likely include some dts work as we need device tree supported by ipq8074.dtsi. I can stumble my way though a few things (partial PCIe below for example), however I'm no expert on device tree stuff.

[    0.016091] OF: /soc/pci@20000000/pci@20000000: could not get #phy-cells for /soc/pcie_qmp2/pcie_phy2
[    0.114841] qcom-qmp-phy 84000.pcie_qmp2: can't request region for resource [mem 0x00084000-0x000841bb]
[    0.114873] qcom-qmp-phy: probe of 84000.pcie_qmp2 failed with error -16
[    0.117294] qcom-pcie 10000000.pci: host bridge /soc/pci@10000000 ranges:
[    0.117368] qcom-pcie 10000000.pci:       IO 0x0010200000..0x001020ffff -> 0x0010200000
[    0.117397] qcom-pcie 10000000.pci:      MEM 0x0010220000..0x001fffffff -> 0x0010220000
[    0.176589] qcom-pcie 10000000.pci: Read DBI address failed
[    0.290897] qcom-pcie 10000000.pci: iATU unroll: disabled
[    0.290928] qcom-pcie 10000000.pci: Detected iATU regions: 32 outbound, 8 inbound
[    1.291150] qcom-pcie 10000000.pci: Phy link never came up
[    1.291337] qcom-pcie 10000000.pci: PCI host bridge to bus 0001:00
[    1.291354] pci_bus 0001:00: root bus resource [bus 00-ff]
[    1.291371] pci_bus 0001:00: root bus resource [io  0x0000-0xffff] (bus address [0x10200000-0x1020ffff])
[    1.291384] pci_bus 0001:00: root bus resource [mem 0x10220000-0x1fffffff]
[    1.291430] pci 0001:00:00.0: [17cb:0302] type 01 class 0x060400
[    1.291457] pci 0001:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff]
[    1.291535] pci 0001:00:00.0: PME# supported from D0 D3hot D3cold
[    1.295584] pci 0001:00:00.0: BAR 0: assigned [mem 0x10220000-0x10220fff]
[    1.295609] pci 0001:00:00.0: PCI bridge to [bus 01-ff]
[    1.297477] pcieport 0001:00:00.0: PME: Signaling with IRQ 81
[    1.297755] pcieport 0001:00:00.0: AER: enabled with IRQ 81
[    1.298375] qcom-pcie 20000000.pci: host bridge /soc/pci@20000000 ranges:
[    1.298429] qcom-pcie 20000000.pci:       IO 0x0020200000..0x002020ffff -> 0x0020200000
[    1.298458] qcom-pcie 20000000.pci:      MEM 0x0020220000..0x002fffffff -> 0x0020220000
[    1.420857] qcom-pcie 20000000.pci: iATU unroll: enabled
[    1.420871] qcom-pcie 20000000.pci: Detected iATU regions: 8 outbound, 8 inbound
[    2.419368] qcom-pcie 20000000.pci: Phy link never came up
[    2.419507] qcom-pcie 20000000.pci: PCI host bridge to bus 0000:00
[    2.419521] pci_bus 0000:00: root bus resource [bus 00-ff]
[    2.419539] pci_bus 0000:00: root bus resource [io  0x10000-0x1ffff] (bus address [0x20200000-0x2020ffff])
[    2.419551] pci_bus 0000:00: root bus resource [mem 0x20220000-0x2fffffff]
[    2.419603] pci 0000:00:00.0: [17cb:1002] type 01 class 0x060400
[    2.419630] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff]
[    2.419712] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold
[    2.423760] pci 0000:00:00.0: BAR 8: assigned [mem 0x20300000-0x204fffff]
[    2.423785] pci 0000:00:00.0: BAR 9: assigned [mem 0x20500000-0x206fffff 64bit pref]
[    2.423800] pci 0000:00:00.0: BAR 0: assigned [mem 0x20220000-0x20220fff]
[    2.423816] pci 0000:00:00.0: BAR 7: assigned [io  0x10000-0x10fff]
[    2.423830] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    2.423842] pci 0000:00:00.0:   bridge window [io  0x10000-0x10fff]
[    2.423855] pci 0000:00:00.0:   bridge window [mem 0x20300000-0x204fffff]
[    2.423868] pci 0000:00:00.0:   bridge window [mem 0x20500000-0x206fffff 64bit pref]
[    2.425217] pcieport 0000:00:00.0: PME: Signaling with IRQ 82
[    2.425469] pcieport 0000:00:00.0: AER: enabled with IRQ 82
2 Likes

I was able to get a good deal on a refurbished RAX120v2 from Amazon ($120), hoping openwrt comes to it soon.

Looks like some of you guys have been successful so far so that's encouraging.

Interesting. The 5.15 repo has some good work for ipq8071 devices (hopefully some of that can help). What did you modify to get the RAX120 to work. I too am no expert in .dts files but might be able to help a little. I don’t have a RAX120 but would be interested in getting one if it proves to be a viable target.

I just took the ipq8074-hk01.dts from Linux upstream for the initial test.. Extended the makefile for the rax120 and it seemed to build without any trouble on top of @robimarko's patched ips8074.dtsi.

The RAX120 is a HK01-C1 variant so it's actually very similar to the AX3600 (ipq8071 / HK01). The PCIe configuration seems to vary. Provided the latest experimental dts I have below.

ipq8074-rax120.dts

// SPDX-License-Identifier: GPL-2.0-only
/dts-v1/;
/* Copyright (c) 2017, The Linux Foundation. All rights reserved.
 */
#include "ipq8074.dtsi"

/ {
	#address-cells = <0x2>;
	#size-cells = <0x2>;
	model = "Qualcomm Technologies, Inc. IPQ8074-HK01";
	compatible = "qcom,ipq8074-hk01", "qcom,ipq8074";
	interrupt-parent = <&intc>;

	aliases {
		serial0 = &blsp1_uart5;
		serial1 = &blsp1_uart3;
		label-mac-device = &dp1;
		ethernet0 = &dp1;
		ethernet1 = &dp2;
		ethernet2 = &dp3;
		ethernet3 = &dp4;
		ethernet4 = &dp5;
		ethernet5 = &dp6;
	};

	chosen {
		stdout-path = "serial0";
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0x0 0x40000000 0x0 0x20000000>;
	};
};

&tlmm {
	pinctrl-0 = <&btcoex_pins>;
	pinctrl-names = "default";

	btcoex_pins: btcoex_pins {
		mux_0 {
			pins = "gpio64";
			function = "pta1_1";
			drive-strength = <6>;
			bias-pull-down;
		};
		mux_1 {
			pins = "gpio65";
			function = "pta1_2";
			drive-strength = <6>;
			bias-pull-down;
		};
		mux_2 {
			pins = "gpio66";
			function = "pta1_0";
			drive-strength = <6>;
			bias-pull-down;
		};
		mux_3 {
			pins = "gpio54";
			function = "pta2_0";
			drive-strength = <6>;
			bias-pull-down;
		};
		mux_4 {
			pins = "gpio55";
			function = "pta2_1";
			drive-strength = <6>;
			bias-pull-down;
		};
		mux_5 {
			pins = "gpio56";
			function = "pta2_2";
			drive-strength = <6>;
			bias-pull-down;
		};
	};

	mdio_pins: mdio-pins {
		mdc {
			pins = "gpio68";
			function = "mdc";
			drive-strength = <8>;
			bias-pull-up;
		};

		mdio {
			pins = "gpio69";
			function = "mdio";
			drive-strength = <8>;
			bias-pull-up;
		};
	};

	qpic_pins {
		data_0 {
			pins = "gpio15";
			function = "qpic_pad0";
			drive-strength = <8>;
			bias-disable;
		};
		data_1 {
			pins = "gpio12";
			function = "qpic_pad1";
			drive-strength = <8>;
			bias-disable;
		};
		data_2 {
			pins = "gpio13";
			function = "qpic_pad2";
			drive-strength = <8>;
			bias-disable;
		};
		data_3 {
			pins = "gpio14";
			function = "qpic_pad3";
			drive-strength = <8>;
			bias-disable;
		};
		data_4 {
			pins = "gpio5";
			function = "qpic_pad4";
			drive-strength = <8>;
			bias-disable;
		};
		data_5 {
			pins = "gpio6";
			function = "qpic_pad5";
			drive-strength = <8>;
			bias-disable;
		};
		data_6 {
			pins = "gpio7";
			function = "qpic_pad6";
			drive-strength = <8>;
			bias-disable;
		};
		data_7 {
			pins = "gpio8";
			function = "qpic_pad7";
			drive-strength = <8>;
			bias-disable;
		};
		data_8 {
			pins = "gpio16";
			function = "qpic_pad8";
			drive-strength = <8>;
			bias-disable;
		};
		qpic_pad {
			pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4",
			       "gpio9", "gpio10", "gpio11", "gpio17";
			function = "qpic_pad";
			drive-strength = <8>;
			bias-disable;
		};
	};

		ledc_pins: ledc_pinmux {
		led_clk {
			pins = "gpio18";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
		led_data {
			pins = "gpio19";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
		led_clr {
			pins = "gpio20";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-up;
		};
		gpio_usb1_enable{
			pins = "gpio30";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
		gpio_usb2_enable{
			pins = "gpio31";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
	};
	
	button_pins: button_pins {
		wps_button {
			pins = "gpio57";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-up;
		};
	};

	uniphy_pins: uniphy_pinmux {
		mux {
			pins = "gpio60";
			function = "rx2";
			bias-disable;
		};
		sfp_tx {
			pins = "gpio59";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
			output-low;
		};
	};
	
	pwm_pins: pwm_pinmux {
		mux_1 {
			pins = "gpio25";
			function = "pwm02";
			drive-strength = <8>;
		};
	};
};

&soc {
	dp1: dp1 {
		device_type = "network";
		compatible = "qcom,nss-dp";
		qcom,id = <1>;
		reg = <0x3a001000 0x200>;
		qcom,mactype = <0>;
		local-mac-address = [000000000000];
		qcom,link-poll = <1>;
		qcom,phy-mdio-addr = <0>;
		phy-mode = "sgmii";
	};

	dp2: dp2 {
		device_type = "network";
		compatible = "qcom,nss-dp";
		qcom,id = <2>;
		reg = <0x3a001200 0x200>;
		qcom,mactype = <0>;
		local-mac-address = [000000000000];
		qcom,link-poll = <1>;
		qcom,phy-mdio-addr = <1>;
		phy-mode = "sgmii";
	};
	dp3: dp3 {
		device_type = "network";
		compatible = "qcom,nss-dp";
		qcom,id = <3>;
		reg = <0x3a001400 0x200>;
		qcom,mactype = <0>;
		local-mac-address = [000000000000];
		qcom,link-poll = <1>;
		qcom,phy-mdio-addr = <2>;
		phy-mode = "sgmii";
	};
	dp4: dp4 {
		device_type = "network";
		compatible = "qcom,nss-dp";
		qcom,id = <4>;
		reg = <0x3a001600 0x200>;
		qcom,mactype = <0>;
		local-mac-address = [000000000000];
		qcom,link-poll = <1>;
		qcom,phy-mdio-addr = <3>;
		phy-mode = "sgmii";
	};
	dp5: dp5 {
		device_type = "network";
		compatible = "qcom,nss-dp";
		qcom,id = <5>;
		reg = <0x3a001800 0x200>;
		qcom,mactype = <0>;
		local-mac-address = [000000000000];
		qcom,link-poll = <1>;
		qcom,phy-mdio-addr = <4>;
		phy-mode = "sgmii";
	};
	dp6: dp6 {
		device_type = "network";
		compatible = "qcom,nss-dp";
		qcom,id = <6>;
		reg = <0x3a007000 0x3fff>;
		qcom,mactype = <1>;
		local-mac-address = [000000000000];
		qcom,link-poll = <1>;
		qcom,phy-mdio-addr = <7>;
		phy-mode = "sgmii";
	};
	ess-switch@3a000000 {
		status = "okay";
		compatible = "qcom,ess-switch-ipq807x";
		reg = <0x3a000000 0x1000000>;
		switch_access_mode = "local bus";
		pinctrl-0 = <&uniphy_pins>;
		pinctrl-names = "default";
		
		switch_cpu_bmp = <0x1>;  /* cpu port bitmap */
		switch_lan_bmp = <0x3e>; /* lan port bitmap */
		switch_wan_bmp = <0x40>; /* wan port bitmap */
		switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/
		switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/
		switch_mac_mode2 = <0xd>; /* mac mode for uniphy instance2*/
		bm_tick_mode = <0>; /* bm tick mode */
		tm_tick_mode = <0>; /* tm tick mode */

		clocks = <&gcc GCC_CMN_12GPLL_AHB_CLK>,
			<&gcc GCC_CMN_12GPLL_SYS_CLK>,
			<&gcc GCC_UNIPHY0_AHB_CLK>,
			<&gcc GCC_UNIPHY0_SYS_CLK>,
			<&gcc GCC_UNIPHY1_AHB_CLK>,
			<&gcc GCC_UNIPHY1_SYS_CLK>,
			<&gcc GCC_UNIPHY2_AHB_CLK>,
			<&gcc GCC_UNIPHY2_SYS_CLK>,
			<&gcc GCC_PORT1_MAC_CLK>,
			<&gcc GCC_PORT2_MAC_CLK>,
			<&gcc GCC_PORT3_MAC_CLK>,
			<&gcc GCC_PORT4_MAC_CLK>,
			<&gcc GCC_PORT5_MAC_CLK>,
			<&gcc GCC_PORT6_MAC_CLK>,
			<&gcc GCC_NSS_PPE_CLK>,
			<&gcc GCC_NSS_PPE_CFG_CLK>,
			<&gcc GCC_NSSNOC_PPE_CLK>,
			<&gcc GCC_NSSNOC_PPE_CFG_CLK>,
			<&gcc GCC_NSS_EDMA_CLK>,
			<&gcc GCC_NSS_EDMA_CFG_CLK>,
			<&gcc GCC_NSS_PPE_IPE_CLK>,
			<&gcc GCC_NSS_PPE_BTQ_CLK>,
			<&gcc GCC_MDIO_AHB_CLK>,
			<&gcc GCC_NSS_NOC_CLK>,
			<&gcc GCC_NSSNOC_SNOC_CLK>,
			<&gcc GCC_MEM_NOC_NSS_AXI_CLK>,
			<&gcc GCC_NSS_CRYPTO_CLK>,
			<&gcc GCC_NSS_IMEM_CLK>,
			<&gcc GCC_NSS_PTP_REF_CLK>,
			<&gcc GCC_NSS_PORT1_RX_CLK>,
			<&gcc GCC_NSS_PORT1_TX_CLK>,
			<&gcc GCC_NSS_PORT2_RX_CLK>,
			<&gcc GCC_NSS_PORT2_TX_CLK>,
			<&gcc GCC_NSS_PORT3_RX_CLK>,
			<&gcc GCC_NSS_PORT3_TX_CLK>,
			<&gcc GCC_NSS_PORT4_RX_CLK>,
			<&gcc GCC_NSS_PORT4_TX_CLK>,
			<&gcc GCC_NSS_PORT5_RX_CLK>,
			<&gcc GCC_NSS_PORT5_TX_CLK>,
			<&gcc GCC_NSS_PORT6_RX_CLK>,
			<&gcc GCC_NSS_PORT6_TX_CLK>,
			<&gcc GCC_UNIPHY0_PORT1_RX_CLK>,
			<&gcc GCC_UNIPHY0_PORT1_TX_CLK>,
			<&gcc GCC_UNIPHY0_PORT2_RX_CLK>,
			<&gcc GCC_UNIPHY0_PORT2_TX_CLK>,
			<&gcc GCC_UNIPHY0_PORT3_RX_CLK>,
			<&gcc GCC_UNIPHY0_PORT3_TX_CLK>,
			<&gcc GCC_UNIPHY0_PORT4_RX_CLK>,
			<&gcc GCC_UNIPHY0_PORT4_TX_CLK>,
			<&gcc GCC_UNIPHY0_PORT5_RX_CLK>,
			<&gcc GCC_UNIPHY0_PORT5_TX_CLK>,
			<&gcc GCC_UNIPHY1_PORT5_RX_CLK>,
			<&gcc GCC_UNIPHY1_PORT5_TX_CLK>,
			<&gcc GCC_UNIPHY2_PORT6_RX_CLK>,
			<&gcc GCC_UNIPHY2_PORT6_TX_CLK>,
			<&gcc NSS_PORT5_RX_CLK_SRC>,
			<&gcc NSS_PORT5_TX_CLK_SRC>;
   		clock-names = "cmn_ahb_clk", "cmn_sys_clk",
		   "uniphy0_ahb_clk", "uniphy0_sys_clk",
		   "uniphy1_ahb_clk", "uniphy1_sys_clk",
		   "uniphy2_ahb_clk", "uniphy2_sys_clk",
		   "port1_mac_clk", "port2_mac_clk",
		   "port3_mac_clk", "port4_mac_clk",
		   "port5_mac_clk", "port6_mac_clk",
		   "nss_ppe_clk", "nss_ppe_cfg_clk",
		   "nssnoc_ppe_clk", "nssnoc_ppe_cfg_clk",
		   "nss_edma_clk", "nss_edma_cfg_clk",
		   "nss_ppe_ipe_clk", "nss_ppe_btq_clk",
		   "gcc_mdio_ahb_clk", "gcc_nss_noc_clk",
		   "gcc_nssnoc_snoc_clk",
		   "gcc_mem_noc_nss_axi_clk",
		   "gcc_nss_crypto_clk",
		   "gcc_nss_imem_clk",
		   "gcc_nss_ptp_ref_clk",
		   "nss_port1_rx_clk", "nss_port1_tx_clk",
		   "nss_port2_rx_clk", "nss_port2_tx_clk",
		   "nss_port3_rx_clk", "nss_port3_tx_clk",
		   "nss_port4_rx_clk", "nss_port4_tx_clk",
		   "nss_port5_rx_clk", "nss_port5_tx_clk",
		   "nss_port6_rx_clk", "nss_port6_tx_clk",
		   "uniphy0_port1_rx_clk",
		   "uniphy0_port1_tx_clk",
		   "uniphy0_port2_rx_clk",
		   "uniphy0_port2_tx_clk",
		   "uniphy0_port3_rx_clk",
		   "uniphy0_port3_tx_clk",
		   "uniphy0_port4_rx_clk",
		   "uniphy0_port4_tx_clk",
		   "uniphy0_port5_rx_clk",
		   "uniphy0_port5_tx_clk",
		   "uniphy1_port5_rx_clk",
		   "uniphy1_port5_tx_clk",
		   "uniphy2_port6_rx_clk",
		   "uniphy2_port6_tx_clk",
		   "nss_port5_rx_clk_src",
		   "nss_port5_tx_clk_src";

   		resets = <&gcc GCC_PPE_FULL_RESET>,
			<&gcc GCC_UNIPHY0_SOFT_RESET>,
			<&gcc GCC_UNIPHY0_XPCS_RESET>,
			<&gcc GCC_UNIPHY1_SOFT_RESET>,
			<&gcc GCC_UNIPHY1_XPCS_RESET>,
			<&gcc GCC_UNIPHY2_SOFT_RESET>,
			<&gcc GCC_UNIPHY2_XPCS_RESET>,
			<&gcc GCC_NSSPORT1_RESET>,
			<&gcc GCC_NSSPORT2_RESET>,
			<&gcc GCC_NSSPORT3_RESET>,
			<&gcc GCC_NSSPORT4_RESET>,
			<&gcc GCC_NSSPORT5_RESET>,
			<&gcc GCC_NSSPORT6_RESET>;
   		reset-names = "ppe_rst", "uniphy0_soft_rst",
		   "uniphy0_xpcs_rst", "uniphy1_soft_rst",
		   "uniphy1_xpcs_rst", "uniphy2_soft_rst",
		   "uniphy2_xpcs_rst", "nss_port1_rst",
		   "nss_port2_rst", "nss_port3_rst",
		   "nss_port4_rst", "nss_port5_rst",
		   "nss_port6_rst";

		mdio-bus = <&mdio>;
		port_scheduler_resource {
			port@0 {
				port_id = <0>;
				ucast_queue = <0 143>;
				mcast_queue = <256 271>;
				l0sp = <0 35>;
				l0cdrr = <0 47>;
				l0edrr = <0 47>;
				l1cdrr = <0 7>;
				l1edrr = <0 7>;
			};
			port@1 {
				port_id = <1>;
				ucast_queue = <144 159>;
				mcast_queue = <272 275>;
				l0sp = <36 39>;
				l0cdrr = <48 63>;
				l0edrr = <48 63>;
				l1cdrr = <8 11>;
				l1edrr = <8 11>;
			};
			port@2 {
				port_id = <2>;
				ucast_queue = <160 175>;
				mcast_queue = <276 279>;
				l0sp = <40 43>;
				l0cdrr = <64 79>;
				l0edrr = <64 79>;
				l1cdrr = <12 15>;
				l1edrr = <12 15>;
			};
			port@3 {
				port_id = <3>;
				ucast_queue = <176 191>;
				mcast_queue = <280 283>;
				l0sp = <44 47>;
				l0cdrr = <80 95>;
				l0edrr = <80 95>;
				l1cdrr = <16 19>;
				l1edrr = <16 19>;
			};
			port@4 {
				port_id = <4>;
				ucast_queue = <192 207>;
				mcast_queue = <284 287>;
				l0sp = <48 51>;
				l0cdrr = <96 111>;
				l0edrr = <96 111>;
				l1cdrr = <20 23>;
				l1edrr = <20 23>;
			};
			port@5 {
				port_id = <5>;
				ucast_queue = <208 223>;
				mcast_queue = <288 291>;
				l0sp = <52 55>;
				l0cdrr = <112 127>;
				l0edrr = <112 127>;
				l1cdrr = <24 27>;
				l1edrr = <24 27>;
			};
			port@6 {
				port_id = <6>;
				ucast_queue = <224 239>;
				mcast_queue = <292 295>;
				l0sp = <56 59>;
				l0cdrr = <128 143>;
				l0edrr = <128 143>;
				l1cdrr = <28 31>;
				l1edrr = <28 31>;
			};
			port@7 {
				port_id = <7>;
				ucast_queue = <240 255>;
				mcast_queue = <296 299>;
				l0sp = <60 63>;
				l0cdrr = <144 159>;
				l0edrr = <144 159>;
				l1cdrr = <32 35>;
				l1edrr = <32 35>;
			};
		};
		
		port_scheduler_config {
			port@0 {
				port_id = <0>;
				l1scheduler {
					group@0 {
						sp = <0 1>; /*L0 SPs*/
						/*cpri cdrr epri edrr*/
						cfg = <0 0 0 0>;
					};
				};
				l0scheduler {
					group@0 {
						/*unicast queues*/
						ucast_queue = <0 4 8>;
						/*multicast queues*/
						mcast_queue = <256 260>;
						/*sp cpri cdrr epri edrr*/
						cfg = <0 0 0 0 0>;
					};
					group@1 {
						ucast_queue = <1 5 9>;
						mcast_queue = <257 261>;
						cfg = <0 1 1 1 1>;
					};
					group@2 {
						ucast_queue = <2 6 10>;
						mcast_queue = <258 262>;
						cfg = <0 2 2 2 2>;
					};
					group@3 {
						ucast_queue = <3 7 11>;
						mcast_queue = <259 263>;
						cfg = <0 3 3 3 3>;
					};
				};
			};
			port@1 {
				port_id = <1>;
				l1scheduler {
					group@0 {
						sp = <36>;
						cfg = <0 8 0 8>;
					};
					group@1 {
						sp = <37>;
						cfg = <1 9 1 9>;
					};
				};
				l0scheduler {
					group@0 {
						ucast_queue = <144>;
						ucast_loop_pri = <16>;
						mcast_queue = <272>;
						mcast_loop_pri = <4>;
						cfg = <36 0 48 0 48>;
					};
				};
			};
			port@2 {
				port_id = <2>;
				l1scheduler {
					group@0 {
						sp = <40>;
						cfg = <0 12 0 12>;
					};
					group@1 {
						sp = <41>;
						cfg = <1 13 1 13>;
					};
				};
				l0scheduler {
					group@0 {
						ucast_queue = <160>;
						ucast_loop_pri = <16>;
						mcast_queue = <276>;
						mcast_loop_pri = <4>;
						cfg = <40 0 64 0 64>;
					};
				};
			};
			port@3 {
				port_id = <3>;
				l1scheduler {
					group@0 {
						sp = <44>;
						cfg = <0 16 0 16>;
					};
					group@1 {
						sp = <45>;
						cfg = <1 17 1 17>;
					};
				};
				l0scheduler {
					group@0 {
						ucast_queue = <176>;
						ucast_loop_pri = <16>;
						mcast_queue = <280>;
						mcast_loop_pri = <4>;
						cfg = <44 0 80 0 80>;
					};
				};
			};
			port@4 {
				port_id = <4>;
				l1scheduler {
					group@0 {
						sp = <48>;
						cfg = <0 20 0 20>;
					};
					group@1 {
						sp = <49>;
						cfg = <1 21 1 21>;
					};
				};
				l0scheduler {
					group@0 {
						ucast_queue = <192>;
						ucast_loop_pri = <16>;
						mcast_queue = <284>;
						mcast_loop_pri = <4>;
						cfg = <48 0 96 0 96>;
					};
				};
			};
			port@5 {
				port_id = <5>;
				l1scheduler {
					group@0 {
						sp = <52>;
						cfg = <0 24 0 24>;
					};
					group@1 {
						sp = <53>;
						cfg = <1 25 1 25>;
					};
				};
				l0scheduler {
					group@0 {
						ucast_queue = <208>;
						ucast_loop_pri = <16>;
						mcast_queue = <288>;
						mcast_loop_pri = <4>;
						cfg = <52 0 112 0 112>;
					};
				};
			};
			port@6 {
				port_id = <6>;
				l1scheduler {
					group@0 {
						sp = <56>;
						cfg = <0 28 0 28>;
					};
					group@1 {
						sp = <57>;
						cfg = <1 29 1 29>;
					};
				};
				l0scheduler {
					group@0 {
						ucast_queue = <224>;
						ucast_loop_pri = <16>;
						mcast_queue = <292>;
						mcast_loop_pri = <4>;
						cfg = <56 0 128 0 128>;
					};
				};
			};
			port@7 {
				port_id = <7>;
				l1scheduler {
					group@0 {
						sp = <60>;
						cfg = <0 32 0 32>;
					};
					group@1 {
						sp = <61>;
						cfg = <1 33 1 33>;
					};
				};
				l0scheduler {
					group@0 {
						ucast_queue = <240>;
						ucast_loop_pri = <16>;
						mcast_queue = <296>;
						cfg = <60 0 144 0 144>;
					};
				};
			};
		};		
	};	

	ess-uniphy@7a00000 {
		compatible = "qcom,ess-uniphy";
		reg = <0x7a00000 0x30000>;
		uniphy_access_mode = "local bus";
	};
	blsp1_spi2: spi@78b8000 {
		compatible = "qcom,spi-qup-v2.2.1";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x78b8000 0x600>;
		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
		spi-max-frequency = <50000000>;
		clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
			<&gcc GCC_BLSP1_AHB_CLK>;
		clock-names = "core", "iface";
		dmas = <&blsp_dma 18>, <&blsp_dma 19>;
		dma-names = "tx", "rx";	
		status = "okay";
	};
	pcie_qmp2: phy@86000 {
		compatible = "qcom,ipq8074-qmp-pcie-phy";
		reg = <0x86000 0x1000>;
		#address-cells = <1>;
		#size-cells = <1>;		

		clocks = <&gcc GCC_PCIE0_AUX_CLK>,
			<&gcc GCC_PCIE0_AHB_CLK>;
		clock-names = "aux", "cfg_ahb";
		resets = <&gcc GCC_PCIE0_PHY_BCR>,
			<&gcc GCC_PCIE0PHY_PHY_BCR>;
		reset-names = "phy",
				  "common";
		status = "disabled";

		pcie_phy2: phy@86200 {
			reg = <0x86200 0x16c>,
				  <0x86400 0x200>,
				  <0x86800 0x4f4>;
			#phy-cells = <0>;
			#clock-cells = <0>;
			clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
			clock-names = "pipe0";
			clock-output-names = "pcie_0_pipe_clk";
			clock-output-rate = <250000000>;
			
		};
	};
	wifi@c0000000 {	
		compatible = "qcom,ipq8074-wifi";
		reg = <0xc000000 0x2000000>;	
		qcom,hw-mode-id = <1>;
		qcom,tgt-mem-mode = <1>;
		qcom,bdf-addr = <0x4B0C0000 0x4B0C0000 0x4B0C0000>;
		qcom,caldb-addr = <0x4BA00000 0x4BA00000 0x0>;
		interrupts = <0 320 1>, /* o_wcss_apps_intr[0] =  */
			<0 319 1>,
			<0 318 1>,
			<0 317 1>,
			<0 316 1>,
			<0 315 1>,
			<0 314 1>,
			<0 311 1>,
			<0 310 1>,
			<0 411 1>,
			<0 410 1>,
			<0 40 1>,
			<0 39 1>,
			<0 302 1>,
			<0 301 1>,
			<0 37 1>,
			<0 36 1>,
			<0 296 1>,
			<0 295 1>,
			<0 294 1>,
			<0 293 1>,
			<0 292 1>,
			<0 291 1>,
			<0 290 1>,
			<0 289 1>,
			<0 288 1>, /* o_wcss_apps_intr[25] */
	
			<0 239 1>,
			<0 236 1>,
			<0 235 1>,
			<0 234 1>,
			<0 233 1>,
			<0 232 1>,
			<0 231 1>,
			<0 230 1>,
			<0 229 1>,
			<0 228 1>,
			<0 224 1>,
			<0 223 1>,
	
			<0 203 1>,
	
			<0 183 1>,
			<0 180 1>,
			<0 179 1>,
			<0 178 1>,
			<0 177 1>,
			<0 176 1>,
	
			<0 163 1>,
			<0 162 1>,
			<0 160 1>,
			<0 159 1>,
			<0 158 1>,
			<0 157 1>,
			<0 156 1>; /* o_wcss_apps_intr[51] */
	
		interrupt-names = "misc-pulse1",
			"misc-latch",
			"sw-exception",
			"watchdog",
			"ce0",
			"ce1",
			"ce2",
			"ce3",
			"ce4",
			"ce5",
			"ce6",
			"ce7",
			"ce8",
			"ce9",
			"ce10",
			"ce11",
			"host2wbm-desc-feed",
			"host2reo-re-injection",
			"host2reo-command",
			"host2rxdma-monitor-ring3",
			"host2rxdma-monitor-ring2",
			"host2rxdma-monitor-ring1",
			"reo2ost-exception",
			"wbm2host-rx-release",
			"reo2host-status",
			"reo2host-destination-ring4",
			"reo2host-destination-ring3",
			"reo2host-destination-ring2",
			"reo2host-destination-ring1",
			"rxdma2host-monitor-destination-mac3",
			"rxdma2host-monitor-destination-mac2",
			"rxdma2host-monitor-destination-mac1",
			"ppdu-end-interrupts-mac3",
			"ppdu-end-interrupts-mac2",
			"ppdu-end-interrupts-mac1",
			"rxdma2host-monitor-status-ring-mac3",
			"rxdma2host-monitor-status-ring-mac2",
			"rxdma2host-monitor-status-ring-mac1",
			"host2rxdma-host-buf-ring-mac3",
			"host2rxdma-host-buf-ring-mac2",
			"host2rxdma-host-buf-ring-mac1",
			"rxdma2host-destination-ring-mac3",
			"rxdma2host-destination-ring-mac2",
			"rxdma2host-destination-ring-mac1",
			"host2tcl-input-ring4",
			"host2tcl-input-ring3",
			"host2tcl-input-ring2",
			"host2tcl-input-ring1",
			"wbm2host-tx-completions-ring3",
			"wbm2host-tx-completions-ring2",
			"wbm2host-tx-completions-ring1",
			"tcl2host-status-ring";
		status = "okay";	
	};

	wifi2: wifi2@f00000 {
		compatible  = "qcom,cnss-qca6290";
		status = "okay";
	};
};
&blsp1_i2c2 {
	status = "okay";
	};
&blsp1_i2c3 {
	status = "okay";
	};
&blsp1_spi1 {
	status = "okay";
	m25p80@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <50000000>;
		};
	};

&mdio {
	status = "okay";
	pinctrl-0 = <&mdio_pins>;
	pinctrl-names = "default";
	
	phy0: ethernet-phy@0 {
		reg = <0>;
	};
	phy1: ethernet-phy@1 {
		reg = <1>;
	};
	phy2: ethernet-phy@2 {
		reg = <2>;
	};
	phy3: ethernet-phy@3 {
		reg = <3>;
	};
	phy4: ethernet-phy@4 {
		reg = <4>;
	};
	phy5: ethernet-phy@5 {
		compatible ="ethernet-phy-ieee802.3-c45";
		reg = <7>;
	};
	
	};

&blsp1_uart3 {
	status = "okay";
	};
&blsp1_uart5 {
	status = "okay";
	};

&pcie_qmp0 { 
	//84000
	status = "okay";	
	};
&pcie_phy0 {
	//84200
	status = "okay";
	};	
&pcie0 {
	//phy0 and phy2
	status = "okay";
	phys = <&pcie_phy0>, <&pcie_phy2>;
	phy-names = "pciephy", "pciephy";	
	};
&pcie_qmp1 {
	//8e000
	status = "okay";
	};
&pcie_phy1 {
	//8e200
	status = "okay";
	};
&pcie1 {
	//phy1
	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>;
		};
	};
&sdhc_1 {
	status = "okay";
	};
&qusb_phy_0 {
	status = "okay";
	};
&qusb_phy_1 {
	status = "okay";
	};
&ssphy_0 {
	status = "okay";
	};
&ssphy_1 {
	status = "okay";
	};
&usb_0 {
	status = "okay";
	};
&usb_1 {
	status = "okay";
	};
&cryptobam {
	status = "okay";
	};
&crypto {
	status = "okay";
	};
&prng {
	status = "okay";
	};

Main issue with pcie is that we loose pcie0 (pci@20000000) when attempting to enable pcie_qmp2 and pcie_phy2.

Another issue is the ess-switch.. I think I have it configured right but it's just not coming up.

USB2 clocks are stuck and USB3 (ssphy) does not seem to work.

Some of this likely comes down to drivers also. QCA6290 being a primary example of an item with limited upstream support.

AX3600 is AC-04 based device, not that the reference board that they are based off matters at all.
Production boards will differ quite a lot from the reference board they are based off

Makes since yeah. That's why I started from scratch in favor of adopting the AX3600 dts. The RAX120 is slightly faster and has more ram compared to the AX3600 but most of the difference is just on the wireless side I believe.

(I could be wrong - 7000+ messages to review in the AX3600 thread :slight_smile: )