From nobody Mon Feb 9 11:38:11 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C41CE2BEC30; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748000; cv=none; b=kItTT8gjiLXIct+mad4vylnpgpI5aCvkBW9k1COMCW6xIxKn4mpXQrFYPpF2PWC3o1I8RlNaRZLOl8yqKe4oTCeN3n5lwGf233ut3Wdc4Rh7un30bDi13VMVx/zDiE2GTo7XbSepaGAING2u1rSFY0JKO/jDu2fhikBtMqC31Qc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748000; c=relaxed/simple; bh=uAFaddzt+o5Jaxvpc4u0qmiEWtTqty66JcCDtI2hth0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=L2xr2o1SNHTAKyh9xRiX0nWPvmBkm7B4dtMvZqJ32QlXc0AYq4wEdB7XPrBl0jYctZBfhq3UxpgoJMVK4IOdJTjAzJhyedDEUzZTypagkk6AGU8GBcwEZBKbNrV1Dia1VBw/inoik0JkpSKV4qccEE9IwEkUFFFpx43TxVF4Pqg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HWOzqi9B; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HWOzqi9B" Received: by smtp.kernel.org (Postfix) with ESMTPS id 63B83C4CEFF; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1761748000; bh=uAFaddzt+o5Jaxvpc4u0qmiEWtTqty66JcCDtI2hth0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=HWOzqi9Bxd3FHXRdr4CFX8V6rgdrLULLiUfNUWKA/TnH4K7W3ygUUHvKfbUvD0n9F BCqxIgLQ5YSqLKGJhQfVffKJlhU2lixUy0mBbkq0/UKfTw/NuFGQ8B65RAom6Sig3Z tp96yXpR5vz77Jf/I2EgXD8p8E1XS1NZjwe54BV0an2KV/zmTIKukPEWHUD8dTxCEZ WfgUvcP9Wij5fM8zSwBTtY8dgXuGFfMMlb7Kr5LUrp2YlE8s3gPo8dBO9ZTPaMxAze CWuUOXbOe7cIILBSW/Gnwl00ScbPjNsMYHG2PS5XsalV1tW11ELXqmwjrb4ZdmBoAD 1jUDYwUg4e4VQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A06FCCF9EB; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) From: George Moussalem via B4 Relay Date: Wed, 29 Oct 2025 18:26:22 +0400 Subject: [PATCH 1/6] dt: bindings: net: add bindings for QCN6122 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251029-ath11k-qcn6122-v1-1-58ed68eba333@outlook.com> References: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> In-Reply-To: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> To: Johannes Berg , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jeff Johnson Cc: linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, ath11k@lists.infradead.org, linux-kernel@vger.kernel.org, George Moussalem X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761747997; l=4199; i=george.moussalem@outlook.com; s=20250321; h=from:subject:message-id; bh=8oCgkx2tBE/XoLjt2QmaWVlpynCUGOtanyX8ad9w9XQ=; b=+Lg/GmnlljSyRRhc0gmBi4zkwu92ultczCM8t+AFO50E/X2H02QHzXOZ5sQq/NWMTJ4ecsWAg BpYCx8WZCEsAmjBNYcHAARzuXPOGOojbgr8hchE+sS28bDo9FeHSEGM X-Developer-Key: i=george.moussalem@outlook.com; a=ed25519; pk=/PuRTSI9iYiHwcc6Nrde8qF4ZDhJBlUgpHdhsIjnqIk= X-Endpoint-Received: by B4 Relay for george.moussalem@outlook.com/20250321 with auth_id=364 X-Original-From: George Moussalem Reply-To: george.moussalem@outlook.com From: George Moussalem QCN6122 is a PCIe based solution that is attached to and enumerated by the WPSS (Wireless Processor SubSystem) Q6 processor. Though it is a PCIe device, since it is not attached to APSS processor (Application Processor SubSystem), APSS will be unaware of such a decice so it is registered to the APSS processor as a platform device(AHB). Because of this hybrid nature, it is called as a hybrid bus device as introduced by WCN6750. It has 5 CE and 8 DP rings. QCN6122 is similar to WCN6750 and follows the same codepath as for WCN6750. Signed-off-by: George Moussalem --- .../bindings/net/wireless/qcom,ath11k.yaml | 57 ++++++++++++++++++= +++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yam= l b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml index c089677702cf17f3016b054d21494d2a7706ce5d..4b0b282bb9231c8bc496fed42e0= 917b9d7d106d2 100644 --- a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml @@ -21,12 +21,13 @@ properties: - qcom,ipq6018-wifi - qcom,wcn6750-wifi - qcom,ipq5018-wifi + - qcom,qcn6122-wifi =20 reg: maxItems: 1 =20 interrupts: - minItems: 32 + minItems: 13 maxItems: 52 =20 interrupt-names: @@ -87,6 +88,14 @@ properties: items: - const: wlan-smp2p-out =20 + qcom,userpd: + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [2, 3] + description: instance ID of user PD (protection domain) in multi-PD + architectures to distinguish between multiple instances + of the same wifi chip used by QMI in its interface with + the firmware running on Q6. + required: - compatible - reg @@ -268,6 +277,31 @@ allOf: - description: interrupt event for ring DP20 - description: interrupt event for ring DP21 - description: interrupt event for ring DP22 + - if: + properties: + compatible: + contains: + enum: + - qcom,qcn6122-wifi + then: + required: + - qcom,userpd + properties: + interrupts: + items: + - description: interrupt event for ring CE1 + - description: interrupt event for ring CE2 + - description: interrupt event for ring CE3 + - description: interrupt event for ring CE4 + - description: interrupt event for ring CE5 + - description: interrupt event for ring DP1 + - description: interrupt event for ring DP2 + - description: interrupt event for ring DP3 + - description: interrupt event for ring DP4 + - description: interrupt event for ring DP5 + - description: interrupt event for ring DP6 + - description: interrupt event for ring DP7 + - description: interrupt event for ring DP8 =20 examples: - | @@ -467,3 +501,24 @@ examples: iommus =3D <&apps_smmu 0x1c02 0x1>; }; }; + + - | + wifi1: wifi@b00a040 { + reg =3D <0x0b00a040 0x0>; + compatible =3D "qcom,qcn6122-wifi"; + interrupts =3D , + , + , + , + , + , + , + , + , + , + , + , + ; + qcom,rproc =3D <&q6v5_wcss_pd2>; + qcom,userpd =3D <2>; + }; --=20 2.51.1 From nobody Mon Feb 9 11:38:11 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C415D2BE7C2; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748000; cv=none; b=V7wA6Fop0rtfO4PbnqERxq/DrUIDTICwr+7y6VMQ1R9qJx/iughLdC0FoxRJk3YziETOXJeG14wXl34WAoMLadaY05ZhIQZLzU1cn6CFvfWe3n0rx08hnUB+0SdigyI+mlcHjFutqJOekODJhSbp26FTwMDN3dG1ObKK5CvmfgY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748000; c=relaxed/simple; bh=mItrEmeR9FU3VM2ptXFfKvshAvAcV9+BLLTvG3OGXks=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CHpE7VbFYbTFT1qlGf1jrjUqHAqP9Qhht3LnECbcov1fZU0Oagy7qYxevyvfepnVWkMPqhTuFzSzdr7wEUGTLQgoKCzNHi3shTGmVQsqxJg45Yx+3QcQ+Y7ok6Y+iAaB/U0m6aNbGL0SUwMYJ9EAqCw6qSXqWw1LTlTpPYEXl6A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SJyg0WvW; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SJyg0WvW" Received: by smtp.kernel.org (Postfix) with ESMTPS id 71245C116D0; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1761748000; bh=mItrEmeR9FU3VM2ptXFfKvshAvAcV9+BLLTvG3OGXks=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=SJyg0WvWtx67Cjh+ZefA1l69/7T9iwBn9QnmnLTQCZIAyWhsDACzhLsr4I1UIXWEs sxoMEPuvLhY/2tg5QgkBqlNotG9DM9z9YXBu+ccELW/2dNOeGpJMKwcsnHKEZRu2H8 bryuYAfrQv4Hnf+vy6AsPNHehtMuQKO7XjkKIRfAJFQzP9QL7tp9FHRqShtoR+0TzQ f65Rbh2UFhuRKkiJ/57gZwuOJBYSNRD01aLhrv7SVti4MBMpAgMitv9FLq92iu+g0i iIeQKVoA4NaQ8xz1RuxrYUTH4OYcOPBqtSGDZC8gPvNFWqlp6kP74I+EZO8EiQU7X9 CcuBa7zZXyYEg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5B2DDCCF9F6; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) From: George Moussalem via B4 Relay Date: Wed, 29 Oct 2025 18:26:23 +0400 Subject: [PATCH 2/6] wifi: ath11k: add hw params for QCN6122 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251029-ath11k-qcn6122-v1-2-58ed68eba333@outlook.com> References: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> In-Reply-To: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> To: Johannes Berg , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jeff Johnson Cc: linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, ath11k@lists.infradead.org, linux-kernel@vger.kernel.org, George Moussalem X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761747997; l=4833; i=george.moussalem@outlook.com; s=20250321; h=from:subject:message-id; bh=336+JRp6PC1s0koOSi14k/NRUhAY+mOyBfj5s8eLX8o=; b=Y08LUfTlUvGw10fN0S/pS3+157GXIWOr8HGsSX5NmErFynLJxOd4MCO0DqxDIRAMUox5IVfTn +C2CxiOa616CGcViwJTkqWJ69Ikj1KMOdjb7nS90S5gaLrByptYjRKO X-Developer-Key: i=george.moussalem@outlook.com; a=ed25519; pk=/PuRTSI9iYiHwcc6Nrde8qF4ZDhJBlUgpHdhsIjnqIk= X-Endpoint-Received: by B4 Relay for george.moussalem@outlook.com/20250321 with auth_id=364 X-Original-From: George Moussalem Reply-To: george.moussalem@outlook.com From: George Moussalem Add QCN6122 platform support. QCN6122 is a PCIe based solution that is attached to and enumerated by the WPSS (Wireless Processor SubSystem) Q6 processor. Though it is a PCIe device, since it is not attached to APSS processor (Application Processor SubSystem), APSS will be unaware of such a decice so it is registered to the APSS processor as a platform device (AHB). Because of this hybrid nature, it is called as a hybrid bus device. QCN6122 is similar to WCN6750 and follows the same codepath as for WCN6750 though it does not support shadow regs. Signed-off-by: George Moussalem --- drivers/net/wireless/ath/ath11k/core.c | 67 ++++++++++++++++++++++++++++++= ++++ drivers/net/wireless/ath/ath11k/core.h | 1 + drivers/net/wireless/ath/ath11k/qmi.h | 3 +- 3 files changed, 70 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/= ath/ath11k/core.c index 2810752260f2f7eee226f88d5aea7cdabe7e9ed4..401b843402c6cca0e7fdd61e68b= 57fa6d5a6ae7e 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -907,6 +907,73 @@ static const struct ath11k_hw_params ath11k_hw_params[= ] =3D { .support_dual_stations =3D true, .pdev_suspend =3D false, }, + { + .hw_rev =3D ATH11K_HW_QCN6122_HW10, + .name =3D "qcn6122 hw1.0", + .fw =3D { + .dir =3D "QCN6122/hw1.0", + .board_size =3D 256 * 1024, + .cal_offset =3D 128 * 1024, + }, + .hal_params =3D &ath11k_hw_hal_params_ipq8074, + .max_radios =3D MAX_RADIOS_5018, + .bdf_addr =3D 0x4D200000, + .hw_ops =3D &ipq5018_ops, + .hal_desc_sz =3D sizeof(struct hal_rx_desc_qcn9074), + .qmi_service_ins_id =3D ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCN6122, + .interface_modes =3D BIT(NL80211_IFTYPE_STATION) | + BIT(NL80211_IFTYPE_AP) | + BIT(NL80211_IFTYPE_MESH_POINT), + .spectral =3D { + .fft_sz =3D 2, + .fft_pad_sz =3D 0, + .summary_pad_sz =3D 16, + .fft_hdr_len =3D 24, + .max_fft_bins =3D 1024, + }, + .internal_sleep_clock =3D false, + .regs =3D &wcn6750_regs, + .credit_flow =3D false, + .max_tx_ring =3D 1, + .supports_monitor =3D true, + .supports_shadow_regs =3D false, + .idle_ps =3D false, + .supports_suspend =3D false, + .host_ce_config =3D ath11k_host_ce_config_qcn9074, + .ce_count =3D CE_CNT_5018, + .target_ce_config =3D ath11k_target_ce_config_wlan_ipq5018, + .target_ce_count =3D TARGET_CE_CNT_5018, + .svc_to_ce_map =3D ath11k_target_service_to_ce_map_wlan_ipq5018, + .svc_to_ce_map_len =3D SVC_CE_MAP_LEN_5018, + .single_pdev_only =3D false, + .rxdma1_enable =3D true, + .num_rxdma_per_pdev =3D RXDMA_PER_PDEV_5018, + .rx_mac_buf_ring =3D false, + .vdev_start_delay =3D false, + .htt_peer_map_v2 =3D true, + .coldboot_cal_mm =3D false, + .coldboot_cal_ftm =3D false, + .cbcal_restart_fw =3D true, + .fix_l1ss =3D true, + .alloc_cacheable_memory =3D true, + .m3_fw_support =3D false, + .fixed_bdf_addr =3D true, + .fixed_mem_region =3D true, + .static_window_map =3D true, + .hybrid_bus_type =3D true, + .fw_mem_mode =3D 1, + .supports_sta_ps =3D false, + .dbr_debug_support =3D true, + .bios_sar_capa =3D NULL, + .fixed_fw_mem =3D false, + .support_off_channel_tx =3D false, + .tcl_ring_retry =3D true, + .tx_ring_size =3D DP_TCL_DATA_RING_SIZE, + .smp2p_wow_exit =3D false, + .support_fw_mac_sequence =3D false, + .support_dual_stations =3D false, + .pdev_suspend =3D false, + }, }; =20 static const struct dmi_system_id ath11k_pm_quirk_table[] =3D { diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/= ath/ath11k/core.h index e8780b05ce11e39bdd93dd02d39812be90689b40..afc591f9608f48506bf19851169= 828c519661d72 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -152,6 +152,7 @@ enum ath11k_hw_rev { ATH11K_HW_IPQ5018_HW10, ATH11K_HW_QCA2066_HW21, ATH11K_HW_QCA6698AQ_HW21, + ATH11K_HW_QCN6122_HW10, }; =20 enum ath11k_firmware_mode { diff --git a/drivers/net/wireless/ath/ath11k/qmi.h b/drivers/net/wireless/a= th/ath11k/qmi.h index 7968ab122b65dc28a44eca7b34904f55f717f586..f6014b9662dbe5f4cfc6a2af701= 0938cad454267 100644 --- a/drivers/net/wireless/ath/ath11k/qmi.h +++ b/drivers/net/wireless/ath/ath11k/qmi.h @@ -22,10 +22,11 @@ #define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074 0x02 #define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCN9074 0x07 #define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_WCN6750 0x03 +#define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCN6122 0x40 #define ATH11K_QMI_WLANFW_MAX_TIMESTAMP_LEN_V01 32 #define ATH11K_QMI_RESP_LEN_MAX 8192 #define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 52 -#define ATH11K_QMI_CALDB_SIZE 0x480000 +#define ATH11K_QMI_CALDB_SIZE 0x500000 #define ATH11K_QMI_BDF_EXT_STR_LENGTH 0x20 #define ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT 5 =20 --=20 2.51.1 From nobody Mon Feb 9 11:38:11 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C42392BEC32; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748000; cv=none; b=m50G7ST1aJVx1sIZLyWllq1OPsLKPDhxUzpS41pS0cr59IfVaPY2Rrn3lQyxZznS/QCpc2cWJ1QSe/LeJAchWKr9E6I4HkvoQQQNRgZ9Jy3Xih9UryZ3J2lvs2vFlvE8CWApeWfBOclvK/Hqhq6hLvjb/ckwQ66axIT9QtaT4Qs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748000; c=relaxed/simple; bh=AtjMxj2RJkTu7x047fEmpxwycKxJKu/Y4UgyPp4JT2U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TnDJ6nVtUmJoxaq8qe4SCv4cP/35GpjuGH8g5YFUFy3Yo9UIBRoLElur/lepqLMxflqsFz2uvq8Lx9sDHcQ/EGf1xGl5YpHkcl0u21BS+hNobLFYNlSpcpwJIa1ZLlgJ87pc10CaN7S2Wmx3a3vFRtWubQ4UBA45ylxWk0XRpR0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UKymL+7v; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UKymL+7v" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7A181C116B1; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1761748000; bh=AtjMxj2RJkTu7x047fEmpxwycKxJKu/Y4UgyPp4JT2U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=UKymL+7vf4ctJnVjcsZtRD3JGJ/buIRHl51/x4BGUHIqB70HY4tBVqbrnlH+L3QKh eqD1N16AZzDyGT8054ODSxCLFEX7I8AKZnxmJ9jIYN7fOpkUHwXCQRNZZaYIu8wLiV sbHWmXjn/7v7UChbMY0tm9pBbeSXu6NMOLemsUmDUjPBhVCSkXKKwFwm/TCA/54VXI bMdk/OJWAx/ZEXdy7rKTk7Y7VHyJ3wmeQK8xCYyIRm48XU5z3Fc0SX4FGwjox4GwZf 7mE+IIXl/RBE6+pv/e9UT7EoN657dP/1qOspCLUCTVOMU1vHw+tJ9OrIwxA/ClacHX CmzImP+ZhlXCQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B341CCF9F7; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) From: George Moussalem via B4 Relay Date: Wed, 29 Oct 2025 18:26:24 +0400 Subject: [PATCH 3/6] wifi: ath11k: add hw ring mask for QCN6122 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251029-ath11k-qcn6122-v1-3-58ed68eba333@outlook.com> References: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> In-Reply-To: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> To: Johannes Berg , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jeff Johnson Cc: linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, ath11k@lists.infradead.org, linux-kernel@vger.kernel.org, George Moussalem X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761747997; l=3140; i=george.moussalem@outlook.com; s=20250321; h=from:subject:message-id; bh=F4MQL1JaTu6P90bDVdrVejjoMM5YwIv+d0BERrhNqeI=; b=jJQlYmAbR/J3UObt+0UXmeqgU+6hjMtwkUdTs/DKqfZdNPaHuzOYmCKW57tGq64BUlBkeNTMm 4liXEqZ3NfRB5ulQxmBEo5LcNaVE5wvzBQmE2ruW6iKRd93jTqdujOM X-Developer-Key: i=george.moussalem@outlook.com; a=ed25519; pk=/PuRTSI9iYiHwcc6Nrde8qF4ZDhJBlUgpHdhsIjnqIk= X-Endpoint-Received: by B4 Relay for george.moussalem@outlook.com/20250321 with auth_id=364 X-Original-From: George Moussalem Reply-To: george.moussalem@outlook.com From: George Moussalem Add ring mask for QCN6122 and register them in hw params. Signed-off-by: George Moussalem --- drivers/net/wireless/ath/ath11k/core.c | 1 + drivers/net/wireless/ath/ath11k/hw.c | 37 ++++++++++++++++++++++++++++++= ++++ drivers/net/wireless/ath/ath11k/hw.h | 1 + 3 files changed, 39 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/= ath/ath11k/core.c index 401b843402c6cca0e7fdd61e68b57fa6d5a6ae7e..b8ed8b673516855e6596d519c82= 34f4e230b6a2f 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -919,6 +919,7 @@ static const struct ath11k_hw_params ath11k_hw_params[]= =3D { .max_radios =3D MAX_RADIOS_5018, .bdf_addr =3D 0x4D200000, .hw_ops =3D &ipq5018_ops, + .ring_mask =3D &ath11k_hw_ring_mask_qcn6122, .hal_desc_sz =3D sizeof(struct hal_rx_desc_qcn9074), .qmi_service_ins_id =3D ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCN6122, .interface_modes =3D BIT(NL80211_IFTYPE_STATION) | diff --git a/drivers/net/wireless/ath/ath11k/hw.c b/drivers/net/wireless/at= h/ath11k/hw.c index caa6dc12a790b5072d5453ac123a604cf440a20a..56e7f86f2878f87aab42ae6abe5= 04949b44297cc 100644 --- a/drivers/net/wireless/ath/ath11k/hw.c +++ b/drivers/net/wireless/ath/ath11k/hw.c @@ -2070,6 +2070,43 @@ const struct ath11k_hw_ring_mask ath11k_hw_ring_mask= _wcn6750 =3D { }, }; =20 +const struct ath11k_hw_ring_mask ath11k_hw_ring_mask_qcn6122 =3D { + .tx =3D { + ATH11K_TX_RING_MASK_0, + ATH11K_TX_RING_MASK_1, + ATH11K_TX_RING_MASK_2, + }, + .rx_mon_status =3D { + 0, 0, 0, + ATH11K_RX_MON_STATUS_RING_MASK_0, + }, + .rx =3D { + 0, 0, 0, 0, + ATH11K_RX_RING_MASK_0, + ATH11K_RX_RING_MASK_1, + ATH11K_RX_RING_MASK_2, + ATH11K_RX_RING_MASK_3, + }, + .rx_err =3D { + 0, 0, 0, 0, 0, 0, 0, 0, + ATH11K_RX_ERR_RING_MASK_0, + }, + .rx_wbm_rel =3D { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + ATH11K_RX_WBM_REL_RING_MASK_0, + }, + .reo_status =3D { + 0, 0, 0, + ATH11K_REO_STATUS_RING_MASK_0, + }, + .rxdma2host =3D { + ATH11K_RXDMA2HOST_RING_MASK_0, + }, + .host2rxdma =3D { + ATH11K_HOST2RXDMA_RING_MASK_0, + }, +}; + /* Target firmware's Copy Engine configuration for IPQ5018 */ const struct ce_pipe_config ath11k_target_ce_config_wlan_ipq5018[] =3D { /* CE0: host->target HTC control and raw streams */ diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/at= h/ath11k/hw.h index 52d9f4c13b1366f2339b8900cf9db91e6ff1bcff..e7220c46de10c378ea5b452d78f= 921054ff54e54 100644 --- a/drivers/net/wireless/ath/ath11k/hw.h +++ b/drivers/net/wireless/ath/ath11k/hw.h @@ -285,6 +285,7 @@ extern const struct ath11k_hw_ring_mask ath11k_hw_ring_= mask_ipq8074; extern const struct ath11k_hw_ring_mask ath11k_hw_ring_mask_qca6390; extern const struct ath11k_hw_ring_mask ath11k_hw_ring_mask_qcn9074; extern const struct ath11k_hw_ring_mask ath11k_hw_ring_mask_wcn6750; +extern const struct ath11k_hw_ring_mask ath11k_hw_ring_mask_qcn6122; =20 extern const struct ce_ie_addr ath11k_ce_ie_addr_ipq8074; extern const struct ce_ie_addr ath11k_ce_ie_addr_ipq5018; --=20 2.51.1 From nobody Mon Feb 9 11:38:11 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C42B52BF01D; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748000; cv=none; b=LaZb+AFqhr6QhkKwMBdQ/Lusi5IHMQNZ6SB2tMeUNrlEW52lfVBcJcthKHCN1mR9OMPeRwDsVKjnhtCParpYEgBAOkryPE1aOQzXK/NfDK7mkolknj08DoqHwQeYWsUOtpcZd6vED/r5Edr+pCEeqKayDXLsJjbkyqIthUMXkuo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748000; c=relaxed/simple; bh=W5IhVZX+lFdfsONd0QZSdbYGapL1pgYTOaMok8jmlw0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=L/WMq9ConJPcoc/7QmNkkJKdy9vwmfvlfMBJl7kzGA2KHSmP81BaBvsKRx5nCS4ZlYILd0cKjgiliYEtKGkkehgN8aS5W91mgwdq3rcLAX6wrxH07BOBuoSTVH40dNke/GJOpZPnNBFpiBT66GTqwDy726oupY4jpxrkq2fuYa0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qmK7uQDz; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qmK7uQDz" Received: by smtp.kernel.org (Postfix) with ESMTPS id 88C4CC4CEF8; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1761748000; bh=W5IhVZX+lFdfsONd0QZSdbYGapL1pgYTOaMok8jmlw0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=qmK7uQDzoNsK7Rid9yt+MNp4gI0D1XYki7p/mbLxrXqfYFfWs5yxj2UXcgF4VBaU0 dvF+axJdf5Vwqhl79iyEM4gGc5QR571+vYFixZd3jaYCGlB3mR3adsY2r9J9IKRuT0 5AilOHdiyoEqYRzmHVZ05qGPG12Xpc/imeclSvTI3GzKbuvU59+bPqjVHyaWxcJ/ii 2yVzUCqTuw5xXzOzTYyU/SAyAXUgajcZVvN40bGqUjQFXOw6Bf5i2r9ZEpIfqdL712 +n9qLF2GmSKz0P7Ccct/n+mQlqY9NghcM+pVWeOKIMb+ZRKp4QOusITDBp5ArVujDe Psq6YyDkbODvQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B8F0CCF9F0; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) From: George Moussalem via B4 Relay Date: Wed, 29 Oct 2025 18:26:25 +0400 Subject: [PATCH 4/6] wifi: ath11k: update hif and pci ops for QCN6122 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251029-ath11k-qcn6122-v1-4-58ed68eba333@outlook.com> References: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> In-Reply-To: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> To: Johannes Berg , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jeff Johnson Cc: linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, ath11k@lists.infradead.org, linux-kernel@vger.kernel.org, George Moussalem X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761747997; l=4454; i=george.moussalem@outlook.com; s=20250321; h=from:subject:message-id; bh=VlBalx5CHHfhBt2bUbYow2vSFYMGLxLRZDITHsN4nSw=; b=hbNtn/9yXJydn9STDqZjWFGK9LIN/4TraKsdaQFpvjGtqWG6nGdSndOMZF/hd+JPmLHcByl9p +33Pyd4TvNNBF44Fcm6EsPHsMxzADK0wItvC2l7wiaNlrgPlhcZszG1 X-Developer-Key: i=george.moussalem@outlook.com; a=ed25519; pk=/PuRTSI9iYiHwcc6Nrde8qF4ZDhJBlUgpHdhsIjnqIk= X-Endpoint-Received: by B4 Relay for george.moussalem@outlook.com/20250321 with auth_id=364 X-Original-From: George Moussalem Reply-To: george.moussalem@outlook.com From: George Moussalem Add HIF and PCI ops for QCN6122. QCN6122 by default uses DP window 3. However, this is configurable, so let's introduce a function to do that and follow the existing register access code for (hybrid) AHB devices and use DP window 1. Signed-off-by: George Moussalem --- drivers/net/wireless/ath/ath11k/ahb.c | 34 +++++++++++++++++++++++++++++++= +++ drivers/net/wireless/ath/ath11k/hif.h | 9 +++++++++ drivers/net/wireless/ath/ath11k/qmi.c | 2 ++ 3 files changed, 45 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/a= th/ath11k/ahb.c index 8dfe9b40c12626649639fc1dd9da0e5e0c2dcaf1..7b267dd62e964b2c4d6c3bbe016= abd1ad0297219 100644 --- a/drivers/net/wireless/ath/ath11k/ahb.c +++ b/drivers/net/wireless/ath/ath11k/ahb.c @@ -762,6 +762,18 @@ static int ath11k_ahb_hif_resume(struct ath11k_base *a= b) return 0; } =20 +static void ath11k_ahb_config_static_window_qcn6122(struct ath11k_base *ab) +{ + u32 umac_window =3D FIELD_GET(ATH11K_PCI_WINDOW_VALUE_MASK, HAL_SEQ_WCSS_= UMAC_OFFSET); + u32 ce_window =3D FIELD_GET(ATH11K_PCI_WINDOW_VALUE_MASK, HAL_CE_WFSS_CE_= REG_BASE); + u32 window; + + window =3D (umac_window) | (ce_window << 6); + + iowrite32(ATH11K_PCI_WINDOW_ENABLE_BIT | window, + ab->mem + ATH11K_PCI_WINDOW_REG_ADDRESS); +} + static const struct ath11k_hif_ops ath11k_ahb_hif_ops_ipq8074 =3D { .start =3D ath11k_ahb_start, .stop =3D ath11k_ahb_stop, @@ -794,6 +806,24 @@ static const struct ath11k_hif_ops ath11k_ahb_hif_ops_= wcn6750 =3D { .ce_irq_disable =3D ath11k_pci_disable_ce_irqs_except_wake_irq, }; =20 +static const struct ath11k_hif_ops ath11k_ahb_hif_ops_qcn6122 =3D { + .start =3D ath11k_pcic_start, + .stop =3D ath11k_pcic_stop, + .read32 =3D ath11k_pcic_read32, + .write32 =3D ath11k_pcic_write32, + .read =3D NULL, + .irq_enable =3D ath11k_pcic_ext_irq_enable, + .irq_disable =3D ath11k_pcic_ext_irq_disable, + .get_msi_address =3D ath11k_pcic_get_msi_address, + .get_user_msi_vector =3D ath11k_pcic_get_user_msi_assignment, + .map_service_to_pipe =3D ath11k_pcic_map_service_to_pipe, + .power_down =3D ath11k_ahb_power_down, + .power_up =3D ath11k_ahb_power_up, + .ce_irq_enable =3D ath11k_pci_enable_ce_irqs_except_wake_irq, + .ce_irq_disable =3D ath11k_pci_disable_ce_irqs_except_wake_irq, + .config_static_window =3D ath11k_ahb_config_static_window_qcn6122, +}; + static int ath11k_core_get_rproc(struct ath11k_base *ab) { struct ath11k_ahb *ab_ahb =3D ath11k_ahb_priv(ab); @@ -1127,6 +1157,10 @@ static int ath11k_ahb_probe(struct platform_device *= pdev) hif_ops =3D &ath11k_ahb_hif_ops_wcn6750; pci_ops =3D &ath11k_ahb_pci_ops_wcn6750; break; + case ATH11K_HW_QCN6122_HW10: + hif_ops =3D &ath11k_ahb_hif_ops_qcn6122; + pci_ops =3D &ath11k_ahb_pci_ops_wcn6750; + break; default: dev_err(&pdev->dev, "unsupported device type %d\n", hw_rev); return -EOPNOTSUPP; diff --git a/drivers/net/wireless/ath/ath11k/hif.h b/drivers/net/wireless/a= th/ath11k/hif.h index cd9c4b838246815ecb2a10784732c009a5423b6e..e4c1ad4d8ffc7627f6b3c384d64= cb71b82451639 100644 --- a/drivers/net/wireless/ath/ath11k/hif.h +++ b/drivers/net/wireless/ath/ath11k/hif.h @@ -32,6 +32,7 @@ struct ath11k_hif_ops { void (*ce_irq_disable)(struct ath11k_base *ab); void (*get_ce_msi_idx)(struct ath11k_base *ab, u32 ce_id, u32 *msi_idx); void (*coredump_download)(struct ath11k_base *ab); + void (*config_static_window)(struct ath11k_base *ab); }; =20 static inline void ath11k_hif_ce_irq_enable(struct ath11k_base *ab) @@ -159,4 +160,12 @@ static inline void ath11k_hif_coredump_download(struct= ath11k_base *ab) ab->hif.ops->coredump_download(ab); } =20 +static inline void ath11k_hif_config_static_window(struct ath11k_base *ab) +{ + if (!ab->hw_params.static_window_map || !ab->hif.ops->config_static_windo= w) + return; + + ab->hif.ops->config_static_window(ab); +} + #endif /* _HIF_H_ */ diff --git a/drivers/net/wireless/ath/ath11k/qmi.c b/drivers/net/wireless/a= th/ath11k/qmi.c index aea56c38bf8f38982532fc90de25582c26ba4393..613e8c56978fe5af8f9b1b24c1b= 46efbc0bf2cb7 100644 --- a/drivers/net/wireless/ath/ath11k/qmi.c +++ b/drivers/net/wireless/ath/ath11k/qmi.c @@ -2190,6 +2190,8 @@ static int ath11k_qmi_request_device_info(struct ath1= 1k_base *ab) if (!ab->hw_params.ce_remap) ab->mem_ce =3D ab->mem; =20 + ath11k_hif_config_static_window(ab); + return 0; out: return ret; --=20 2.51.1 From nobody Mon Feb 9 11:38:11 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E13972C026A; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748001; cv=none; b=OC7TWWV2HYkOCtucsVX9jhvftg5UAfRPmC/mdsfjK0QsuVJI/BlS+zxK8VvbP1qlKINehgHu/sRrJFI8yidhxttrOMYO88ZPug/47FqLZuFJH7+wH0H+DBJ+etVf53hfPPoBVGB9MAX7d8wbZaTu9xj39mvPF+3PFPNjgpPzOyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748001; c=relaxed/simple; bh=MJBhAVMBcsaOmDVhNfz6RWxEfIYgXLg28HCz04+0t1g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XrSBQIL2w0By3vAVNitj3RlAcsQGifRrJW90w9bKJxL/W+lVitlDOLNbQg6UhXz789S1o4hPeK2BQh2hNcZ9vR62V6OODt2lbHXRDIe2OFmA3IFYjex5dmnmviq4GfbY8TlUZSLFGigWt6l5JOaYQVBVYhURiYRkFvwmfjpAx/c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=T3HpVNeY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="T3HpVNeY" Received: by smtp.kernel.org (Postfix) with ESMTPS id 99F0EC4CEF7; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1761748000; bh=MJBhAVMBcsaOmDVhNfz6RWxEfIYgXLg28HCz04+0t1g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=T3HpVNeYB91pk2yGCBf5LL38KMdqC3dSThTgCn7Qp4AjLCq57Dl6BBJRsEpYAmggu x47kL3K2uVI58P2d+IyY9bhENLpPvhn4aKwJzs+HOA529l+iaXpScg7Z1v9KthT93Y KsP+7iVq62IUcuqSpp14NtzPGQdQ7+qz515VCB7XUxnod8M/o0r/7k3JV0lUc+FRQl nv2ridgJb8/QUb78/forrsvo16H9LIdy0AvU+ffRIcAafi4H/BPCmTrIcIDP+kmh+V 7ApgB0ce8oEZAbF3ap/R5+FVSiKcv1sK4VJcZjvPkP/DfycO5T3dZ4uBwL+ibPZIqW XUqOjSKbAjR2A== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8BE5DCCF9EB; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) From: George Moussalem via B4 Relay Date: Wed, 29 Oct 2025 18:26:26 +0400 Subject: [PATCH 5/6] wifi: ath11k: add multipd support for QCN6122 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251029-ath11k-qcn6122-v1-5-58ed68eba333@outlook.com> References: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> In-Reply-To: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> To: Johannes Berg , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jeff Johnson Cc: linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, ath11k@lists.infradead.org, linux-kernel@vger.kernel.org, George Moussalem X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761747997; l=4796; i=george.moussalem@outlook.com; s=20250321; h=from:subject:message-id; bh=wfJCOLdDasJ1dIO5v/sGeipzvLRwEDiv/orAU1lK7ig=; b=hO0zotmMQKU+pCPVaXheybqxYq7jqzphqz6cWD2fnXPgd+2NjHxivZauWEc/hytJBOkvZTdxI d1kgbvTamTRBaBSJvpwgXeQ1Qqa0QsR6K7H9Q/BXYEDMSzYLjoB53V/ X-Developer-Key: i=george.moussalem@outlook.com; a=ed25519; pk=/PuRTSI9iYiHwcc6Nrde8qF4ZDhJBlUgpHdhsIjnqIk= X-Endpoint-Received: by B4 Relay for george.moussalem@outlook.com/20250321 with auth_id=364 X-Original-From: George Moussalem Reply-To: george.moussalem@outlook.com From: George Moussalem IPQ5018/QCN6122 platforms use multi PD (protection domains) to avoid having one instance of the running Q6 firmware crashing resulting in crashing the others. The IPQ5018 platform can have up to two QCN6122 wifi chips. To differentiate the two, the PD instance number (1 or 2) is added to the QMI service instance ID, which the QCN6122 firmware also expects. IPQ5018 internal wifi is always the first PD while QCN6122 cards must be second or third. Signed-off-by: George Moussalem --- See below patch for more info: https://lore.kernel.org/all/20231110091939.3025413-1-quic_mmanikan@quicinc.= com/ --- drivers/net/wireless/ath/ath11k/ahb.c | 31 +++++++++++++++++++++++++++++++ drivers/net/wireless/ath/ath11k/core.h | 4 ++++ drivers/net/wireless/ath/ath11k/pci.c | 1 + 3 files changed, 36 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/a= th/ath11k/ahb.c index 7b267dd62e964b2c4d6c3bbe016abd1ad0297219..820a383e88caf125892176e421b= 0121fed7e7055 100644 --- a/drivers/net/wireless/ath/ath11k/ahb.c +++ b/drivers/net/wireless/ath/ath11k/ahb.c @@ -429,6 +429,7 @@ static void ath11k_ahb_init_qmi_ce_config(struct ath11k= _base *ab) cfg->svc_to_ce_map_len =3D ab->hw_params.svc_to_ce_map_len; cfg->svc_to_ce_map =3D ab->hw_params.svc_to_ce_map; ab->qmi.service_ins_id =3D ab->hw_params.qmi_service_ins_id; + ab->qmi.service_ins_id +=3D ab->userpd_id; } =20 static void ath11k_ahb_free_ext_irq(struct ath11k_base *ab) @@ -1101,6 +1102,28 @@ static int ath11k_ahb_fw_resources_init(struct ath11= k_base *ab) return ret; } =20 +static int ath11k_get_userpd_id(struct device *dev, int *userpd) +{ + int ret, userpd_id; + + ret =3D of_property_read_u32(dev->of_node, "qcom,userpd", &userpd_id); + + if (ret) + return ret; + + switch (userpd_id) { + case 2: + *userpd =3D ATH11K_QCN6122_USERPD_2; + break; + case 3: + *userpd =3D ATH11K_QCN6122_USERPD_3; + break; + default: + return -EINVAL; + } + return 0; +} + static int ath11k_ahb_fw_resource_deinit(struct ath11k_base *ab) { struct ath11k_ahb *ab_ahb =3D ath11k_ahb_priv(ab); @@ -1142,6 +1165,7 @@ static int ath11k_ahb_probe(struct platform_device *p= dev) const struct ath11k_hif_ops *hif_ops; const struct ath11k_pci_ops *pci_ops; enum ath11k_hw_rev hw_rev; + int userpd_id =3D 0; int ret; =20 hw_rev =3D (uintptr_t)device_get_match_data(&pdev->dev); @@ -1160,6 +1184,12 @@ static int ath11k_ahb_probe(struct platform_device *= pdev) case ATH11K_HW_QCN6122_HW10: hif_ops =3D &ath11k_ahb_hif_ops_qcn6122; pci_ops =3D &ath11k_ahb_pci_ops_wcn6750; + ret =3D ath11k_get_userpd_id(&pdev->dev, &userpd_id); + if (ret) { + dev_err(&pdev->dev, "failed to get userpd: %d\n", ret); + return ret; + } + dev_info(&pdev->dev, "multi-pd architecture - userpd: %d\n", userpd_id); break; default: dev_err(&pdev->dev, "unsupported device type %d\n", hw_rev); @@ -1182,6 +1212,7 @@ static int ath11k_ahb_probe(struct platform_device *p= dev) ab->hif.ops =3D hif_ops; ab->pdev =3D pdev; ab->hw_rev =3D hw_rev; + ab->userpd_id =3D userpd_id; ab->fw_mode =3D ATH11K_FIRMWARE_MODE_NORMAL; platform_set_drvdata(pdev, ab); =20 diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/= ath/ath11k/core.h index afc591f9608f48506bf19851169828c519661d72..87e047c9a0debc35aa3d37cb012= 5e741085f73d9 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -48,6 +48,9 @@ #define ATH11K_INVALID_HW_MAC_ID 0xFF #define ATH11K_CONNECTION_LOSS_HZ (3 * HZ) =20 +#define ATH11K_QCN6122_USERPD_2 1 +#define ATH11K_QCN6122_USERPD_3 2 + /* SMBIOS type containing Board Data File Name Extension */ #define ATH11K_SMBIOS_BDF_EXT_TYPE 0xF8 =20 @@ -969,6 +972,7 @@ struct ath11k_base { struct list_head peers; wait_queue_head_t peer_mapping_wq; u8 mac_addr[ETH_ALEN]; + int userpd_id; int irq_num[ATH11K_IRQ_NUM_MAX]; struct ath11k_ext_irq_grp ext_irq_grp[ATH11K_EXT_IRQ_GRP_NUM_MAX]; struct ath11k_targ_cap target_caps; diff --git a/drivers/net/wireless/ath/ath11k/pci.c b/drivers/net/wireless/a= th/ath11k/pci.c index d8655badd96d0f4b6946f8af927d878aaa3147ad..89b882bdf08446fd2d429d9a360= c90f68c740bdb 100644 --- a/drivers/net/wireless/ath/ath11k/pci.c +++ b/drivers/net/wireless/ath/ath11k/pci.c @@ -383,6 +383,7 @@ static void ath11k_pci_init_qmi_ce_config(struct ath11k= _base *ab) cfg->svc_to_ce_map =3D ab->hw_params.svc_to_ce_map; cfg->svc_to_ce_map_len =3D ab->hw_params.svc_to_ce_map_len; ab->qmi.service_ins_id =3D ab->hw_params.qmi_service_ins_id; + ab->qmi.service_ins_id +=3D ab->userpd_id; =20 ath11k_ce_get_shadow_config(ab, &cfg->shadow_reg_v2, &cfg->shadow_reg_v2_len); --=20 2.51.1 From nobody Mon Feb 9 11:38:11 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E2C342C028D; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748001; cv=none; b=BLdnB9ktGwuyL1g74zcebPPRVcwoQbGSNjrNfOI2Q0H7Q5utVsOpqMRAqpomR9xUtzw+EPeHXXRv9aRoroOF9FyCXX1Wm0Nj5/KVafRpHFvK25ZqWO1GoONIB2aheD60e6o47QWIGayQRi5qFYJaVyValXBP/MnnNHSs09MHHUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761748001; c=relaxed/simple; bh=VZqF9VrAmlHotZC3esggL8Hr1cnKxgb531ArBlobfaA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KR9R0/FIAcHd9aBES5fTyUsPMZbDtuwc2J5BsYZCqvOxXMKWpNwkC/m0oaaOsQVXkXoWxlcc3IAAPVkbqbpJOYsxsSIf/v/ZW89FiE9x8Q1qaXAJGPPTb8SOFs++kB3Ye6DyHj1yzkmcoxcNacWdJmIZp49pV+TjNqztgb6Q0A0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=p4kvwU8P; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="p4kvwU8P" Received: by smtp.kernel.org (Postfix) with ESMTPS id A5F2BC116C6; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1761748000; bh=VZqF9VrAmlHotZC3esggL8Hr1cnKxgb531ArBlobfaA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=p4kvwU8PXGIa7diweVJjDvIyEOAl2NEL2Yg6t1WtZBlb975WYqMYBMUOFLw1ps+HP jYZqyxfUSTeYEbUf/14hLDl+ceNvugPIDDeXSohWTJ33JMSPvxZOxScW1IEWJkoJh9 y/JcjTBDdWPyxZmUWsCn4xSo2gJXGamyucg+OgxSKwScN4uG8C2Lm7+sm4VvexwMsI uM3DTTohKBVzTSuBjMqS5aa7PQEMhvjuDtT8ixSYS3J6mn+gkfwhBHC9vOxAQBViDX nvi8SXfyDoJD+c+y37S3cqMyEHynugZ9ZK04ImiOJH6PAplRVmNvxqrSWYAuB7rps7 gMD4uZxfry7UQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9ADC4CCF9F6; Wed, 29 Oct 2025 14:26:40 +0000 (UTC) From: George Moussalem via B4 Relay Date: Wed, 29 Oct 2025 18:26:27 +0400 Subject: [PATCH 6/6] wifi: ath11k: add QCN6122 device support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251029-ath11k-qcn6122-v1-6-58ed68eba333@outlook.com> References: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> In-Reply-To: <20251029-ath11k-qcn6122-v1-0-58ed68eba333@outlook.com> To: Johannes Berg , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jeff Johnson Cc: linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, ath11k@lists.infradead.org, linux-kernel@vger.kernel.org, George Moussalem X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761747997; l=1944; i=george.moussalem@outlook.com; s=20250321; h=from:subject:message-id; bh=MO7KsMfpzKHk3Kbh2D8damE6MIZVTsMgz25SICdrEDs=; b=K3qK5c3f0lBX0CW0vl5IFl9pODMBfTzS0f2OsZsmCjYeksCdtIJiyhhes4SZWzKIzw18NU6EC egExsLPJIhlDMg0OgQbszxEu05a3cT04hTUgeQbovPISaaGNStZjFGi X-Developer-Key: i=george.moussalem@outlook.com; a=ed25519; pk=/PuRTSI9iYiHwcc6Nrde8qF4ZDhJBlUgpHdhsIjnqIk= X-Endpoint-Received: by B4 Relay for george.moussalem@outlook.com/20250321 with auth_id=364 X-Original-From: George Moussalem Reply-To: george.moussalem@outlook.com From: George Moussalem Add support for QCN6122 wifi. STA, AP, and MESH modes are supported. Tested on: Linksys MX2000, Linksys MX6200, and GLiNET B3000 access points for prolonged duration tests spanning multiple days with multiple clients connected with firmware: WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1 Although QCN6122 is a PCIe device, it is an IPQ5018 SoC specific solution and uses shared IPQ5018/QCN6122 firmware. Signed-off-by: George Moussalem --- drivers/net/wireless/ath/ath11k/ahb.c | 3 +++ drivers/net/wireless/ath/ath11k/pcic.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/a= th/ath11k/ahb.c index 820a383e88caf125892176e421b0121fed7e7055..6747fcdbf9a777d4214b9ef751d= ac2774a80c0ff 100644 --- a/drivers/net/wireless/ath/ath11k/ahb.c +++ b/drivers/net/wireless/ath/ath11k/ahb.c @@ -37,6 +37,9 @@ static const struct of_device_id ath11k_ahb_of_match[] = =3D { { .compatible =3D "qcom,ipq5018-wifi", .data =3D (void *)ATH11K_HW_IPQ5018_HW10, }, + { .compatible =3D "qcom,qcn6122-wifi", + .data =3D (void *)ATH11K_HW_QCN6122_HW10, + }, { } }; =20 diff --git a/drivers/net/wireless/ath/ath11k/pcic.c b/drivers/net/wireless/= ath/ath11k/pcic.c index fc6e7da05c6028e30facf10d38a55f614067e44b..ac1e156ab3e0f0c47de1eb1ac5a= fea21addfd739 100644 --- a/drivers/net/wireless/ath/ath11k/pcic.c +++ b/drivers/net/wireless/ath/ath11k/pcic.c @@ -139,6 +139,15 @@ static const struct ath11k_msi_config ath11k_msi_confi= g[] =3D { }, .hw_rev =3D ATH11K_HW_QCA6698AQ_HW21, }, + { + .total_vectors =3D 13, + .total_users =3D 2, + .users =3D (struct ath11k_msi_user[]) { + { .name =3D "CE", .num_vectors =3D 5, .base_vector =3D 0 }, + { .name =3D "DP", .num_vectors =3D 8, .base_vector =3D 5 }, + }, + .hw_rev =3D ATH11K_HW_QCN6122_HW10, + }, }; =20 int ath11k_pcic_init_msi_config(struct ath11k_base *ab) --=20 2.51.1