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
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
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
$(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) \
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))
gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions@4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
};
&sleep_clk {
};
&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>;
};
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
};
};
- reserved-memory {
- q6_mem_regions: q6_mem_regions@4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
-
gpio-watchdog {
compatible = "linux,wdt-gpio";
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
};
};
-&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>;
};
&wifi1 {
- // QCN6122 5G
status = "okay";
+
qcom,rproc = <&q6_wcss_pd3>;
qcom,userpd-subsys-name = "q6v5_wcss_userpd3";
qcom,ath11k-calibration-variant = "Yuncore-AX830";
};
};
- reserved-memory {
- q6_mem_regions: q6_mem_regions@4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
-
gpio-watchdog {
compatible = "linux,wdt-gpio";
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
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";
};
};
};
};
+
+&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>;
+};
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions@4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
};
&switch {
};
&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 */
/* 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>;
};
&wifi1 {
- // QCN6102 5G
status = "okay";
qcom,rproc = <&q6_wcss_pd3>;
};
&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";
};
max-brightness = <255>;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions@4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
};
&sleep_clk {
#include "ipq5018.dtsi"
#include "ipq5018-mx-base.dtsi"
+#include "ipq5018-qcn6122.dtsi"
/ {
model = "Linksys MX2000";
};
&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 = <
/* 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";
};
};
&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";
};
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
function = LED_FUNCTION_LAN;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions@4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- status = "disabled";
- };
- };
};
&sleep_clk {
*/
&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>;
--- /dev/null
+// 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@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@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";
+ };
+};
};
&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";
};
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
function = LED_FUNCTION_WAN;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions@4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- };
- };
};
&sleep_clk {
};
&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>;
#include "ipq5018.dtsi"
#include "ipq5018-ess.dtsi"
+#include "ipq5018-qcn6122.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
function = LED_FUNCTION_WAN;
};
};
-
- reserved-memory {
- q6_mem_regions: q6_mem_regions@4b000000 {
- no-map;
- reg = <0x0 0x4b000000 0x0 0x3000000>;
- status = "disabled";
- };
- };
};
&sleep_clk {
&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";
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";
qcom,m3-dump-addr = <0x4df00000>;
ieee80211-freq-limit = <5150000 5730000>;
-
- status = "disabled";
};
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
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
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
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := MR5500
- DEVICE_PACKAGES := kmod-ath11k-pci \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-linksys_mr5500 \
kmod-usb-ledtrig-usbport
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := MX2000
- DEVICE_PACKAGES := ath11k-firmware-qcn6122 \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018-qcn6122 \
ipq-wifi-linksys_mx2000
endef
TARGET_DEVICES += linksys_mx2000
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := MX5500
- DEVICE_PACKAGES := kmod-ath11k-pci \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-linksys_mx5500
endef
$(call Device/linksys_ipq50xx_mx_base)
DEVICE_MODEL := SPNMX56
- DEVICE_PACKAGES := kmod-ath11k-pci \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-linksys_spnmx56
endef
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 \
PAGESIZE := 2048
SOC := ipq5018
- DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
- ath11k-firmware-qcn6122 \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018-qcn6122 \
ipq-wifi-yuncore_ax830
endef
TARGET_DEVICES += yuncore_ax830
PAGESIZE := 2048
SOC := ipq5018
- DEVICE_PACKAGES := kmod-ath11k-pci \
- ath11k-firmware-ipq5018 \
+ DEVICE_PACKAGES := ath11k-firmware-ipq5018 \
+ kmod-ath11k-pci \
ath11k-firmware-qcn9074 \
ipq-wifi-yuncore_ax850
endef
;;
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)
WIRELESS_CHANGED=false
case "$(board_name)" in
+elecom,wrc-x3000gs2|\
+glinet,gl-b3000|\
+iodata,wn-dax3000gr|\
+linksys,mx2000|\
+yuncore,ax830)
+ migrate_radio 'platform/soc@0/b00a040.wifi1' 'platform/soc@0/b00a040.wifi'
+ ;;
linksys,mr5500|\
linksys,mx5500|\
linksys,spnmx56)
SUBTARGET:=ipq50xx
BOARDNAME:=Qualcomm Atheros IPQ50xx
-DEFAULT_PACKAGES += ath11k-firmware-ipq5018
define Target/Description
Build firmware images for Qualcomm Atheros IPQ50xx based boards.
--- /dev/null
+From 553461c1f1ae9b2ac50bce5ed5de15092cc04d29 Mon Sep 17 00:00:00 2001
+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
+
+Enable nodes required for q6 remoteproc bring up.
+
+---
+ 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@4b000000 {
++ reg = <0x0 0x4b000000 0x0 0x1b00000>;
++ no-map;
++ };
+ };
+
+ soc: soc@0 {
+@@ -717,6 +722,41 @@
+ };
+ };
+
++ q6v5_wcss: remoteproc@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@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>;
++ };
++ };
+ };
---
--- 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>;
};
--- 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@88000 {
---
--- 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@c000000 {
++ wifi: wifi@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",
+ status = "disabled";
+ };
+
-+ //QCN6102 5G
-+ wifi1: wifi1@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@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@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@80000000 {
- compatible = "qcom,pcie-ipq5018";
- reg = <0x80000000 0xf1d>,
+ q6v5_wcss: remoteproc@cd00000 {
+ compatible = "qcom,ipq5018-wcss-sec-pil";
+ reg = <0x0cd00000 0x10000>;