[PATCH ath-next 17/17] wifi: ath12k: Add QCN6432 AHB support
From: Aaradhana Sahu
Date: Thu Oct 08 2026 - 06:30:27 EST
Add AHB support for QCN6432 by adding its hardware descriptor and
device-tree compatible entry.
QCN6432 uses a hybrid bus where the CE memory is handled through the
PCI interface. Skip the CE remapping and cleanup in the AHB resource
initialization and deinitialization for hybrid bus devices.
Also add the UserPD mappings required for the QCN6432 devices.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.6-01322-QCAHKSWPL_SILICONZ-1
Tested-on: QCN6432 hw1.0 AHB WLAN.WBE.1.6-01322-QCAHKSWPL_SILICONZ-1
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@xxxxxxxxxxxxxxxx>
---
drivers/net/wireless/ath/ath12k/ahb.c | 9 ++++++++-
drivers/net/wireless/ath/ath12k/wifi7/ahb.c | 11 +++++++++++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath12k/ahb.c b/drivers/net/wireless/ath/ath12k/ahb.c
index 3872aeeb9ba7..04974a6b423d 100644
--- a/drivers/net/wireless/ath/ath12k/ahb.c
+++ b/drivers/net/wireless/ath/ath12k/ahb.c
@@ -1210,6 +1210,9 @@ static int ath12k_ahb_resource_init(struct ath12k_base *ab)
ab->mem_len = resource_size(mem_res);
+ if (ab->hw_params->hybrid_bus_type)
+ return 0;
+
if (ab->hw_params->ce_remap) {
const struct ce_remap *ce_remap = ab->hw_params->ce_remap;
/* CE register space is moved out of WCSS and the space is not
@@ -1266,10 +1269,14 @@ static void ath12k_ahb_resource_deinit(struct ath12k_base *ab)
if (ab->mem)
devm_iounmap(ab->dev, ab->mem);
+ ab->mem = NULL;
+
+ if (ab->hw_params->hybrid_bus_type)
+ return;
+
if (ab->mem_ce)
iounmap(ab->mem_ce);
- ab->mem = NULL;
ab->mem_ce = NULL;
clk_disable_unprepare(ab_ahb->xo_clk);
diff --git a/drivers/net/wireless/ath/ath12k/wifi7/ahb.c b/drivers/net/wireless/ath/ath12k/wifi7/ahb.c
index 86359ed1eeb2..98e74bdf0112 100644
--- a/drivers/net/wireless/ath/ath12k/wifi7/ahb.c
+++ b/drivers/net/wireless/ath/ath12k/wifi7/ahb.c
@@ -18,6 +18,8 @@
static const struct ath12k_ahb_userpd_map ath12k_wifi7_ahb_userpd_map[] = {
{ .io_start = 0x0c000000, .upd_id = ATH12K_AHB_USERPD_ID_0 },
+ { .io_start = 0x21e00000, .upd_id = ATH12K_AHB_USERPD_ID_1 },
+ { .io_start = 0x19e00000, .upd_id = ATH12K_AHB_USERPD_ID_2 },
};
static const struct ath12k_ahb_desc ath12k_wifi7_ahb_desc[] = {
@@ -33,6 +35,12 @@ static const struct ath12k_ahb_desc ath12k_wifi7_ahb_desc[] = {
.ops = &ath12k_ahb_hif_ops,
.supports_multipd = false,
},
+ [ATH12K_HW_QCN6432_HW10] = {
+ .hw_rev = ATH12K_HW_QCN6432_HW10,
+ .auth_enabled = true,
+ .ops = &ath12k_ahb_hif_ops_qcn6432,
+ .supports_multipd = true,
+ },
};
static const struct of_device_id ath12k_wifi7_ahb_of_match[] = {
@@ -42,6 +50,9 @@ static const struct of_device_id ath12k_wifi7_ahb_of_match[] = {
{ .compatible = "qcom,ipq5424-wifi",
.data = (void *)&ath12k_wifi7_ahb_desc[ATH12K_HW_IPQ5424_HW10],
},
+ { .compatible = "qcom,qcn6432-wifi",
+ .data = (void *)&ath12k_wifi7_ahb_desc[ATH12K_HW_QCN6432_HW10],
+ },
{ }
};
--
2.34.1