mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2025-12-10 08:44:39 +01:00
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@outlook.com> Link: https://github.com/openwrt/openwrt/pull/20928 Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
parent
00d61da588
commit
1f879b8839
22 changed files with 383 additions and 992 deletions
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -84,13 +84,6 @@
|
|||
gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
q6_mem_regions: q6_mem_regions@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>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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@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";
|
||||
|
|
|
|||
|
|
@ -65,13 +65,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
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>;
|
||||
|
|
@ -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>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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@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>;
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -62,13 +62,6 @@
|
|||
max-brightness = <255>;
|
||||
};
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
q6_mem_regions: q6_mem_regions@4b000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4b000000 0x0 0x3000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&sleep_clk {
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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@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>;
|
||||
|
|
|
|||
|
|
@ -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@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";
|
||||
};
|
||||
};
|
||||
|
|
@ -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";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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@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>;
|
||||
|
|
|
|||
|
|
@ -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@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";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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@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@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@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@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@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@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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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@0/b00a040.wifi1' 'platform/soc@0/b00a040.wifi'
|
||||
;;
|
||||
linksys,mr5500|\
|
||||
linksys,mx5500|\
|
||||
linksys,spnmx56)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,101 @@
|
|||
From 553461c1f1ae9b2ac50bce5ed5de15092cc04d29 Mon Sep 17 00:00:00 2001
|
||||
From: George Moussalem <george.moussalem@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@outlook.com>
|
||||
|
||||
Enable nodes required for q6 remoteproc bring up.
|
||||
|
||||
Signed-off-by: George Moussalem <george.moussalem@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@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>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
|
@ -8,7 +8,7 @@ Signed-off-by: George Moussalem <george.moussalem@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>;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ aren't upstreamed, add the vendor compatible.
|
|||
Signed-off-by: George Moussalem <george.moussalem@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@88000 {
|
||||
|
|
|
|||
|
|
@ -13,67 +13,66 @@ Signed-off-by: George Moussalem <george.moussalem@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@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",
|
||||
|
|
@ -130,112 +129,6 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
|
|||
+ 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>;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue