[PATCH v5 00/13] wifi: ath12k: add Ath12k AHB driver support for IPQ5332

Raj Kumar Bhagat
2025-01-30T04:35:45Z

Currently, Ath12k driver only supports WiFi devices that are based on
PCI bus. New Ath12k device IPQ5332 is based on AHB bus. Hence, add
Ath12k AHB support for IPQ5332.

IPQ5332 is IEEE802.11be 2 GHz 2x2 Wifi device. To bring-up IPQ5332
device:
- Add hardware parameters for IPQ5332.
- CE register address space in IPQ5332 is separate from WCSS register
space. Hence, add logic to remap CE register address.
- Add support for fixed QMI firmware memory for IPQ5332.
- Support userPD handling for WCSS secure PIL driver to enable ath12k
AHB support.

NOTE:
The working upstream DTS changes for this series have been posted as a
separate series.
[PATCH v2] arm64: dts: qcom: add wifi node for IPQ5332 based RDP441

v5:
- DT binding: Added `memory-region-names` property to address undocumented
ABIs.
- DT binding: Added four complete items to `memory-region`, required by
ath12k firmware.
- All calls to `of_find_node_by_name()` are removed. Introduced helper
function `ath12k_core_get_reserved_mem_by_name()` to get the reserved
memory by name.
- Removed unused include headers.
- Removed error prints for impossible scenarios.
- Used proper phandle API `of_parse_phandle()` to read `qcom,rproc`.
- Used `dev_err_probe()` API for logging errors wherever applicable.
- Changed hardware parameter `needs_m3_fw` to `enum ath12k_m3_fw_loaders`.
- Changed hardware parameter `bdf_addr` to `bdf_addr_offset` to store the
offset for BDF memory from the q6-memory as base.

v4: https://lore.kernel.org/all/20241210074159.2637933-1-quic_rajkbhag@quicinc.com/
- Missed to include some review list in v3. Hence sending v4 with
all review list as per - scripts/get_maintainers.pl

v3: https://lore.kernel.org/all/20241209165644.1680167-1-quic_rajkbhag@quicinc.com/
- DT binding: clock name changed from gcc_xo_clk to xo.
- DT binding: Upper constraint added for memory-region property.
- DT binding: The description for "qcom,rproc" phandle updated to represent
the hardware aspect.
- DT binding: Added property qcom,ath12k-calibration-variant.
- Squashed patch[2/22] to patch[8/22] of v2 into a single patch.
- Patch reordering is done.
- The hardware parameter "m3_fw_support" renamed to "needs_m3_fw".
- CMEM remap and CMEM register handling are dropped. CMEM registers are
accessed within WCSS register space (ab->mem).
- The devm APIs are used for interrupts handling.
- Logic updated in ath12k_ahb_map_service_to_pipe().
- Dependency path series from other subsystem are dropped.

v2: https://lore.kernel.org/all/20241015182637.955753-1-quic_rajkbhag@quicinc.com/
- "qcom,board_id" property is dropped. This is not the direct dependency
for Ath12k AHB support, hence it can be taken up separately.
- "qcom,bdf-addr" property is dropped in device-tree and moved to ath12k
driver.
- Currently we have only one compatible enum (qcom,ipq5332-wifi), hence
conditional if() check for defining the binding is removed.
- "reserved-memory" node is dropped from example DTS.
- "status" property is dropped in wifi node of example DTS.
- Integrated the “Support userPD handling for WCSS secure PIL driver”
patch series with the Ath12k AHB bring-up patch.
- Removed the RFC tag as all dependency patch series are now compilable.

v1: https://lore.kernel.org/all/20240814094323.3927603-1-quic_rajkbhag@quicinc.com/

Balamurugan S (6):
wifi: ath12k: fix incorrect CE addresses
wifi: ath12k: add ath12k_hw_params for IPQ5332
wifi: ath12k: avoid m3 firmware download in AHB device IPQ5332
wifi: ath12k: Add hw_params to remap CE register space for IPQ5332
wifi: ath12k: add AHB driver support for IPQ5332
wifi: ath12k: enable ath12k AHB support

P Praneesh (1):
wifi: ath12k: refactor ath12k_hw_regs structure

Raj Kumar Bhagat (2):
dt-bindings: net: wireless: describe the ath12k AHB module
wifi: ath12k: add support for fixed QMI firmware memory

Sowmiya Sree Elavalagan (4):
wifi: ath12k: Power up root PD
wifi: ath12k: Register various userPD interrupts and save SMEM entries
wifi: ath12k: Power up userPD
wifi: ath12k: Power down userPD

.../net/wireless/qcom,ath12k-ahb.yaml | 319 +++++
drivers/net/wireless/ath/ath12k/Kconfig | 6 +
drivers/net/wireless/ath/ath12k/Makefile | 1 +
drivers/net/wireless/ath/ath12k/ahb.c | 1234 +++++++++++++++++
drivers/net/wireless/ath/ath12k/ahb.h | 80 ++
drivers/net/wireless/ath/ath12k/ce.c | 92 +-
drivers/net/wireless/ath/ath12k/ce.h | 18 +-
drivers/net/wireless/ath/ath12k/core.c | 59 +-
drivers/net/wireless/ath/ath12k/core.h | 14 +-
drivers/net/wireless/ath/ath12k/hal.c | 84 +-
drivers/net/wireless/ath/ath12k/hal.h | 68 +-
drivers/net/wireless/ath/ath12k/hw.c | 479 ++++++-
drivers/net/wireless/ath/ath12k/hw.h | 22 +-
drivers/net/wireless/ath/ath12k/pci.c | 10 +-
drivers/net/wireless/ath/ath12k/pci.h | 4 +-
drivers/net/wireless/ath/ath12k/qmi.c | 218 ++-
drivers/net/wireless/ath/ath12k/qmi.h | 3 +-
17 files changed, 2593 insertions(+), 118 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
create mode 100644 drivers/net/wireless/ath/ath12k/ahb.c
create mode 100644 drivers/net/wireless/ath/ath12k/ahb.h

base-commit: a10b8b584b8bcb7559f068ce247fc27d0c4850ca
--
2.34.1