qualcommax: ipq50xx: split firmware variants and refactor QCN6122 support
authorGeorge Moussalem <[email protected]>
Thu, 23 Oct 2025 11:16:21 +0000 (15:16 +0400)
committerRobert Marko <[email protected]>
Fri, 28 Nov 2025 09:27:53 +0000 (10:27 +0100)
commit1f879b88398b06053260c5b19f899cfdd16b93c6
tree58a3daf0a3f9551a1ea3278d3c42265bf598a770
parent00d61da5880005df53b862593b51d95bfe8b2d1b
qualcommax: ipq50xx: split firmware variants and refactor QCN6122 support

IPQ5018 based boards come in multiple wireless architectures.
The SOC itself provides 2.4G wifi while 5G wifi is added by either an
IPQ5018-specific QCN6122 (2x2) solution or by the more generally
available PCIe-based QCN9074 (4x4) wifi chip.

On IPQ5018/QCN6122-based boards, both QCN6122 and IPQ5018 wifi is
initialized by IPQ5018 firmware which comes in different versions:
- IPQ5018: firmware files to initialize WCSS and the internal wifi chip
- IPQ5018/QCN6122: above + additional firmware segments to initialize
the QCN6122 chip incl. (de-)assertion of resets and clocks enablement

OpenWrt currently packages the combined IPQ5018/QCN6122 firmware for
both architectures. As such, let's switch to using IPQ5018-only firmware
for boards not packed with QCN6122 chip(s) and keep using the shared
firmware for devices that do have QCN6122(s) chips.
This helps us move to using upstreamed IPQ5018 firmware while using the
legacy repo for IPQ5018/QCN6122 firmware and rule out any initialization
conflicts/issues caused by loading QCN6122 on IPQ5018-only boards.

While at it, default to the secure WCSS remoteproc driver sent upstream
for review, move QCN6122 wifi nodes to a separate dtsi, override the Q6
node to load the multi-PD-based architecture remoteproc driver for
needed only by IPQ5018/QCN6122 designs, reference said dtsi in
boards packed with QCN6122 wifi chip(s), and add provision for migrating
the radio path as the wifi nodes now adhere to linux device tree naming
conventions.

Signed-off-by: George Moussalem <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/20928
Signed-off-by: Robert Marko <[email protected]>
22 files changed:
package/firmware/ath11k-firmware/Makefile
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax6000.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax830.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax850.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mr5500.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx-base.dtsi
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx2000.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx5500.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-pz-l8.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-qcn6122.dtsi [new file with mode: 0644]
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-spnmx56.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wn-dax3000gr.dts
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wrc-x3000gs2.dts
target/linux/qualcommax/image/ipq50xx.mk
target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate
target/linux/qualcommax/ipq50xx/target.mk
target/linux/qualcommax/patches-6.12/0189-arm64-dts-qcom-ipq5018-add-nodes-to-bringup-q6.patch [new file with mode: 0644]
target/linux/qualcommax/patches-6.12/0306-arm64-dts-qcom-ipq5018-Add-PWM-node.patch
target/linux/qualcommax/patches-6.12/0715-arm64-dts-qcom-ipq5018-add-vendor-compatible-to-mdio-node.patch
target/linux/qualcommax/patches-6.12/0816-arm64-dts-qcom-ipq5018-add-wifi-support.patch