[openwrt/openwrt] qualcommax: ipq50xx: split firmware variants and refactor QCN6122 support
LEDE Commits
lede-commits at lists.infradead.org
Fri Nov 28 01:28:06 PST 2025
robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/1f879b88398b06053260c5b19f899cfdd16b93c6
commit 1f879b88398b06053260c5b19f899cfdd16b93c6
Author: George Moussalem <george.moussalem at outlook.com>
AuthorDate: Thu Oct 23 15:16:21 2025 +0400
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 <george.moussalem at outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20928
Signed-off-by: Robert Marko <robimarko at gmail.com>
---
package/firmware/ath11k-firmware/Makefile | 31 +--
.../arch/arm64/boot/dts/qcom/ipq5018-ax6000.dts | 58 +-----
.../arch/arm64/boot/dts/qcom/ipq5018-ax830.dts | 89 +--------
.../arch/arm64/boot/dts/qcom/ipq5018-ax850.dts | 80 ++------
.../arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts | 88 +-------
.../arch/arm64/boot/dts/qcom/ipq5018-mr5500.dts | 56 +-----
.../arch/arm64/boot/dts/qcom/ipq5018-mx-base.dtsi | 7 -
.../arch/arm64/boot/dts/qcom/ipq5018-mx2000.dts | 91 +--------
.../arch/arm64/boot/dts/qcom/ipq5018-mx5500.dts | 53 +----
.../arch/arm64/boot/dts/qcom/ipq5018-pz-l8.dts | 93 +--------
.../arch/arm64/boot/dts/qcom/ipq5018-qcn6122.dtsi | 135 +++++++++++++
.../arch/arm64/boot/dts/qcom/ipq5018-spnmx56.dts | 56 +-----
.../arm64/boot/dts/qcom/ipq5018-wn-dax3000gr.dts | 83 +-------
.../arm64/boot/dts/qcom/ipq5018-wrc-x3000gs2.dts | 90 +--------
target/linux/qualcommax/image/ipq50xx.mk | 29 +--
.../etc/hotplug.d/firmware/11-ath11k-caldata | 2 +-
.../etc/hotplug.d/ieee80211/05-wifi-migrate | 7 +
target/linux/qualcommax/ipq50xx/target.mk | 1 -
...-dts-qcom-ipq5018-add-nodes-to-bringup-q6.patch | 101 ++++++++++
.../0306-arm64-dts-qcom-ipq5018-Add-PWM-node.patch | 2 +-
...pq5018-add-vendor-compatible-to-mdio-node.patch | 2 +-
...6-arm64-dts-qcom-ipq5018-add-wifi-support.patch | 221 ++++++---------------
22 files changed, 383 insertions(+), 992 deletions(-)
diff --git a/package/firmware/ath11k-firmware/Makefile b/package/firmware/ath11k-firmware/Makefile
index cfc364215f..0ef80b3719 100644
--- a/package/firmware/ath11k-firmware/Makefile
+++ b/package/firmware/ath11k-firmware/Makefile
@@ -52,6 +52,11 @@ $(Package/ath11k-firmware-default)
TITLE:=IPQ5018 ath11k firmware
endef
+define Package/ath11k-firmware-ipq5018-qcn6122
+$(Package/ath11k-firmware-default)
+ TITLE:=IPQ5018/QCN6122 ath11k firmware
+endef
+
define Package/ath11k-firmware-ipq6018
$(Package/ath11k-firmware-default)
TITLE:=IPQ6018 ath11k firmware
@@ -62,12 +67,6 @@ $(Package/ath11k-firmware-default)
TITLE:=IPQ8074 ath11k firmware
endef
-define Package/ath11k-firmware-qcn6122
-$(Package/ath11k-firmware-default)
- TITLE:=QCN6122 ath11k firmware
- DEPENDS:=ath11k-firmware-ipq5018
-endef
-
define Package/ath11k-firmware-qcn9074
$(Package/ath11k-firmware-default)
TITLE:=QCN9074 ath11k firmware
@@ -93,10 +92,21 @@ define Build/Compile
endef
define Package/ath11k-firmware-ipq5018/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/IPQ5018/hw1.0/2.6.0.1/WLAN.HK.2.6.0.1-01291-QCAHKSWPL_SILICONZ-1/* \
+ $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/
+endef
+
+define Package/ath11k-firmware-ipq5018-qcn6122/install
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0
$(INSTALL_DATA) \
$(BUILD_DIR)/$(ATH11K_LEGACY_FW_SUBDIR)/ath11k-firmware/IPQ5018_QCN6122_QCN6122/hw1.0/2.7.0.1/WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1/*.* \
$(1)/lib/firmware/ath11k/IPQ5018/hw1.0/
+ $(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCN6122/hw1.0
+ $(INSTALL_DATA) \
+ $(BUILD_DIR)/$(ATH11K_LEGACY_FW_SUBDIR)/ath11k-firmware/IPQ5018_QCN6122_QCN6122/hw1.0/2.7.0.1/WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1/qcn6122/*.* \
+ $(1)/lib/firmware/ath11k/QCN6122/hw1.0/
endef
define Package/ath11k-firmware-ipq6018/install
@@ -113,13 +123,6 @@ define Package/ath11k-firmware-ipq8074/install
$(1)/lib/firmware/IPQ8074/
endef
-define Package/ath11k-firmware-qcn6122/install
- $(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCN6122/hw1.0
- $(INSTALL_DATA) \
- $(BUILD_DIR)/$(ATH11K_LEGACY_FW_SUBDIR)/ath11k-firmware/IPQ5018_QCN6122_QCN6122/hw1.0/2.7.0.1/WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1/qcn6122/* \
- $(1)/lib/firmware/ath11k/QCN6122/hw1.0/
-endef
-
define Package/ath11k-firmware-qcn9074/install
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCN9074/hw1.0
$(INSTALL_DATA) \
@@ -130,7 +133,7 @@ define Package/ath11k-firmware-qcn9074/install
endef
$(eval $(call BuildPackage,ath11k-firmware-ipq5018))
+$(eval $(call BuildPackage,ath11k-firmware-ipq5018-qcn6122))
$(eval $(call BuildPackage,ath11k-firmware-ipq6018))
$(eval $(call BuildPackage,ath11k-firmware-ipq8074))
-$(eval $(call BuildPackage,ath11k-firmware-qcn6122))
$(eval $(call BuildPackage,ath11k-firmware-qcn9074))
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax6000.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax6000.dts
index f43da50711..bfe9589ecd 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax6000.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax6000.dts
@@ -84,13 +84,6 @@
gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions at 4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
};
&sleep_clk {
@@ -576,61 +569,14 @@
};
&q6v5_wcss {
- status = "okay";
-
- memory-region = <&q6_mem_regions>;
firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
"ath11k/IPQ5018/hw1.0/m3_fw.mdt";
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 0>,
- <&wcss_smp2p_in 9 0>,
- <&wcss_smp2p_in 12 0>,
- <&wcss_smp2p_in 11 0>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
};
-&wifi0 {
+&wifi {
status = "okay";
- qcom,rproc = <&q6_wcss_pd1>;
+ qcom,rproc = <&q6v5_wcss>;
qcom,ath11k-calibration-variant = "Xiaomi-AX6000";
qcom,ath11k-fw-memory-mode = <1>;
- qcom,bdf-addr = <0x4c400000>;
};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax830.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax830.dts
index 4043597981..8f9f027fd3 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax830.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax830.dts
@@ -7,6 +7,7 @@
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
@@ -65,13 +66,6 @@
};
};
- reserved-memory {
- q6_mem_regions: q6_mem_regions at 4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
-
gpio-watchdog {
compatible = "linux,wdt-gpio";
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
@@ -381,86 +375,9 @@
};
};
-&q6v5_wcss {
+&wifi {
status = "okay";
- memory-region = <&q6_mem_regions>;
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
- "ath11k/IPQ5018/hw1.0/m3_fw.mdt",
- "ath11k/QCN6122/hw1.0/m3_fw.mdt";
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
-
- // QCN6122 5G
- q6_wcss_pd3: pd-3 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- interrupts-extended =
- <&wcss_smp2p_in 24 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 25 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 28 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 27 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 24>,
- <&wcss_smp2p_out 25>,
- <&wcss_smp2p_out 26>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
-};
-
-&wifi0 {
- // IPQ5018
- status = "okay";
qcom,rproc = <&q6_wcss_pd1>;
qcom,ath11k-calibration-variant = "Yuncore-AX830";
qcom,ath11k-fw-memory-mode = <1>;
@@ -468,8 +385,8 @@
};
&wifi1 {
- // QCN6122 5G
status = "okay";
+
qcom,rproc = <&q6_wcss_pd3>;
qcom,userpd-subsys-name = "q6v5_wcss_userpd3";
qcom,ath11k-calibration-variant = "Yuncore-AX830";
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax850.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax850.dts
index 30945e6332..f81e5171d0 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax850.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-ax850.dts
@@ -65,13 +65,6 @@
};
};
- reserved-memory {
- q6_mem_regions: q6_mem_regions at 4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
-
gpio-watchdog {
compatible = "linux,wdt-gpio";
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
@@ -384,66 +377,6 @@
status = "okay";
};
-&q6v5_wcss {
- status = "okay";
-
- memory-region = <&q6_mem_regions>;
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
- "ath11k/IPQ5018/hw1.0/m3_fw.mdt";
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
-};
-
-&wifi0 {
- // IPQ5018
- status = "okay";
- qcom,rproc = <&q6_wcss_pd1>;
- qcom,ath11k-calibration-variant = "Yuncore-AX850";
- qcom,ath11k-fw-memory-mode = <1>;
- qcom,bdf-addr = <0x4c400000>;
-};
-
&pcie0_phy {
status = "okay";
};
@@ -468,3 +401,16 @@
};
};
};
+
+&q6v5_wcss {
+ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
+ "ath11k/IPQ5018/hw1.0/m3_fw.mdt";
+};
+
+&wifi {
+ status = "okay";
+
+ qcom,rproc = <&q6v5_wcss>;
+ qcom,ath11k-calibration-variant = "Yuncore-AX850";
+ qcom,ath11k-fw-memory-mode = <1>;
+};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts
index cd4f270632..4094867a11 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-gl-b3000.dts
@@ -2,6 +2,7 @@
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
@@ -55,13 +56,6 @@
gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions at 4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
};
&switch {
@@ -308,13 +302,6 @@
};
&q6v5_wcss {
- status = "okay";
-
- memory-region = <&q6_mem_regions>;
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
- "ath11k/IPQ5018/hw1.0/m3_fw.mdt",
- "ath11k/QCN6122/hw1.0/m3_fw.mdt";
-
/* B3000 currently doesn't support passing bootargs */
/*boot-args = < */
/* type: 0x1 PCIE0 */
@@ -322,79 +309,9 @@
/* PD id: 3 */
/* reset GPIO: 15 */
/* reserved: 0 0>; */
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- // qcom,halt-regs = <&tcsr_q6_block 0xa000 0xd000 0x0>;
- interrupts-extended =
- <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
-
- // QCN6102 5G
- q6_wcss_pd3: pd-3 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- interrupts-extended =
- <&wcss_smp2p_in 24 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 25 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 28 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 27 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 24>,
- <&wcss_smp2p_out 25>,
- <&wcss_smp2p_out 26>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
};
-&wifi0 {
- // IPQ5018
+&wifi {
status = "okay";
qcom,rproc = <&q6_wcss_pd1>;
@@ -405,7 +322,6 @@
};
&wifi1 {
- // QCN6102 5G
status = "okay";
qcom,rproc = <&q6_wcss_pd3>;
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mr5500.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mr5500.dts
index e86e296be4..77be190dc4 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mr5500.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mr5500.dts
@@ -321,62 +321,14 @@
};
&q6v5_wcss {
- status = "okay";
-
- memory-region = <&q6_mem_regions>;
firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
"ath11k/IPQ5018/hw1.0/m3_fw.mdt";
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 0>,
- <&wcss_smp2p_in 9 0>,
- <&wcss_smp2p_in 12 0>,
- <&wcss_smp2p_in 11 0>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
};
-&wifi0 {
- // IPQ5018
- qcom,rproc = <&q6_wcss_pd1>;
+&wifi {
+ status = "okay";
+
+ qcom,rproc = <&q6v5_wcss>;
qcom,ath11k-calibration-variant = "Linksys-MR5500";
qcom,ath11k-fw-memory-mode = <1>;
- qcom,bdf-addr = <0x4c400000>;
-
- status = "okay";
};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx-base.dtsi b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx-base.dtsi
index add929f217..6644263545 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx-base.dtsi
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx-base.dtsi
@@ -62,13 +62,6 @@
max-brightness = <255>;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions at 4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
};
&sleep_clk {
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx2000.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx2000.dts
index 5eaa84e3e6..f6b58d2cbc 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx2000.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx2000.dts
@@ -2,6 +2,7 @@
#include "ipq5018.dtsi"
#include "ipq5018-mx-base.dtsi"
+#include "ipq5018-qcn6122.dtsi"
/ {
model = "Linksys MX2000";
@@ -146,13 +147,6 @@
};
&q6v5_wcss {
- status = "okay";
-
- memory-region = <&q6_mem_regions>;
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
- "ath11k/IPQ5018/hw1.0/m3_fw.mdt",
- "ath11k/QCN6122/hw1.0/m3_fw.mdt";
-
/* The QCN6102 radio should map to UPD ID 2. Without */
/* bootargs, the firmware will expect it to be on UPD ID 3 */
boot-args = <
@@ -161,97 +155,24 @@
/* UPD ID: */ 2
/* reset GPIO: */ 15
/* reserved: */ 0 0>;
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- // qcom,halt-regs = <&tcsr_q6_block 0xa000 0xd000 0x0>;
- interrupts-extended =
- <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- status = "okay";
- };
-
- // QCN6102 5G
- q6_wcss_pd2: pd-2 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- interrupts-extended =
- <&wcss_smp2p_in 16 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 17 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 20 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 19 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 16>,
- <&wcss_smp2p_out 17>,
- <&wcss_smp2p_out 18>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- status = "okay";
- };
};
-&wifi0 {
- // IPQ5018
+&wifi {
+ status = "okay";
+
qcom,rproc = <&q6_wcss_pd1>;
qcom,ath11k-calibration-variant = "Linksys-MX2000";
qcom,ath11k-fw-memory-mode = <1>;
qcom,bdf-addr = <0x4c400000>;
-
- status = "okay";
};
&wifi1 {
- // QCN6102 5G
+ status = "okay";
+
qcom,rproc = <&q6_wcss_pd2>;
qcom,userpd-subsys-name = "q6v5_wcss_userpd2";
qcom,ath11k-calibration-variant = "Linksys-MX2000";
qcom,ath11k-fw-memory-mode = <1>;
qcom,bdf-addr = <0x4d100000>;
qcom,m3-dump-addr = <0x4df00000>;
-
- status = "okay";
};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx5500.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx5500.dts
index 535f0ec10e..2883a466f3 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx5500.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-mx5500.dts
@@ -168,63 +168,14 @@
};
&q6v5_wcss {
- status = "okay";
-
- memory-region = <&q6_mem_regions>;
firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
"ath11k/IPQ5018/hw1.0/m3_fw.mdt";
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 0>,
- <&wcss_smp2p_in 9 0>,
- <&wcss_smp2p_in 12 0>,
- <&wcss_smp2p_in 11 0>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- status = "okay";
- };
};
-&wifi0 {
- // IPQ5018
- qcom,rproc = <&q6_wcss_pd1>;
+&wifi {
+ qcom,rproc = <&q6v5_wcss>;
qcom,ath11k-calibration-variant = "Linksys-MX5500";
qcom,ath11k-fw-memory-mode = <1>;
- qcom,bdf-addr = <0x4c400000>;
status = "okay";
};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-pz-l8.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-pz-l8.dts
index 4857e3d4f9..a90c6ca8b0 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-pz-l8.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-pz-l8.dts
@@ -4,6 +4,7 @@
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
@@ -63,14 +64,6 @@
function = LED_FUNCTION_LAN;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions at 4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- status = "disabled";
- };
- };
};
&sleep_clk {
@@ -367,93 +360,11 @@
*/
&q6v5_wcss {
status = "disabled";
-
- memory-region = <&q6_mem_regions>;
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
- "ath11k/IPQ5018/hw1.0/m3_fw.mdt",
- "ath11k/QCN6122/hw1.0/m3_fw.mdt";
-
- /* The QCN6102 radio should map to UPD ID 2. Without */
- /* bootargs, the firmware will expect it to be on UPD ID 3 */
- boot-args = <0x2 4 2 27 0 0>; /* pcie:2, len:4, updid:2, reset:gpio27 */
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
-
- status = "disabled";
- };
-
- // QCN6102 5G
- q6_wcss_pd2: pd-2 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- interrupts-extended =
- <&wcss_smp2p_in 16 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 17 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 20 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 19 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 16>,
- <&wcss_smp2p_out 17>,
- <&wcss_smp2p_out 18>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
-
- status = "disabled";
- };
};
-&wifi0 {
+&wifi {
// IPQ5018
qcom,rproc = <&q6_wcss_pd1>;
- qcom,userpd-subsys-name = "q6v5_wcss_userpd1";
qcom,ath11k-calibration-variant = "CMCC-PZ-L8";
qcom,ath11k-fw-memory-mode = <1>;
qcom,bdf-addr = <0x4c400000>;
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-qcn6122.dtsi b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-qcn6122.dtsi
new file mode 100644
index 0000000000..a59c6ceda3
--- /dev/null
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-qcn6122.dtsi
@@ -0,0 +1,135 @@
+// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
+/*
+ * IPQ5018 SoC device tree source extension for QCN6122 wifi
+ *
+ * Copyright (c) 2023-2025 The Linux Foundation. All rights reserved.
+ */
+
+&q6_region {
+ reg = <0x0 0x4b000000 0x0 0x3000000>;
+};
+
+&q6v5_wcss {
+ compatible = "qcom,ipq5018-q6-mpd";
+
+ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
+ "ath11k/IPQ5018/hw1.0/m3_fw.mdt",
+ "ath11k/QCN6122/hw1.0/m3_fw.mdt";
+
+ // IPQ5018
+ q6_wcss_pd1: pd-1 {
+ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
+
+ interrupts-extended =
+ <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
+ interrupt-names =
+ "fatal",
+ "ready",
+ "spawn-ack",
+ "stop-ack";
+
+ qcom,smem-states =
+ <&wcss_smp2p_out 8>,
+ <&wcss_smp2p_out 9>,
+ <&wcss_smp2p_out 10>;
+ qcom,smem-state-names =
+ "shutdown",
+ "stop",
+ "spawn";
+ };
+
+ // QCN6122
+ q6_wcss_pd2: pd-2 {
+ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
+
+ interrupts-extended =
+ <&wcss_smp2p_in 16 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 17 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 20 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 19 IRQ_TYPE_NONE>;
+ interrupt-names =
+ "fatal",
+ "ready",
+ "spawn-ack",
+ "stop-ack";
+
+ qcom,smem-states =
+ <&wcss_smp2p_out 16>,
+ <&wcss_smp2p_out 17>,
+ <&wcss_smp2p_out 18>;
+ qcom,smem-state-names =
+ "shutdown",
+ "stop",
+ "spawn";
+ };
+
+ // QCN6122
+ q6_wcss_pd3: pd-3 {
+ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
+
+ interrupts-extended =
+ <&wcss_smp2p_in 24 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 25 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 28 IRQ_TYPE_NONE>,
+ <&wcss_smp2p_in 27 IRQ_TYPE_NONE>;
+ interrupt-names =
+ "fatal",
+ "ready",
+ "spawn-ack",
+ "stop-ack";
+
+ qcom,smem-states =
+ <&wcss_smp2p_out 24>,
+ <&wcss_smp2p_out 25>,
+ <&wcss_smp2p_out 26>;
+ qcom,smem-state-names =
+ "shutdown",
+ "stop",
+ "spawn";
+ };
+};
+
+&soc {
+ //QCN6122: 1st instance
+ wifi1: wifi at b00a040 {
+ reg = <0x0b00a040 0x0>;
+ compatible = "qcom,qcn6122-wifi";
+ interrupts = <GIC_SPI 416 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 417 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 418 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 419 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 420 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 421 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 422 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 423 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 424 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 425 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 426 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 427 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 428 IRQ_TYPE_EDGE_RISING>;
+ status = "disabled";
+ };
+
+ //QCN6122: 2nd instance
+ wifi2: wifi at b00b040 {
+ reg = <0x0b00b040 0x0>;
+ compatible = "qcom,qcn6122-wifi";
+ interrupts = <GIC_SPI 448 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 450 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 451 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 452 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 453 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 454 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 455 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 456 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 457 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 458 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 459 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
+ status = "disabled";
+ };
+};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-spnmx56.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-spnmx56.dts
index 7984f3f57a..6ee86d6029 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-spnmx56.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-spnmx56.dts
@@ -179,62 +179,14 @@
};
&q6v5_wcss {
- status = "okay";
-
- memory-region = <&q6_mem_regions>;
firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
"ath11k/IPQ5018/hw1.0/m3_fw.mdt";
-
- // IPQ5018
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 0>,
- <&wcss_smp2p_in 9 0>,
- <&wcss_smp2p_in 12 0>,
- <&wcss_smp2p_in 11 0>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
};
-&wifi0 {
- // IPQ5018
- qcom,rproc = <&q6_wcss_pd1>;
+&wifi {
+ status = "okay";
+
+ qcom,rproc = <&q6v5_wcss>;
qcom,ath11k-calibration-variant = "Linksys-SPNMX56";
qcom,ath11k-fw-memory-mode = <1>;
- qcom,bdf-addr = <0x4c400000>;
-
- status = "okay";
};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wn-dax3000gr.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wn-dax3000gr.dts
index a4c8201b8f..de6d415314 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wn-dax3000gr.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wn-dax3000gr.dts
@@ -4,6 +4,7 @@
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
@@ -113,13 +114,6 @@
function = LED_FUNCTION_WAN;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions at 4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
};
&sleep_clk {
@@ -395,83 +389,10 @@
};
&q6v5_wcss {
- status = "okay";
-
- memory-region = <&q6_mem_regions>;
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
- "ath11k/IPQ5018/hw1.0/m3_fw.mdt",
- "ath11k/QCN6122/hw1.0/m3_fw.mdt";
-
boot-args = <0x2 4 2 18 0 0>; /* pcie:1, len:4, updid:2, reset:gpio18 */
-
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
-
- q6_wcss_pd2: pd-2 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- interrupts-extended =
- <&wcss_smp2p_in 16 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 17 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 20 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 19 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 16>,
- <&wcss_smp2p_out 17>,
- <&wcss_smp2p_out 18>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
};
-&wifi0 {
+&wifi {
status = "okay";
qcom,rproc = <&q6_wcss_pd1>;
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wrc-x3000gs2.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wrc-x3000gs2.dts
index 0c358f1667..1b6018dbef 100644
--- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wrc-x3000gs2.dts
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-wrc-x3000gs2.dts
@@ -4,6 +4,7 @@
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
@@ -107,14 +108,6 @@
function = LED_FUNCTION_WAN;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions at 4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- status = "disabled";
- };
- };
};
&sleep_clk {
@@ -397,81 +390,12 @@
&q6v5_wcss {
status = "disabled";
- memory-region = <&q6_mem_regions>;
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
- "ath11k/IPQ5018/hw1.0/m3_fw.mdt",
- "ath11k/QCN6122/hw1.0/m3_fw.mdt";
-
boot-args = <0x2 4 2 18 0 0>; /* pcie:1, len:4, updid:2, reset:gpio18 */
-
- q6_wcss_pd1: pd-1 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- resets =
- <&gcc GCC_WCSSAON_RESET>,
- <&gcc GCC_WCSS_BCR>,
- <&gcc GCC_CE_BCR>;
- reset-names =
- "wcss_aon_reset",
- "wcss_reset",
- "ce_reset";
-
- clocks =
- <&gcc GCC_WCSS_AHB_S_CLK>,
- <&gcc GCC_WCSS_ACMT_CLK>,
- <&gcc GCC_WCSS_AXI_M_CLK>;
- clock-names =
- "gcc_wcss_ahb_s_clk",
- "gcc_wcss_acmt_clk",
- "gcc_wcss_axi_m_clk";
-
- interrupts-extended =
- <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 8>,
- <&wcss_smp2p_out 9>,
- <&wcss_smp2p_out 10>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
-
- q6_wcss_pd2: pd-2 {
- firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
-
- interrupts-extended =
- <&wcss_smp2p_in 16 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 17 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 20 IRQ_TYPE_NONE>,
- <&wcss_smp2p_in 19 IRQ_TYPE_NONE>;
- interrupt-names =
- "fatal",
- "ready",
- "spawn-ack",
- "stop-ack";
-
- qcom,smem-states =
- <&wcss_smp2p_out 16>,
- <&wcss_smp2p_out 17>,
- <&wcss_smp2p_out 18>;
- qcom,smem-state-names =
- "shutdown",
- "stop",
- "spawn";
- };
};
-&wifi0 {
+&wifi {
+ status = "disabled";
+
qcom,rproc = <&q6_wcss_pd1>;
qcom,userpd-subsys-name = "q6v5_wcss_userpd1";
qcom,ath11k-calibration-variant = "ELECOM-WRC-X3000GS2";
@@ -479,11 +403,11 @@
qcom,bdf-addr = <0x4c400000>;
ieee80211-freq-limit = <2400000 2483000>;
-
- status = "disabled";
};
&wifi1 {
+ status = "disabled";
+
qcom,rproc = <&q6_wcss_pd2>;
qcom,userpd-subsys-name = "q6v5_wcss_userpd2";
qcom,ath11k-calibration-variant = "ELECOM-WRC-X3000GS2";
@@ -492,6 +416,4 @@
qcom,m3-dump-addr = <0x4df00000>;
ieee80211-freq-limit = <5150000 5730000>;
-
- status = "disabled";
};
diff --git a/target/linux/qualcommax/image/ipq50xx.mk b/target/linux/qualcommax/image/ipq50xx.mk
index 65d134c4a8..6a6a50d6f7 100644
--- a/target/linux/qualcommax/image/ipq50xx.mk
+++ b/target/linux/qualcommax/image/ipq50xx.mk
@@ -46,7 +46,8 @@ define Device/elecom_wrc-x3000gs2
IMAGES += factory.bin
IMAGE/factory.bin := append-ubi | qsdk-ipq-factory-nand | \
mstc-header 4.04(XZF.0)b90 | elecom-product-header WRC-X3000GS2
- DEVICE_PACKAGES := ath11k-firmware-qcn6122 ipq-wifi-elecom_wrc-x3000gs2
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018-qcn6122 \
+ ipq-wifi-elecom_wrc-x3000gs2
endef
TARGET_DEVICES += elecom_wrc-x3000gs2
@@ -65,7 +66,7 @@ define Device/glinet_gl-b3000
IMAGES := factory.img sysupgrade.bin
IMAGE/factory.img := append-ubi | gl-qsdk-factory | append-metadata
DEVICE_PACKAGES := \
- ath11k-firmware-qcn6122 \
+ ath11k-firmware-ipq5018-qcn6122 \
ipq-wifi-glinet_gl-b3000 \
dumpimage
endef
@@ -85,7 +86,8 @@ define Device/iodata_wn-dax3000gr
IMAGES += factory.bin
IMAGE/factory.bin := append-ubi | qsdk-ipq-factory-nand | \
mstc-header 4.04(XZH.1)b90 0x480
- DEVICE_PACKAGES := ath11k-firmware-qcn6122 ipq-wifi-iodata_wn-dax3000gr
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018-qcn6122 \
+ ipq-wifi-iodata_wn-dax3000gr
endef
TARGET_DEVICES += iodata_wn-dax3000gr
@@ -106,7 +108,8 @@ define Device/linksys_mr5500
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := MR5500
DEVICE_DTS_CONFIG := config at mp03.1
- DEVICE_PACKAGES := kmod-ath11k-pci \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-linksys_mr5500 \
kmod-usb-ledtrig-usbport
@@ -117,7 +120,7 @@ define Device/linksys_mx2000
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := MX2000
DEVICE_DTS_CONFIG := config at mp03.5-c1
- DEVICE_PACKAGES := ath11k-firmware-qcn6122 \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018-qcn6122 \
ipq-wifi-linksys_mx2000
endef
TARGET_DEVICES += linksys_mx2000
@@ -126,7 +129,8 @@ define Device/linksys_mx5500
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := MX5500
DEVICE_DTS_CONFIG := config at mp03.1
- DEVICE_PACKAGES := kmod-ath11k-pci \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-linksys_mx5500
endef
@@ -136,7 +140,8 @@ define Device/linksys_spnmx56
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := SPNMX56
DEVICE_DTS_CONFIG := config at mp03.1
- DEVICE_PACKAGES := kmod-ath11k-pci \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-linksys_spnmx56
endef
@@ -153,7 +158,8 @@ define Device/xiaomi_ax6000
SOC := ipq5018
KERNEL_SIZE := 36864k
NAND_SIZE := 128m
- DEVICE_PACKAGES := kmod-ath11k-pci \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
kmod-ath10k-ct-smallbuffers \
ath10k-firmware-qca9887-ct \
@@ -174,8 +180,7 @@ define Device/yuncore_ax830
PAGESIZE := 2048
SOC := ipq5018
DEVICE_DTS_CONFIG := config at mp03.5-c1
- DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
- ath11k-firmware-qcn6122 \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018-qcn6122 \
ipq-wifi-yuncore_ax830
endef
TARGET_DEVICES += yuncore_ax830
@@ -189,8 +194,8 @@ define Device/yuncore_ax850
PAGESIZE := 2048
SOC := ipq5018
DEVICE_DTS_CONFIG := config at mp03.1
- DEVICE_PACKAGES := kmod-ath11k-pci \
- ath11k-firmware-ipq5018 \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-yuncore_ax850
endef
diff --git a/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
index 00591ab8b5..c34aadf7d4 100644
--- a/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
+++ b/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
@@ -44,7 +44,7 @@ case "$FIRMWARE" in
;;
esac
;;
-"ath11k/QCN6122/hw1.0/cal-ahb-b00a040.wifi1.bin")
+"ath11k/QCN6122/hw1.0/cal-ahb-b00a040.wifi.bin")
case "$board" in
elecom,wrc-x3000gs2|\
iodata,wn-dax3000gr)
diff --git a/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate b/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate
index d3ad319a31..d3460db582 100644
--- a/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate
+++ b/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/ieee80211/05-wifi-migrate
@@ -48,6 +48,13 @@ migrate_radio()
WIRELESS_CHANGED=false
case "$(board_name)" in
+elecom,wrc-x3000gs2|\
+glinet,gl-b3000|\
+iodata,wn-dax3000gr|\
+linksys,mx2000|\
+yuncore,ax830)
+ migrate_radio 'platform/soc at 0/b00a040.wifi1' 'platform/soc at 0/b00a040.wifi'
+ ;;
linksys,mr5500|\
linksys,mx5500|\
linksys,spnmx56)
diff --git a/target/linux/qualcommax/ipq50xx/target.mk b/target/linux/qualcommax/ipq50xx/target.mk
index 2e68329265..62b05a7fc3 100644
--- a/target/linux/qualcommax/ipq50xx/target.mk
+++ b/target/linux/qualcommax/ipq50xx/target.mk
@@ -1,6 +1,5 @@
SUBTARGET:=ipq50xx
BOARDNAME:=Qualcomm Atheros IPQ50xx
-DEFAULT_PACKAGES += ath11k-firmware-ipq5018
define Target/Description
Build firmware images for Qualcomm Atheros IPQ50xx based boards.
diff --git a/target/linux/qualcommax/patches-6.12/0189-arm64-dts-qcom-ipq5018-add-nodes-to-bringup-q6.patch b/target/linux/qualcommax/patches-6.12/0189-arm64-dts-qcom-ipq5018-add-nodes-to-bringup-q6.patch
new file mode 100644
index 0000000000..6667e1c081
--- /dev/null
+++ b/target/linux/qualcommax/patches-6.12/0189-arm64-dts-qcom-ipq5018-add-nodes-to-bringup-q6.patch
@@ -0,0 +1,101 @@
+From 553461c1f1ae9b2ac50bce5ed5de15092cc04d29 Mon Sep 17 00:00:00 2001
+From: George Moussalem <george.moussalem at outlook.com>
+Date: Tue, 21 Oct 2025 15:38:32 +0400
+Subject: [PATCH v6 5/8] arm64: dts: qcom: ipq5018: add nodes to bringup q6
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 7bit
+Message-Id: <20251021-ipq5018-wifi-v6-5-c55c547df6fc at outlook.com>
+
+Enable nodes required for q6 remoteproc bring up.
+
+Signed-off-by: George Moussalem <george.moussalem at outlook.com>
+---
+ arch/arm64/boot/dts/qcom/ipq5018.dtsi | 62 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 62 insertions(+)
+
+--- a/arch/arm64/boot/dts/qcom/ipq5018.dtsi
++++ b/arch/arm64/boot/dts/qcom/ipq5018.dtsi
+@@ -158,6 +158,11 @@
+ reg = <0x0 0x4ac00000 0x0 0x200000>;
+ no-map;
+ };
++
++ q6_region: wcss at 4b000000 {
++ reg = <0x0 0x4b000000 0x0 0x1b00000>;
++ no-map;
++ };
+ };
+
+ soc: soc at 0 {
+@@ -717,6 +722,41 @@
+ };
+ };
+
++ q6v5_wcss: remoteproc at cd00000 {
++ compatible = "qcom,ipq5018-wcss-sec-pil";
++ reg = <0x0cd00000 0x10000>;
++ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mbn";
++ interrupts-extended = <&intc GIC_SPI 291 IRQ_TYPE_EDGE_RISING>,
++ <&wcss_smp2p_in 0 IRQ_TYPE_NONE>,
++ <&wcss_smp2p_in 1 IRQ_TYPE_NONE>,
++ <&wcss_smp2p_in 2 IRQ_TYPE_NONE>,
++ <&wcss_smp2p_in 3 IRQ_TYPE_NONE>;
++ interrupt-names = "wdog",
++ "fatal",
++ "ready",
++ "handover",
++ "stop-ack";
++
++ clocks = <&gcc GCC_SLEEP_CLK_SRC>,
++ <&gcc GCC_SYS_NOC_WCSS_AHB_CLK>;
++ clock-names = "sleep",
++ "interconnect";
++
++ qcom,smem-states = <&wcss_smp2p_out 0>,
++ <&wcss_smp2p_out 1>;
++ qcom,smem-state-names = "shutdown",
++ "stop";
++
++ memory-region = <&q6_region>;
++
++ glink-edge {
++ interrupts = <GIC_SPI 179 IRQ_TYPE_EDGE_RISING>;
++ label = "rtr";
++ qcom,remote-pid = <1>;
++ mboxes = <&apcs_glb 8>;
++ };
++ };
++
+ pcie1: pcie at 80000000 {
+ compatible = "qcom,pcie-ipq5018";
+ reg = <0x80000000 0xf1d>,
+@@ -991,4 +1031,28 @@
+ <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+ };
++
++ wcss: smp2p-wcss {
++ compatible = "qcom,smp2p";
++ qcom,smem = <435>, <428>;
++
++ interrupt-parent = <&intc>;
++ interrupts = <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>;
++
++ mboxes = <&apcs_glb 9>;
++
++ qcom,local-pid = <0>;
++ qcom,remote-pid = <1>;
++
++ wcss_smp2p_out: master-kernel {
++ qcom,entry-name = "master-kernel";
++ #qcom,smem-state-cells = <1>;
++ };
++
++ wcss_smp2p_in: slave-kernel {
++ qcom,entry-name = "slave-kernel";
++ interrupt-controller;
++ #interrupt-cells = <2>;
++ };
++ };
+ };
diff --git a/target/linux/qualcommax/patches-6.12/0306-arm64-dts-qcom-ipq5018-Add-PWM-node.patch b/target/linux/qualcommax/patches-6.12/0306-arm64-dts-qcom-ipq5018-Add-PWM-node.patch
index 74b82ea0a0..5272a57465 100644
--- a/target/linux/qualcommax/patches-6.12/0306-arm64-dts-qcom-ipq5018-Add-PWM-node.patch
+++ b/target/linux/qualcommax/patches-6.12/0306-arm64-dts-qcom-ipq5018-Add-PWM-node.patch
@@ -8,7 +8,7 @@ Signed-off-by: George Moussalem <george.moussalem at outlook.com>
---
--- a/arch/arm64/boot/dts/qcom/ipq5018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5018.dtsi
-@@ -453,6 +453,16 @@
+@@ -458,6 +458,16 @@
reg = <0x01937000 0x21000>;
};
diff --git a/target/linux/qualcommax/patches-6.12/0715-arm64-dts-qcom-ipq5018-add-vendor-compatible-to-mdio-node.patch b/target/linux/qualcommax/patches-6.12/0715-arm64-dts-qcom-ipq5018-add-vendor-compatible-to-mdio-node.patch
index 18272f3d9a..7250f93424 100644
--- a/target/linux/qualcommax/patches-6.12/0715-arm64-dts-qcom-ipq5018-add-vendor-compatible-to-mdio-node.patch
+++ b/target/linux/qualcommax/patches-6.12/0715-arm64-dts-qcom-ipq5018-add-vendor-compatible-to-mdio-node.patch
@@ -9,7 +9,7 @@ aren't upstreamed, add the vendor compatible.
Signed-off-by: George Moussalem <george.moussalem at outlook.com>
--- a/arch/arm64/boot/dts/qcom/ipq5018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5018.dtsi
-@@ -214,7 +214,7 @@
+@@ -219,7 +219,7 @@
};
mdio0: mdio at 88000 {
diff --git a/target/linux/qualcommax/patches-6.12/0816-arm64-dts-qcom-ipq5018-add-wifi-support.patch b/target/linux/qualcommax/patches-6.12/0816-arm64-dts-qcom-ipq5018-add-wifi-support.patch
index c4575e6c91..d3e5c58940 100644
--- a/target/linux/qualcommax/patches-6.12/0816-arm64-dts-qcom-ipq5018-add-wifi-support.patch
+++ b/target/linux/qualcommax/patches-6.12/0816-arm64-dts-qcom-ipq5018-add-wifi-support.patch
@@ -13,67 +13,66 @@ Signed-off-by: George Moussalem <george.moussalem at outlook.com>
---
--- a/arch/arm64/boot/dts/qcom/ipq5018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5018.dtsi
-@@ -727,6 +727,225 @@
+@@ -732,6 +732,118 @@
};
};
-+ wifi0: wifi at c000000 {
++ wifi: wifi at c000000 {
+ compatible = "qcom,ipq5018-wifi";
-+ reg = <0xc000000 0x1000000>;
++ reg = <0x0c000000 0x1000000>;
+
+ interrupts = <GIC_SPI 288 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 289 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 290 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 291 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 292 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 293 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 294 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 295 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 296 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 297 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 298 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 299 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 300 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 301 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 302 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 303 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 304 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 305 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 306 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 307 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 308 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 310 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 312 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 313 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 315 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 316 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 317 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 319 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 320 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 321 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 322 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 323 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 324 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 325 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 326 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 327 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 328 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 329 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 331 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 332 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 333 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 334 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 335 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 336 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 337 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 338 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 339 IRQ_TYPE_EDGE_RISING>;
-+
++ <GIC_SPI 289 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 290 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 291 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 292 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 293 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 294 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 295 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 296 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 297 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 298 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 299 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 300 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 301 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 302 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 303 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 304 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 305 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 306 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 307 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 308 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 310 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 312 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 313 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 315 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 316 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 317 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 319 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 320 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 321 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 322 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 323 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 324 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 325 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 326 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 327 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 328 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 329 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 331 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 332 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 333 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 334 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 335 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 336 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 337 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 338 IRQ_TYPE_EDGE_RISING>,
++ <GIC_SPI 339 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "misc-pulse1",
+ "misc-latch",
+ "sw-exception",
@@ -130,112 +129,6 @@ Signed-off-by: George Moussalem <george.moussalem at outlook.com>
+ status = "disabled";
+ };
+
-+ //QCN6102 5G
-+ wifi1: wifi1 at c000000 {
-+ reg = <0x0b00a040 0x0>;
-+ compatible = "qcom,qcn6122-wifi";
-+ interrupts = <GIC_SPI 416 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 417 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 418 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 419 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 420 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 421 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 422 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 423 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 424 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 425 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 426 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 427 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 428 IRQ_TYPE_EDGE_RISING>;
-+ status = "disabled";
-+ };
-+
-+ //QCN6122 5G/6G
-+ wifi2: wifi2 at c000000 {
-+ reg = <0x0b00a040 0x0>;
-+ compatible = "qcom,qcn6122-wifi";
-+ interrupts = <GIC_SPI 448 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 450 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 451 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 452 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 453 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 454 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 455 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 456 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 457 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 458 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 459 IRQ_TYPE_EDGE_RISING>,
-+ <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
-+ status = "disabled";
-+ };
-+
-+ q6v5_wcss: remoteproc at cd00000 {
-+ compatible = "qcom,ipq5018-q6-mpd";
-+ reg = <0x0cd00000 0x4040>;
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+ ranges;
-+
-+ clocks = <&gcc GCC_XO_CLK>,
-+ <&gcc GCC_SLEEP_CLK_SRC>,
-+ <&gcc GCC_SYS_NOC_WCSS_AHB_CLK>;
-+
-+ interrupts-extended = <&intc GIC_SPI 291 IRQ_TYPE_EDGE_RISING>,
-+ <&wcss_smp2p_in 0 IRQ_TYPE_NONE>,
-+ <&wcss_smp2p_in 1 IRQ_TYPE_NONE>,
-+ <&wcss_smp2p_in 2 IRQ_TYPE_NONE>,
-+ <&wcss_smp2p_in 3 IRQ_TYPE_NONE>;
-+ interrupt-names = "wdog",
-+ "fatal",
-+ "ready",
-+ "handover",
-+ "stop-ack";
-+
-+ qcom,smem-states = <&wcss_smp2p_out 0>,
-+ <&wcss_smp2p_out 1>;
-+ qcom,smem-state-names = "shutdown",
-+ "stop";
-+
-+ status = "disabled";
-+
-+ glink-edge {
-+ interrupts = <GIC_SPI 179 IRQ_TYPE_EDGE_RISING>;
-+ label = "rtr";
-+ qcom,remote-pid = <1>;
-+ mboxes = <&apcs_glb 8>;
-+
-+ qrtr_requests {
-+ qcom,glink-channels = "IPCRTR";
-+ };
-+ };
-+ };
-+
-+ wcss: smp2p-wcss {
-+ compatible = "qcom,smp2p";
-+ qcom,smem = <435>, <428>;
-+
-+ interrupt-parent = <&intc>;
-+ interrupts = <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>;
-+
-+ mboxes = <&apcs_glb 9>;
-+
-+ qcom,local-pid = <0>;
-+ qcom,remote-pid = <1>;
-+
-+ wcss_smp2p_out: master-kernel {
-+ qcom,entry-name = "master-kernel";
-+ qcom,smp2p-feature-ssr-ack;
-+ #qcom,smem-state-cells = <1>;
-+ };
-+
-+ wcss_smp2p_in: slave-kernel {
-+ qcom,entry-name = "slave-kernel";
-+ interrupt-controller;
-+ #interrupt-cells = <2>;
-+ };
-+ };
-+
- pcie1: pcie at 80000000 {
- compatible = "qcom,pcie-ipq5018";
- reg = <0x80000000 0xf1d>,
+ q6v5_wcss: remoteproc at cd00000 {
+ compatible = "qcom,ipq5018-wcss-sec-pil";
+ reg = <0x0cd00000 0x10000>;
More information about the lede-commits
mailing list