* [PATCH ath-next v2 0/5] wifi: ath12k: Enable IPQ5424 AHB WiFi device
@ 2025-05-18 18:22 Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 1/5] dt-bindings: net: wireless: add ath12k wifi device IPQ5424 Raj Kumar Bhagat
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Raj Kumar Bhagat @ 2025-05-18 18:22 UTC (permalink / raw)
To: Johannes Berg, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Raj Kumar Bhagat, Saravanakumar Duraisamy,
Sowmiya Sree Elavalagan
Add support for the new ath12k AHB device IPQ5424, as currently, Ath12k
AHB only supports IPQ5332 WiFi devices.
The IPQ5424 is an IEEE 802.11be 2 GHz WiFi device, supporting 4x4
configurations. To enable the IPQ5424 device:
- Add the necessary hardware parameters for IPQ5424.
- Modify the boot-up sequence for ath12k AHB to accommodate the
requirements of the IPQ5424 device.
---
Changes in v2:
- DT binding: Removed the redundant example for IPQ5424, as it is similar
to IPQ5332.
- Added driver probe data structure to eliminate the redundant switch-case
logic in the ath12k_ahb_probe() function.
- Validation completed, hence changed from RFC to PATCH.
- Link to v1: https://lore.kernel.org/all/20250130051838.1924079-1-quic_rajkbhag@quicinc.com/
---
Raj Kumar Bhagat (1):
dt-bindings: net: wireless: add ath12k wifi device IPQ5424
Saravanakumar Duraisamy (3):
wifi: ath12k: Add ath12k_hw_params for IPQ5424
wifi: ath12k: add ath12k_hw_regs for IPQ5424
wifi: ath12k: Add CE remap hardware parameters for IPQ5424
Sowmiya Sree Elavalagan (1):
wifi: ath12k: Enable IPQ5424 WiFi device support
.../bindings/net/wireless/qcom,ipq5332-wifi.yaml | 1 +
drivers/net/wireless/ath/ath12k/ahb.c | 116 +++++++------
drivers/net/wireless/ath/ath12k/ahb.h | 17 +-
drivers/net/wireless/ath/ath12k/ce.h | 13 +-
drivers/net/wireless/ath/ath12k/core.h | 1 +
drivers/net/wireless/ath/ath12k/hal.h | 3 +
drivers/net/wireless/ath/ath12k/hw.c | 180 ++++++++++++++++++++-
7 files changed, 278 insertions(+), 53 deletions(-)
---
base-commit: 172e1570e1d31260f11f43e828d98aff020726a8
change-id: 20250518-ath12k-ipq5424-7fc6ec543527
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH ath-next v2 1/5] dt-bindings: net: wireless: add ath12k wifi device IPQ5424
2025-05-18 18:22 [PATCH ath-next v2 0/5] wifi: ath12k: Enable IPQ5424 AHB WiFi device Raj Kumar Bhagat
@ 2025-05-18 18:22 ` Raj Kumar Bhagat
2025-05-20 6:14 ` Krzysztof Kozlowski
2025-05-18 18:22 ` [PATCH ath-next v2 2/5] wifi: ath12k: Add ath12k_hw_params for IPQ5424 Raj Kumar Bhagat
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Raj Kumar Bhagat @ 2025-05-18 18:22 UTC (permalink / raw)
To: Johannes Berg, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Raj Kumar Bhagat
Add the device-tree bindings for the ATH12K AHB wifi device IPQ5424.
Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
---
Documentation/devicetree/bindings/net/wireless/qcom,ipq5332-wifi.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ipq5332-wifi.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ipq5332-wifi.yaml
index 363a0ecb6ad97c3dce72881ff552d238d08a2c12..37d8a0da778097b8bf7af2e8f1e920083a3fb81a 100644
--- a/Documentation/devicetree/bindings/net/wireless/qcom,ipq5332-wifi.yaml
+++ b/Documentation/devicetree/bindings/net/wireless/qcom,ipq5332-wifi.yaml
@@ -17,6 +17,7 @@ properties:
compatible:
enum:
- qcom,ipq5332-wifi
+ - qcom,ipq5424-wifi
reg:
maxItems: 1
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH ath-next v2 2/5] wifi: ath12k: Add ath12k_hw_params for IPQ5424
2025-05-18 18:22 [PATCH ath-next v2 0/5] wifi: ath12k: Enable IPQ5424 AHB WiFi device Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 1/5] dt-bindings: net: wireless: add ath12k wifi device IPQ5424 Raj Kumar Bhagat
@ 2025-05-18 18:22 ` Raj Kumar Bhagat
2025-05-20 15:59 ` Jeff Johnson
2025-05-18 18:22 ` [PATCH ath-next v2 3/5] wifi: ath12k: add ath12k_hw_regs " Raj Kumar Bhagat
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Raj Kumar Bhagat @ 2025-05-18 18:22 UTC (permalink / raw)
To: Johannes Berg, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Saravanakumar Duraisamy, Raj Kumar Bhagat
From: Saravanakumar Duraisamy <quic_saradura@quicinc.com>
Add ath12k_hw_params for the new ath12k AHB-based WiFi device IPQ5424.
The WiFi device IPQ5424 is similar to IPQ5332. Most of the hardware
parameters like hw_ops, wmi_init, hal_ops, etc., are the same between
IPQ5424 and IPQ5332, hence use these same parameters for IPQ5424.
Some parameters are specific to IPQ5424; initially set these to
0 or NULL, and populate them in subsequent patches.
Tested-on: IPQ5424 hw1.0 AHB WLAN.WBE.1.5-01053-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1
Signed-off-by: Saravanakumar Duraisamy <quic_saradura@quicinc.com>
Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
---
drivers/net/wireless/ath/ath12k/core.h | 1 +
drivers/net/wireless/ath/ath12k/hw.c | 78 ++++++++++++++++++++++++++++++++++
2 files changed, 79 insertions(+)
diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h
index 3aafbac46e81af9ed2da34201522fb9e73650205..b45f40f92f615dbfb2dd5f95f308865d42ea5bdc 100644
--- a/drivers/net/wireless/ath/ath12k/core.h
+++ b/drivers/net/wireless/ath/ath12k/core.h
@@ -150,6 +150,7 @@ enum ath12k_hw_rev {
ATH12K_HW_QCN9274_HW20,
ATH12K_HW_WCN7850_HW20,
ATH12K_HW_IPQ5332_HW10,
+ ATH12K_HW_IPQ5424_HW10,
};
enum ath12k_firmware_mode {
diff --git a/drivers/net/wireless/ath/ath12k/hw.c b/drivers/net/wireless/ath/ath12k/hw.c
index 7e2cf0fb2085ab014fc14a5c81074802674b154e..866de53f37bb5af94e16c796a0052fda39eb4ea8 100644
--- a/drivers/net/wireless/ath/ath12k/hw.c
+++ b/drivers/net/wireless/ath/ath12k/hw.c
@@ -1590,6 +1590,84 @@ static const struct ath12k_hw_params ath12k_hw_params[] = {
.ce_remap = &ath12k_ce_remap_ipq5332,
.bdf_addr_offset = 0xC00000,
+ .dp_primary_link_only = true,
+ },
+ {
+ .name = "ipq5424 hw1.0",
+ .hw_rev = ATH12K_HW_IPQ5424_HW10,
+ .fw = {
+ .dir = "IPQ5424/hw1.0",
+ .board_size = 256 * 1024,
+ .cal_offset = 128 * 1024,
+ .m3_loader = ath12k_m3_fw_loader_remoteproc,
+ },
+ .max_radios = 1,
+ .single_pdev_only = false,
+ .qmi_service_ins_id = ATH12K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ5332,
+ .internal_sleep_clock = false,
+
+ .hw_ops = &qcn9274_ops,
+ .regs = NULL,
+ .ring_mask = &ath12k_hw_ring_mask_ipq5332,
+
+ .host_ce_config = ath12k_host_ce_config_ipq5332,
+ .ce_count = 12,
+ .target_ce_config = ath12k_target_ce_config_wlan_ipq5332,
+ .target_ce_count = 12,
+ .svc_to_ce_map = ath12k_target_service_to_ce_map_wlan_ipq5332,
+ .svc_to_ce_map_len = 18,
+
+ .hal_params = &ath12k_hw_hal_params_ipq5332,
+
+ .rxdma1_enable = false,
+ .num_rxdma_per_pdev = 1,
+ .num_rxdma_dst_ring = 0,
+ .rx_mac_buf_ring = false,
+ .vdev_start_delay = false,
+
+ .interface_modes = BIT(NL80211_IFTYPE_STATION) |
+ BIT(NL80211_IFTYPE_AP) |
+ BIT(NL80211_IFTYPE_MESH_POINT),
+ .supports_monitor = false,
+
+ .idle_ps = false,
+ .download_calib = true,
+ .supports_suspend = false,
+ .tcl_ring_retry = true,
+ .reoq_lut_support = false,
+ .supports_shadow_regs = false,
+
+ .num_tcl_banks = 48,
+ .max_tx_ring = 4,
+
+ .wmi_init = &ath12k_wmi_init_qcn9274,
+
+ .hal_ops = &hal_qcn9274_ops,
+
+ .qmi_cnss_feature_bitmap = BIT(CNSS_QDSS_CFG_MISS_V01),
+
+ .rfkill_pin = 0,
+ .rfkill_cfg = 0,
+ .rfkill_on_level = 0,
+
+ .rddm_size = 0,
+
+ .def_num_link = 0,
+ .max_mlo_peer = 256,
+
+ .otp_board_id_register = 0,
+
+ .supports_sta_ps = false,
+
+ .acpi_guid = NULL,
+ .supports_dynamic_smps_6ghz = false,
+ .iova_mask = 0,
+ .supports_aspm = false,
+
+ .ce_ie_addr = NULL,
+ .ce_remap = NULL,
+ .bdf_addr_offset = 0x940000,
+
.dp_primary_link_only = true,
},
};
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH ath-next v2 3/5] wifi: ath12k: add ath12k_hw_regs for IPQ5424
2025-05-18 18:22 [PATCH ath-next v2 0/5] wifi: ath12k: Enable IPQ5424 AHB WiFi device Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 1/5] dt-bindings: net: wireless: add ath12k wifi device IPQ5424 Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 2/5] wifi: ath12k: Add ath12k_hw_params for IPQ5424 Raj Kumar Bhagat
@ 2025-05-18 18:22 ` Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 4/5] wifi: ath12k: Add CE remap hardware parameters " Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 5/5] wifi: ath12k: Enable IPQ5424 WiFi device support Raj Kumar Bhagat
4 siblings, 0 replies; 10+ messages in thread
From: Raj Kumar Bhagat @ 2025-05-18 18:22 UTC (permalink / raw)
To: Johannes Berg, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Saravanakumar Duraisamy, Raj Kumar Bhagat
From: Saravanakumar Duraisamy <quic_saradura@quicinc.com>
Add register addresses (ath12k_hw_regs) for new ath12k AHB based
WiFi device IPQ5424.
Tested-on: IPQ5424 hw1.0 AHB WLAN.WBE.1.5-01053-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1
Signed-off-by: Saravanakumar Duraisamy <quic_saradura@quicinc.com>
Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
---
drivers/net/wireless/ath/ath12k/hal.h | 3 ++
drivers/net/wireless/ath/ath12k/hw.c | 87 ++++++++++++++++++++++++++++++++++-
2 files changed, 89 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath12k/hal.h b/drivers/net/wireless/ath/ath12k/hal.h
index 0ee9c6b26dab4ef597c95fea6fdb58d9cf1a0941..3239f3a7526b510ca94c2a4ce0e9a26b77cdf914 100644
--- a/drivers/net/wireless/ath/ath12k/hal.h
+++ b/drivers/net/wireless/ath/ath12k/hal.h
@@ -383,6 +383,9 @@ struct ath12k_base;
#define HAL_IPQ5332_CE_WFSS_REG_BASE 0x740000
#define HAL_IPQ5332_CE_SIZE 0x100000
+#define HAL_IPQ5424_CE_WFSS_REG_BASE 0x200000
+#define HAL_IPQ5424_CE_SIZE 0x100000
+
enum hal_srng_ring_id {
HAL_SRNG_RING_ID_REO2SW0 = 0,
HAL_SRNG_RING_ID_REO2SW1,
diff --git a/drivers/net/wireless/ath/ath12k/hw.c b/drivers/net/wireless/ath/ath12k/hw.c
index 866de53f37bb5af94e16c796a0052fda39eb4ea8..05e2010173340bc3c0481aadf710a6894efd92bb 100644
--- a/drivers/net/wireless/ath/ath12k/hw.c
+++ b/drivers/net/wireless/ath/ath12k/hw.c
@@ -1132,6 +1132,91 @@ static const struct ath12k_hw_regs ipq5332_regs = {
HAL_IPQ5332_CE_WFSS_REG_BASE,
};
+static const struct ath12k_hw_regs ipq5424_regs = {
+ /* SW2TCL(x) R0 ring configuration address */
+ .hal_tcl1_ring_id = 0x00000918,
+ .hal_tcl1_ring_misc = 0x00000920,
+ .hal_tcl1_ring_tp_addr_lsb = 0x0000092c,
+ .hal_tcl1_ring_tp_addr_msb = 0x00000930,
+ .hal_tcl1_ring_consumer_int_setup_ix0 = 0x00000940,
+ .hal_tcl1_ring_consumer_int_setup_ix1 = 0x00000944,
+ .hal_tcl1_ring_msi1_base_lsb = 0x00000958,
+ .hal_tcl1_ring_msi1_base_msb = 0x0000095c,
+ .hal_tcl1_ring_base_lsb = 0x00000910,
+ .hal_tcl1_ring_base_msb = 0x00000914,
+ .hal_tcl1_ring_msi1_data = 0x00000960,
+ .hal_tcl2_ring_base_lsb = 0x00000988,
+ .hal_tcl_ring_base_lsb = 0x00000b68,
+
+ /* TCL STATUS ring address */
+ .hal_tcl_status_ring_base_lsb = 0x00000d48,
+
+ /* REO DEST ring address */
+ .hal_reo2_ring_base = 0x00000578,
+ .hal_reo1_misc_ctrl_addr = 0x00000b9c,
+ .hal_reo1_sw_cookie_cfg0 = 0x0000006c,
+ .hal_reo1_sw_cookie_cfg1 = 0x00000070,
+ .hal_reo1_qdesc_lut_base0 = 0x00000074,
+ .hal_reo1_qdesc_lut_base1 = 0x00000078,
+ .hal_reo1_ring_base_lsb = 0x00000500,
+ .hal_reo1_ring_base_msb = 0x00000504,
+ .hal_reo1_ring_id = 0x00000508,
+ .hal_reo1_ring_misc = 0x00000510,
+ .hal_reo1_ring_hp_addr_lsb = 0x00000514,
+ .hal_reo1_ring_hp_addr_msb = 0x00000518,
+ .hal_reo1_ring_producer_int_setup = 0x00000524,
+ .hal_reo1_ring_msi1_base_lsb = 0x00000548,
+ .hal_reo1_ring_msi1_base_msb = 0x0000054C,
+ .hal_reo1_ring_msi1_data = 0x00000550,
+ .hal_reo1_aging_thres_ix0 = 0x00000B28,
+ .hal_reo1_aging_thres_ix1 = 0x00000B2C,
+ .hal_reo1_aging_thres_ix2 = 0x00000B30,
+ .hal_reo1_aging_thres_ix3 = 0x00000B34,
+
+ /* REO Exception ring address */
+ .hal_reo2_sw0_ring_base = 0x000008c0,
+
+ /* REO Reinject ring address */
+ .hal_sw2reo_ring_base = 0x00000320,
+ .hal_sw2reo1_ring_base = 0x00000398,
+
+ /* REO cmd ring address */
+ .hal_reo_cmd_ring_base = 0x000002A8,
+
+ /* REO status ring address */
+ .hal_reo_status_ring_base = 0x00000aa0,
+
+ /* WBM idle link ring address */
+ .hal_wbm_idle_ring_base_lsb = 0x00000d3c,
+ .hal_wbm_idle_ring_misc_addr = 0x00000d4c,
+ .hal_wbm_r0_idle_list_cntl_addr = 0x00000240,
+ .hal_wbm_r0_idle_list_size_addr = 0x00000244,
+ .hal_wbm_scattered_ring_base_lsb = 0x00000250,
+ .hal_wbm_scattered_ring_base_msb = 0x00000254,
+ .hal_wbm_scattered_desc_head_info_ix0 = 0x00000260,
+ .hal_wbm_scattered_desc_head_info_ix1 = 0x00000264,
+ .hal_wbm_scattered_desc_tail_info_ix0 = 0x00000270,
+ .hal_wbm_scattered_desc_tail_info_ix1 = 0x00000274,
+ .hal_wbm_scattered_desc_ptr_hp_addr = 0x0000027c,
+
+ /* SW2WBM release ring address */
+ .hal_wbm_sw_release_ring_base_lsb = 0x0000037c,
+
+ /* WBM2SW release ring address */
+ .hal_wbm0_release_ring_base_lsb = 0x00000e08,
+ .hal_wbm1_release_ring_base_lsb = 0x00000e80,
+
+ /* CE relative address */
+ .hal_umac_ce0_src_reg_base = 0x00200000 -
+ HAL_IPQ5424_CE_WFSS_REG_BASE,
+ .hal_umac_ce0_dest_reg_base = 0x00201000 -
+ HAL_IPQ5424_CE_WFSS_REG_BASE,
+ .hal_umac_ce1_src_reg_base = 0x00202000 -
+ HAL_IPQ5424_CE_WFSS_REG_BASE,
+ .hal_umac_ce1_dest_reg_base = 0x00203000 -
+ HAL_IPQ5424_CE_WFSS_REG_BASE,
+};
+
static const struct ath12k_hw_regs wcn7850_regs = {
/* SW2TCL(x) R0 ring configuration address */
.hal_tcl1_ring_id = 0x00000908,
@@ -1607,7 +1692,7 @@ static const struct ath12k_hw_params ath12k_hw_params[] = {
.internal_sleep_clock = false,
.hw_ops = &qcn9274_ops,
- .regs = NULL,
+ .regs = &ipq5424_regs,
.ring_mask = &ath12k_hw_ring_mask_ipq5332,
.host_ce_config = ath12k_host_ce_config_ipq5332,
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH ath-next v2 4/5] wifi: ath12k: Add CE remap hardware parameters for IPQ5424
2025-05-18 18:22 [PATCH ath-next v2 0/5] wifi: ath12k: Enable IPQ5424 AHB WiFi device Raj Kumar Bhagat
` (2 preceding siblings ...)
2025-05-18 18:22 ` [PATCH ath-next v2 3/5] wifi: ath12k: add ath12k_hw_regs " Raj Kumar Bhagat
@ 2025-05-18 18:22 ` Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 5/5] wifi: ath12k: Enable IPQ5424 WiFi device support Raj Kumar Bhagat
4 siblings, 0 replies; 10+ messages in thread
From: Raj Kumar Bhagat @ 2025-05-18 18:22 UTC (permalink / raw)
To: Johannes Berg, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Saravanakumar Duraisamy, Raj Kumar Bhagat
From: Saravanakumar Duraisamy <quic_saradura@quicinc.com>
Add CE remap hardware parameters for new Ath12k AHB device IPQ5424.
Tested-on: IPQ5424 hw1.0 AHB WLAN.WBE.1.5-01053-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1
Signed-off-by: Saravanakumar Duraisamy <quic_saradura@quicinc.com>
Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
---
drivers/net/wireless/ath/ath12k/ahb.c | 2 +-
drivers/net/wireless/ath/ath12k/ce.h | 13 +++++++++----
drivers/net/wireless/ath/ath12k/hw.c | 21 ++++++++++++++++-----
3 files changed, 26 insertions(+), 10 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/ahb.c b/drivers/net/wireless/ath/ath12k/ahb.c
index 636dfe237a7946c621b304268d057c1a6228b1c8..40690cef7e57d121c6c41765048d8e64c9320b02 100644
--- a/drivers/net/wireless/ath/ath12k/ahb.c
+++ b/drivers/net/wireless/ath/ath12k/ahb.c
@@ -935,7 +935,7 @@ static int ath12k_ahb_resource_init(struct ath12k_base *ab)
goto err_mem_unmap;
}
ab->ce_remap = true;
- ab->ce_remap_base_addr = HAL_IPQ5332_CE_WFSS_REG_BASE;
+ ab->ce_remap_base_addr = ce_remap->base;
}
ab_ahb->xo_clk = devm_clk_get(ab->dev, "xo");
diff --git a/drivers/net/wireless/ath/ath12k/ce.h b/drivers/net/wireless/ath/ath12k/ce.h
index 57f75899ee03d63479698011fc081936677f8698..3ac7f28d2c9282e95ee731b86232f71ca06679c1 100644
--- a/drivers/net/wireless/ath/ath12k/ce.h
+++ b/drivers/net/wireless/ath/ath12k/ce.h
@@ -38,10 +38,15 @@
#define PIPEDIR_INOUT 3 /* bidirectional */
#define PIPEDIR_INOUT_H2H 4 /* bidirectional, host to host */
-/* CE address/mask */
-#define CE_HOST_IE_ADDRESS 0x75804C
-#define CE_HOST_IE_2_ADDRESS 0x758050
-#define CE_HOST_IE_3_ADDRESS CE_HOST_IE_ADDRESS
+/* IPQ5332 CE address/mask */
+#define CE_HOST_IPQ5332_IE_ADDRESS 0x75804C
+#define CE_HOST_IPQ5332_IE_2_ADDRESS 0x758050
+#define CE_HOST_IPQ5332_IE_3_ADDRESS CE_HOST_IPQ5332_IE_ADDRESS
+
+/* IPQ5424 CE address/mask */
+#define CE_HOST_IPQ5424_IE_ADDRESS 0x21804C
+#define CE_HOST_IPQ5424_IE_2_ADDRESS 0x218050
+#define CE_HOST_IPQ5424_IE_3_ADDRESS CE_HOST_IPQ5424_IE_ADDRESS
#define CE_HOST_IE_3_SHIFT 0xC
diff --git a/drivers/net/wireless/ath/ath12k/hw.c b/drivers/net/wireless/ath/ath12k/hw.c
index 05e2010173340bc3c0481aadf710a6894efd92bb..75042298888ca70ca55a2793b12891e45db618e4 100644
--- a/drivers/net/wireless/ath/ath12k/hw.c
+++ b/drivers/net/wireless/ath/ath12k/hw.c
@@ -1329,9 +1329,15 @@ static const struct ath12k_hw_hal_params ath12k_hw_hal_params_ipq5332 = {
};
static const struct ce_ie_addr ath12k_ce_ie_addr_ipq5332 = {
- .ie1_reg_addr = CE_HOST_IE_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
- .ie2_reg_addr = CE_HOST_IE_2_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
- .ie3_reg_addr = CE_HOST_IE_3_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
+ .ie1_reg_addr = CE_HOST_IPQ5332_IE_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
+ .ie2_reg_addr = CE_HOST_IPQ5332_IE_2_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
+ .ie3_reg_addr = CE_HOST_IPQ5332_IE_3_ADDRESS - HAL_IPQ5332_CE_WFSS_REG_BASE,
+};
+
+static const struct ce_ie_addr ath12k_ce_ie_addr_ipq5424 = {
+ .ie1_reg_addr = CE_HOST_IPQ5424_IE_ADDRESS - HAL_IPQ5424_CE_WFSS_REG_BASE,
+ .ie2_reg_addr = CE_HOST_IPQ5424_IE_2_ADDRESS - HAL_IPQ5424_CE_WFSS_REG_BASE,
+ .ie3_reg_addr = CE_HOST_IPQ5424_IE_3_ADDRESS - HAL_IPQ5424_CE_WFSS_REG_BASE,
};
static const struct ce_remap ath12k_ce_remap_ipq5332 = {
@@ -1339,6 +1345,11 @@ static const struct ce_remap ath12k_ce_remap_ipq5332 = {
.size = HAL_IPQ5332_CE_SIZE,
};
+static const struct ce_remap ath12k_ce_remap_ipq5424 = {
+ .base = HAL_IPQ5424_CE_WFSS_REG_BASE,
+ .size = HAL_IPQ5424_CE_SIZE,
+};
+
static const struct ath12k_hw_params ath12k_hw_params[] = {
{
.name = "qcn9274 hw1.0",
@@ -1749,8 +1760,8 @@ static const struct ath12k_hw_params ath12k_hw_params[] = {
.iova_mask = 0,
.supports_aspm = false,
- .ce_ie_addr = NULL,
- .ce_remap = NULL,
+ .ce_ie_addr = &ath12k_ce_ie_addr_ipq5424,
+ .ce_remap = &ath12k_ce_remap_ipq5424,
.bdf_addr_offset = 0x940000,
.dp_primary_link_only = true,
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH ath-next v2 5/5] wifi: ath12k: Enable IPQ5424 WiFi device support
2025-05-18 18:22 [PATCH ath-next v2 0/5] wifi: ath12k: Enable IPQ5424 AHB WiFi device Raj Kumar Bhagat
` (3 preceding siblings ...)
2025-05-18 18:22 ` [PATCH ath-next v2 4/5] wifi: ath12k: Add CE remap hardware parameters " Raj Kumar Bhagat
@ 2025-05-18 18:22 ` Raj Kumar Bhagat
2025-05-20 16:27 ` Jeff Johnson
4 siblings, 1 reply; 10+ messages in thread
From: Raj Kumar Bhagat @ 2025-05-18 18:22 UTC (permalink / raw)
To: Johannes Berg, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Sowmiya Sree Elavalagan, Saravanakumar Duraisamy,
Raj Kumar Bhagat
From: Sowmiya Sree Elavalagan <quic_ssreeela@quicinc.com>
Currently, ath12k AHB (in IPQ5332) uses SCM calls to authenticate the
firmware image to bring up userpd. From IPQ5424 onwards, Q6 firmware can
directly communicate with the Trusted Management Engine - Lite (TME-L),
eliminating the need for SCM calls for userpd bring-up.
Hence, to enable IPQ5424 device support, use qcom_mdt_load_no_init() and
skip the SCM call as Q6 will directly authenticate the userpd firmware.
Tested-on: IPQ5424 hw1.0 AHB WLAN.WBE.1.5-01053-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1
Signed-off-by: Sowmiya Sree Elavalagan <quic_ssreeela@quicinc.com>
Co-developed-by: Saravanakumar Duraisamy <quic_saradura@quicinc.com>
Signed-off-by: Saravanakumar Duraisamy <quic_saradura@quicinc.com>
Co-developed-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
---
drivers/net/wireless/ath/ath12k/ahb.c | 114 +++++++++++++++++++++-------------
drivers/net/wireless/ath/ath12k/ahb.h | 17 ++++-
2 files changed, 86 insertions(+), 45 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/ahb.c b/drivers/net/wireless/ath/ath12k/ahb.c
index 40690cef7e57d121c6c41765048d8e64c9320b02..f5a2c176d03d6eebb119165a7fa1a394cf3ef3b2 100644
--- a/drivers/net/wireless/ath/ath12k/ahb.c
+++ b/drivers/net/wireless/ath/ath12k/ahb.c
@@ -16,15 +16,6 @@
#include "debug.h"
#include "hif.h"
-static const struct of_device_id ath12k_ahb_of_match[] = {
- { .compatible = "qcom,ipq5332-wifi",
- .data = (void *)ATH12K_HW_IPQ5332_HW10,
- },
- { }
-};
-
-MODULE_DEVICE_TABLE(of, ath12k_ahb_of_match);
-
#define ATH12K_IRQ_CE0_OFFSET 4
#define ATH12K_MAX_UPDS 1
#define ATH12K_UPD_IRQ_WRD_LEN 18
@@ -348,9 +339,9 @@ static int ath12k_ahb_power_up(struct ath12k_base *ab)
struct reserved_mem *rmem = NULL;
unsigned long time_left;
phys_addr_t mem_phys;
+ u32 pasid, userpd_id;
void *mem_region;
size_t mem_size;
- u32 pasid;
int ret;
rmem = ath12k_core_get_reserved_mem(ab, 0);
@@ -366,8 +357,9 @@ static int ath12k_ahb_power_up(struct ath12k_base *ab)
return PTR_ERR(mem_region);
}
+ userpd_id = ab_ahb->ahb_data->userpd_id;
snprintf(fw_name, sizeof(fw_name), "%s/%s/%s%d%s", ATH12K_FW_DIR,
- ab->hw_params->fw.dir, ATH12K_AHB_FW_PREFIX, ab_ahb->userpd_id,
+ ab->hw_params->fw.dir, ATH12K_AHB_FW_PREFIX, userpd_id,
ATH12K_AHB_FW_SUFFIX);
ret = request_firmware(&fw, fw_name, dev);
@@ -385,12 +377,12 @@ static int ath12k_ahb_power_up(struct ath12k_base *ab)
goto err_fw;
}
- pasid = (u32_encode_bits(ab_ahb->userpd_id, ATH12K_USERPD_ID_MASK)) |
+ pasid = (u32_encode_bits(userpd_id, ATH12K_USERPD_ID_MASK)) |
ATH12K_AHB_UPD_SWID;
/* Load FW image to a reserved memory location */
- ret = qcom_mdt_load(dev, fw, fw_name, pasid, mem_region, mem_phys, mem_size,
- &mem_phys);
+ ret = ab_ahb->ahb_data->ahb_ops->mdt_load(dev, fw, fw_name, pasid, mem_region,
+ mem_phys, mem_size, &mem_phys);
if (ret) {
ath12k_err(ab, "Failed to load MDT segments: %d\n", ret);
goto err_fw;
@@ -421,11 +413,13 @@ static int ath12k_ahb_power_up(struct ath12k_base *ab)
goto err_fw2;
}
- /* Authenticate FW image using peripheral ID */
- ret = qcom_scm_pas_auth_and_reset(pasid);
- if (ret) {
- ath12k_err(ab, "failed to boot the remote processor %d\n", ret);
- goto err_fw2;
+ if (ab_ahb->ahb_data->scm_auth_enabled) {
+ /* Authenticate FW image using peripheral ID */
+ ret = qcom_scm_pas_auth_and_reset(pasid);
+ if (ret) {
+ ath12k_err(ab, "failed to boot the remote processor %d\n", ret);
+ goto err_fw2;
+ }
}
/* Instruct Q6 to spawn userPD thread */
@@ -454,7 +448,7 @@ static int ath12k_ahb_power_up(struct ath12k_base *ab)
qcom_smem_state_update_bits(ab_ahb->spawn_state, BIT(ab_ahb->spawn_bit), 0);
- ath12k_dbg(ab, ATH12K_DBG_AHB, "UserPD%d is now UP\n", ab_ahb->userpd_id);
+ ath12k_dbg(ab, ATH12K_DBG_AHB, "UserPD%d is now UP\n", userpd_id);
err_fw2:
release_firmware(fw2);
@@ -467,7 +461,7 @@ static void ath12k_ahb_power_down(struct ath12k_base *ab, bool is_suspend)
{
struct ath12k_ahb *ab_ahb = ath12k_ab_to_ahb(ab);
unsigned long time_left;
- u32 pasid;
+ u32 pasid, userpd_id;
int ret;
qcom_smem_state_update_bits(ab_ahb->stop_state, BIT(ab_ahb->stop_bit),
@@ -482,13 +476,16 @@ static void ath12k_ahb_power_down(struct ath12k_base *ab, bool is_suspend)
qcom_smem_state_update_bits(ab_ahb->stop_state, BIT(ab_ahb->stop_bit), 0);
- pasid = (u32_encode_bits(ab_ahb->userpd_id, ATH12K_USERPD_ID_MASK)) |
- ATH12K_AHB_UPD_SWID;
- /* Release the firmware */
- ret = qcom_scm_pas_shutdown(pasid);
- if (ret)
- ath12k_err(ab, "scm pas shutdown failed for userPD%d: %d\n",
- ab_ahb->userpd_id, ret);
+ if (ab_ahb->ahb_data->scm_auth_enabled) {
+ userpd_id = ab_ahb->ahb_data->userpd_id;
+ pasid = (u32_encode_bits(userpd_id, ATH12K_USERPD_ID_MASK)) |
+ ATH12K_AHB_UPD_SWID;
+ /* Release the firmware */
+ ret = qcom_scm_pas_shutdown(pasid);
+ if (ret)
+ ath12k_err(ab, "scm pas shutdown failed for userPD%d\n",
+ userpd_id);
+ }
}
static void ath12k_ahb_init_qmi_ce_config(struct ath12k_base *ab)
@@ -698,6 +695,14 @@ static int ath12k_ahb_map_service_to_pipe(struct ath12k_base *ab, u16 service_id
return 0;
}
+static const struct ath12k_ahb_ops ahb_ops_ipq5332 = {
+ .mdt_load = qcom_mdt_load,
+};
+
+static const struct ath12k_ahb_ops ahb_ops_ipq5424 = {
+ .mdt_load = qcom_mdt_load_no_init,
+};
+
static const struct ath12k_hif_ops ath12k_ahb_hif_ops_ipq5332 = {
.start = ath12k_ahb_start,
.stop = ath12k_ahb_stop,
@@ -747,7 +752,7 @@ static int ath12k_ahb_config_rproc_irq(struct ath12k_base *ab)
return -ENOMEM;
scnprintf(upd_irq_name, ATH12K_UPD_IRQ_WRD_LEN, "UserPD%u-%s",
- ab_ahb->userpd_id, ath12k_userpd_irq[i]);
+ ab_ahb->ahb_data->userpd_id, ath12k_userpd_irq[i]);
ret = devm_request_threaded_irq(&ab->pdev->dev, ab_ahb->userpd_irq_num[i],
NULL, ath12k_userpd_irq_handler,
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
@@ -991,10 +996,8 @@ static void ath12k_ahb_resource_deinit(struct ath12k_base *ab)
static int ath12k_ahb_probe(struct platform_device *pdev)
{
struct ath12k_base *ab;
- const struct ath12k_hif_ops *hif_ops;
struct ath12k_ahb *ab_ahb;
- enum ath12k_hw_rev hw_rev;
- u32 addr, userpd_id;
+ u32 addr;
int ret;
ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
@@ -1008,24 +1011,19 @@ static int ath12k_ahb_probe(struct platform_device *pdev)
if (!ab)
return -ENOMEM;
- hw_rev = (enum ath12k_hw_rev)(kernel_ulong_t)of_device_get_match_data(&pdev->dev);
- switch (hw_rev) {
- case ATH12K_HW_IPQ5332_HW10:
- hif_ops = &ath12k_ahb_hif_ops_ipq5332;
- userpd_id = ATH12K_IPQ5332_USERPD_ID;
- break;
- default:
+ ab_ahb = ath12k_ab_to_ahb(ab);
+ ab_ahb->ab = ab;
+ ab_ahb->ahb_data =
+ (struct ath12k_ahb_probe_data *)of_device_get_match_data(&pdev->dev);
+ if (!ab_ahb->ahb_data) {
ret = -EOPNOTSUPP;
goto err_core_free;
}
- ab->hif.ops = hif_ops;
+ ab->hif.ops = ab_ahb->ahb_data->hif_ops;
+ ab->hw_rev = ab_ahb->ahb_data->hw_rev;
ab->pdev = pdev;
- ab->hw_rev = hw_rev;
platform_set_drvdata(pdev, ab);
- ab_ahb = ath12k_ab_to_ahb(ab);
- ab_ahb->ab = ab;
- ab_ahb->userpd_id = userpd_id;
/* Set fixed_mem_region to true for platforms that support fixed memory
* reservation from DT. If memory is reserved from DT for FW, ath12k driver
@@ -1136,6 +1134,34 @@ static void ath12k_ahb_remove(struct platform_device *pdev)
ath12k_ahb_free_resources(ab);
}
+static const struct ath12k_ahb_probe_data ath12k_ahb_ipq5332 = {
+ .hw_rev = ATH12K_HW_IPQ5332_HW10,
+ .userpd_id = ATH12K_IPQ5332_USERPD_ID,
+ .scm_auth_enabled = true,
+ .ahb_ops = &ahb_ops_ipq5332,
+ .hif_ops = &ath12k_ahb_hif_ops_ipq5332,
+};
+
+static const struct ath12k_ahb_probe_data ath12k_ahb_ipq5424 = {
+ .hw_rev = ATH12K_HW_IPQ5424_HW10,
+ .userpd_id = ATH12K_IPQ5332_USERPD_ID,
+ .scm_auth_enabled = false,
+ .ahb_ops = &ahb_ops_ipq5424,
+ .hif_ops = &ath12k_ahb_hif_ops_ipq5332,
+};
+
+static const struct of_device_id ath12k_ahb_of_match[] = {
+ { .compatible = "qcom,ipq5332-wifi",
+ .data = (void *)&ath12k_ahb_ipq5332,
+ },
+ { .compatible = "qcom,ipq5424-wifi",
+ .data = (void *)&ath12k_ahb_ipq5424,
+ },
+ { }
+};
+
+MODULE_DEVICE_TABLE(of, ath12k_ahb_of_match);
+
static struct platform_driver ath12k_ahb_driver = {
.driver = {
.name = "ath12k_ahb",
diff --git a/drivers/net/wireless/ath/ath12k/ahb.h b/drivers/net/wireless/ath/ath12k/ahb.h
index d56244b20a6a667cf3730dc1ce38a22b0e86ffca..84415008331a3d719573d4f88e1596f460b1522c 100644
--- a/drivers/net/wireless/ath/ath12k/ahb.h
+++ b/drivers/net/wireless/ath/ath12k/ahb.h
@@ -43,6 +43,21 @@ enum ath12k_ahb_userpd_irq {
struct ath12k_base;
+struct ath12k_ahb_ops {
+ int (*mdt_load)(struct device *dev, const struct firmware *fw,
+ const char *firmware, int pas_id, void *mem_region,
+ phys_addr_t mem_phys, size_t mem_size,
+ phys_addr_t *reloc_base);
+};
+
+struct ath12k_ahb_probe_data {
+ enum ath12k_hw_rev hw_rev;
+ u32 userpd_id;
+ bool scm_auth_enabled;
+ const struct ath12k_ahb_ops *ahb_ops;
+ const struct ath12k_hif_ops *hif_ops;
+};
+
struct ath12k_ahb {
struct ath12k_base *ab;
struct rproc *tgt_rproc;
@@ -55,10 +70,10 @@ struct ath12k_ahb {
struct completion userpd_spawned;
struct completion userpd_ready;
struct completion userpd_stopped;
- u32 userpd_id;
u32 spawn_bit;
u32 stop_bit;
int userpd_irq_num[ATH12K_USERPD_MAX_IRQ];
+ const struct ath12k_ahb_probe_data *ahb_data;
};
static inline struct ath12k_ahb *ath12k_ab_to_ahb(struct ath12k_base *ab)
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH ath-next v2 1/5] dt-bindings: net: wireless: add ath12k wifi device IPQ5424
2025-05-18 18:22 ` [PATCH ath-next v2 1/5] dt-bindings: net: wireless: add ath12k wifi device IPQ5424 Raj Kumar Bhagat
@ 2025-05-20 6:14 ` Krzysztof Kozlowski
0 siblings, 0 replies; 10+ messages in thread
From: Krzysztof Kozlowski @ 2025-05-20 6:14 UTC (permalink / raw)
To: Raj Kumar Bhagat, Johannes Berg, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k
On 18/05/2025 20:22, Raj Kumar Bhagat wrote:
> Add the device-tree bindings for the ATH12K AHB wifi device IPQ5424.
>
> Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
> ---
> Documentation/devicetree/bindings/net/wireless/qcom,ipq5332-wifi.yaml | 1 +
> 1 file changed, 1 insertion(+)
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH ath-next v2 2/5] wifi: ath12k: Add ath12k_hw_params for IPQ5424
2025-05-18 18:22 ` [PATCH ath-next v2 2/5] wifi: ath12k: Add ath12k_hw_params for IPQ5424 Raj Kumar Bhagat
@ 2025-05-20 15:59 ` Jeff Johnson
2026-03-26 5:10 ` Raj Kumar Bhagat
0 siblings, 1 reply; 10+ messages in thread
From: Jeff Johnson @ 2025-05-20 15:59 UTC (permalink / raw)
To: Raj Kumar Bhagat, Johannes Berg, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Saravanakumar Duraisamy
On 5/18/2025 11:22 AM, Raj Kumar Bhagat wrote:
> diff --git a/drivers/net/wireless/ath/ath12k/hw.c b/drivers/net/wireless/ath/ath12k/hw.c
> index 7e2cf0fb2085ab014fc14a5c81074802674b154e..866de53f37bb5af94e16c796a0052fda39eb4ea8 100644
> --- a/drivers/net/wireless/ath/ath12k/hw.c
> +++ b/drivers/net/wireless/ath/ath12k/hw.c
> @@ -1590,6 +1590,84 @@ static const struct ath12k_hw_params ath12k_hw_params[] = {
> .ce_remap = &ath12k_ce_remap_ipq5332,
> .bdf_addr_offset = 0xC00000,
>
> + .dp_primary_link_only = true,
> + },
> + {
> + .name = "ipq5424 hw1.0",
> + .hw_rev = ATH12K_HW_IPQ5424_HW10,
> + .fw = {
> + .dir = "IPQ5424/hw1.0",
> + .board_size = 256 * 1024,
> + .cal_offset = 128 * 1024,
> + .m3_loader = ath12k_m3_fw_loader_remoteproc,
Until the firmware is available in linux-firmware I cannot accept this series.
Please work with the firmware team to make sure I get firmware via the
internal release process so that I can stage it.
/jeff
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH ath-next v2 5/5] wifi: ath12k: Enable IPQ5424 WiFi device support
2025-05-18 18:22 ` [PATCH ath-next v2 5/5] wifi: ath12k: Enable IPQ5424 WiFi device support Raj Kumar Bhagat
@ 2025-05-20 16:27 ` Jeff Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Jeff Johnson @ 2025-05-20 16:27 UTC (permalink / raw)
To: Raj Kumar Bhagat, Johannes Berg, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Sowmiya Sree Elavalagan, Saravanakumar Duraisamy
On 5/18/2025 11:22 AM, Raj Kumar Bhagat wrote:
> @@ -1008,24 +1011,19 @@ static int ath12k_ahb_probe(struct platform_device *pdev)
> if (!ab)
> return -ENOMEM;
>
> - hw_rev = (enum ath12k_hw_rev)(kernel_ulong_t)of_device_get_match_data(&pdev->dev);
> - switch (hw_rev) {
> - case ATH12K_HW_IPQ5332_HW10:
> - hif_ops = &ath12k_ahb_hif_ops_ipq5332;
> - userpd_id = ATH12K_IPQ5332_USERPD_ID;
> - break;
> - default:
> + ab_ahb = ath12k_ab_to_ahb(ab);
> + ab_ahb->ab = ab;
> + ab_ahb->ahb_data =
> + (struct ath12k_ahb_probe_data *)of_device_get_match_data(&pdev->dev);
seems like an unnecessary (and incorrect?) typecast
ahb_data is const struct ath12k_ahb_probe_data *
of_device_get_match_data() returns const void *
so the const void * => const struct ath12k_ahb_probe_data *
promotion should happen automatically, without typecasting away the const
qualifier
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH ath-next v2 2/5] wifi: ath12k: Add ath12k_hw_params for IPQ5424
2025-05-20 15:59 ` Jeff Johnson
@ 2026-03-26 5:10 ` Raj Kumar Bhagat
0 siblings, 0 replies; 10+ messages in thread
From: Raj Kumar Bhagat @ 2026-03-26 5:10 UTC (permalink / raw)
To: Jeff Johnson, Raj Kumar Bhagat, Johannes Berg, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jeff Johnson
Cc: linux-wireless, devicetree, linux-kernel, ath12k,
Saravanakumar Duraisamy
On 20-05-2025 21:29, Jeff Johnson wrote:
> On 5/18/2025 11:22 AM, Raj Kumar Bhagat wrote:
>> diff --git a/drivers/net/wireless/ath/ath12k/hw.c b/drivers/net/wireless/ath/ath12k/hw.c
>> index 7e2cf0fb2085ab014fc14a5c81074802674b154e..866de53f37bb5af94e16c796a0052fda39eb4ea8 100644
>> --- a/drivers/net/wireless/ath/ath12k/hw.c
>> +++ b/drivers/net/wireless/ath/ath12k/hw.c
>> @@ -1590,6 +1590,84 @@ static const struct ath12k_hw_params ath12k_hw_params[] = {
>> .ce_remap = &ath12k_ce_remap_ipq5332,
>> .bdf_addr_offset = 0xC00000,
>>
>> + .dp_primary_link_only = true,
>> + },
>> + {
>> + .name = "ipq5424 hw1.0",
>> + .hw_rev = ATH12K_HW_IPQ5424_HW10,
>> + .fw = {
>> + .dir = "IPQ5424/hw1.0",
>> + .board_size = 256 * 1024,
>> + .cal_offset = 128 * 1024,
>> + .m3_loader = ath12k_m3_fw_loader_remoteproc,
>
> Until the firmware is available in linux-firmware I cannot accept this series.
> Please work with the firmware team to make sure I get firmware via the
> internal release process so that I can stage it.
>
Hi Jeff,
The Firmware binaries are now uploaded to CLO:
https://git.codelinaro.org/clo/ath-firmware/ath12k-firmware/-/tree/main/IPQ5424/hw1.0?ref_type=heads
Will send the next version and resume this series.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-03-26 5:11 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-18 18:22 [PATCH ath-next v2 0/5] wifi: ath12k: Enable IPQ5424 AHB WiFi device Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 1/5] dt-bindings: net: wireless: add ath12k wifi device IPQ5424 Raj Kumar Bhagat
2025-05-20 6:14 ` Krzysztof Kozlowski
2025-05-18 18:22 ` [PATCH ath-next v2 2/5] wifi: ath12k: Add ath12k_hw_params for IPQ5424 Raj Kumar Bhagat
2025-05-20 15:59 ` Jeff Johnson
2026-03-26 5:10 ` Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 3/5] wifi: ath12k: add ath12k_hw_regs " Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 4/5] wifi: ath12k: Add CE remap hardware parameters " Raj Kumar Bhagat
2025-05-18 18:22 ` [PATCH ath-next v2 5/5] wifi: ath12k: Enable IPQ5424 WiFi device support Raj Kumar Bhagat
2025-05-20 16:27 ` Jeff Johnson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox