Commit 9ceba431 authored by Johannes Berg's avatar Johannes Berg
Browse files

Merge tag 'ath-next-20250418' of...

Merge tag 'ath-next-20250418' of git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath

 into wireless-next

Jeff Johnson says:
====================
ath.git patches for v6.16

ath12k:
Enable AHB support for IPQ5332.
Add monitor interface support to QCN9274.
Add MLO support to WCN7850.
Add 802.11d scan offload support to WCN7850.

ath11k:
Restore hibernation support

In addition, perform the usual set of bug fixes and cleanups across
all supported drivers.
====================

Change-Id: I6555e64d7434f3a5fed5faab25057be93106b18e
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parents f6008327 75f90ba4
Loading
Loading
Loading
Loading
+315 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/wireless/qcom,ipq5332-wifi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Technologies ath12k wireless devices (AHB)

maintainers:
  - Jeff Johnson <jjohnson@kernel.org>

description:
  Qualcomm Technologies IEEE 802.11be AHB devices.

properties:
  compatible:
    enum:
      - qcom,ipq5332-wifi

  reg:
    maxItems: 1

  clocks:
    items:
      - description: XO clock used for copy engine

  clock-names:
    items:
      - const: xo

  interrupts:
    items:
      - description: Fatal interrupt
      - description: Ready interrupt
      - description: Spawn acknowledge interrupt
      - description: Stop acknowledge interrupt
      - description: misc-pulse1 interrupt events
      - description: misc-latch interrupt events
      - description: sw exception interrupt events
      - description: interrupt event for ring CE0
      - 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 CE6
      - description: interrupt event for ring CE7
      - description: interrupt event for ring CE8
      - description: interrupt event for ring CE9
      - description: interrupt event for ring CE10
      - description: interrupt event for ring CE11
      - description: interrupt event for ring host2wbm-desc-feed
      - description: interrupt event for ring host2reo-re-injection
      - description: interrupt event for ring host2reo-command
      - description: interrupt event for ring host2rxdma-monitor-ring1
      - description: interrupt event for ring reo2ost-exception
      - description: interrupt event for ring wbm2host-rx-release
      - description: interrupt event for ring reo2host-status
      - description: interrupt event for ring reo2host-destination-ring4
      - description: interrupt event for ring reo2host-destination-ring3
      - description: interrupt event for ring reo2host-destination-ring2
      - description: interrupt event for ring reo2host-destination-ring1
      - description: interrupt event for ring rxdma2host-monitor-destination-mac3
      - description: interrupt event for ring rxdma2host-monitor-destination-mac2
      - description: interrupt event for ring rxdma2host-monitor-destination-mac1
      - description: interrupt event for ring host2rxdma-host-buf-ring-mac3
      - description: interrupt event for ring host2rxdma-host-buf-ring-mac2
      - description: interrupt event for ring host2rxdma-host-buf-ring-mac1
      - description: interrupt event for ring host2tcl-input-ring4
      - description: interrupt event for ring host2tcl-input-ring3
      - description: interrupt event for ring host2tcl-input-ring2
      - description: interrupt event for ring host2tcl-input-ring1
      - description: interrupt event for ring wbm2host-tx-completions-ring4
      - description: interrupt event for ring wbm2host-tx-completions-ring3
      - description: interrupt event for ring wbm2host-tx-completions-ring2
      - description: interrupt event for ring wbm2host-tx-completions-ring1
      - description: interrupt event for ring host2tx-monitor-ring1
      - description: interrupt event for ring txmon2host-monitor-destination-mac3
      - description: interrupt event for ring txmon2host-monitor-destination-mac2
      - description: interrupt event for ring txmon2host-monitor-destination-mac1
      - description: interrupt event for umac-reset

  interrupt-names:
    items:
      - const: fatal
      - const: ready
      - const: spawn
      - const: stop-ack
      - const: misc-pulse1
      - const: misc-latch
      - const: sw-exception
      - const: ce0
      - const: ce1
      - const: ce2
      - const: ce3
      - const: ce4
      - const: ce5
      - const: ce6
      - const: ce7
      - const: ce8
      - const: ce9
      - const: ce10
      - const: ce11
      - const: host2wbm-desc-feed
      - const: host2reo-re-injection
      - const: host2reo-command
      - const: host2rxdma-monitor-ring1
      - const: reo2ost-exception
      - const: wbm2host-rx-release
      - const: reo2host-status
      - const: reo2host-destination-ring4
      - const: reo2host-destination-ring3
      - const: reo2host-destination-ring2
      - const: reo2host-destination-ring1
      - const: rxdma2host-monitor-destination-mac3
      - const: rxdma2host-monitor-destination-mac2
      - const: rxdma2host-monitor-destination-mac1
      - const: host2rxdma-host-buf-ring-mac3
      - const: host2rxdma-host-buf-ring-mac2
      - const: host2rxdma-host-buf-ring-mac1
      - const: host2tcl-input-ring4
      - const: host2tcl-input-ring3
      - const: host2tcl-input-ring2
      - const: host2tcl-input-ring1
      - const: wbm2host-tx-completions-ring4
      - const: wbm2host-tx-completions-ring3
      - const: wbm2host-tx-completions-ring2
      - const: wbm2host-tx-completions-ring1
      - const: host2tx-monitor-ring1
      - const: txmon2host-monitor-destination-mac3
      - const: txmon2host-monitor-destination-mac2
      - const: txmon2host-monitor-destination-mac1
      - const: umac-reset

  memory-region:
    description:
      Memory regions used by the ath12k firmware.
    items:
      - description: Q6 memory region
      - description: m3 dump memory region
      - description: Q6 caldata memory region
      - description: Multi Link Operation (MLO) Global memory region

  memory-region-names:
    items:
      - const: q6-region
      - const: m3-dump
      - const: q6-caldb
      - const: mlo-global-mem

  qcom,calibration-variant:
    $ref: /schemas/types.yaml#/definitions/string
    description:
      String to uniquely identify variant of the calibration data for designs
      with colliding bus and device ids

  qcom,rproc:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      Phandle to the Qualcomm Hexagon DSP(q6 remote processor), which is utilized
      for offloading WiFi processing tasks, this q6 remote processor operates in
      conjunction with WiFi.

  qcom,smem-states:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: States used by the AP to signal the remote processor
    items:
      - description: Shutdown WCSS pd
      - description: Stop WCSS pd
      - description: Spawn WCSS pd

  qcom,smem-state-names:
    description:
      Names of the states used by the AP to signal the remote processor
    items:
      - const: shutdown
      - const: stop
      - const: spawn

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - interrupts
  - interrupt-names
  - memory-region
  - memory-region-names
  - qcom,rproc
  - qcom,smem-states
  - qcom,smem-state-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/qcom,ipq5332-gcc.h>

    wifi0: wifi@c000000 {
        compatible = "qcom,ipq5332-wifi";
        reg = <0x0c000000 0x1000000>;
        clocks = <&gcc GCC_XO_CLK>;
        clock-names = "xo";
        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>,
                              <&intc GIC_SPI 559 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 560 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 561 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 422 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 423 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 424 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 425 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 426 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 427 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 428 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 429 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 430 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 432 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 433 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 491 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 495 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 493 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 544 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 457 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 466 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 497 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 454 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 453 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 452 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 451 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 488 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 488 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 484 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 554 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 554 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 549 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 507 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 500 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 499 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 498 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 450 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 449 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 448 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 447 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 543 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 486 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 486 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 482 IRQ_TYPE_EDGE_RISING>,
                              <&intc GIC_SPI 419 IRQ_TYPE_EDGE_RISING>;
        interrupt-names = "fatal",
                          "ready",
                          "spawn",
                          "stop-ack",
                          "misc-pulse1",
                          "misc-latch",
                          "sw-exception",
                          "ce0",
                          "ce1",
                          "ce2",
                          "ce3",
                          "ce4",
                          "ce5",
                          "ce6",
                          "ce7",
                          "ce8",
                          "ce9",
                          "ce10",
                          "ce11",
                          "host2wbm-desc-feed",
                          "host2reo-re-injection",
                          "host2reo-command",
                          "host2rxdma-monitor-ring1",
                          "reo2ost-exception",
                          "wbm2host-rx-release",
                          "reo2host-status",
                          "reo2host-destination-ring4",
                          "reo2host-destination-ring3",
                          "reo2host-destination-ring2",
                          "reo2host-destination-ring1",
                          "rxdma2host-monitor-destination-mac3",
                          "rxdma2host-monitor-destination-mac2",
                          "rxdma2host-monitor-destination-mac1",
                          "host2rxdma-host-buf-ring-mac3",
                          "host2rxdma-host-buf-ring-mac2",
                          "host2rxdma-host-buf-ring-mac1",
                          "host2tcl-input-ring4",
                          "host2tcl-input-ring3",
                          "host2tcl-input-ring2",
                          "host2tcl-input-ring1",
                          "wbm2host-tx-completions-ring4",
                          "wbm2host-tx-completions-ring3",
                          "wbm2host-tx-completions-ring2",
                          "wbm2host-tx-completions-ring1",
                          "host2tx-monitor-ring1",
                          "txmon2host-monitor-destination-mac3",
                          "txmon2host-monitor-destination-mac2",
                          "txmon2host-monitor-destination-mac1",
                          "umac-reset";

        memory-region = <&q6_region>, <&m3_dump>, <&q6_caldb>, <&mlo_mem>;
        memory-region-names = "q6-region", "m3-dump", "q6-caldb", "mlo-global-mem";
        qcom,calibration-variant = "RDP441_1";
        qcom,rproc = <&q6v5_wcss>;
        qcom,smem-states = <&wcss_smp2p_out 8>,
                           <&wcss_smp2p_out 9>,
                           <&wcss_smp2p_out 10>;
        qcom,smem-state-names = "shutdown",
                                "stop",
                                "spawn";
    };
+1 −1
Original line number Diff line number Diff line
@@ -497,7 +497,7 @@ static int ath10k_ahb_resource_init(struct ath10k *ar)

	ath10k_dbg(ar, ATH10K_DBG_BOOT, "irq: %d\n", ar_ahb->irq);

	ath10k_dbg(ar, ATH10K_DBG_BOOT, "mem: 0x%pK mem_len: %lu gcc mem: 0x%pK tcsr_mem: 0x%pK\n",
	ath10k_dbg(ar, ATH10K_DBG_BOOT, "mem: 0x%p mem_len: %lu gcc mem: 0x%p tcsr_mem: 0x%p\n",
		   ar_ahb->mem, ar_ahb->mem_len,
		   ar_ahb->gcc_mem, ar_ahb->tcsr_mem);
	return 0;
+3 −3
Original line number Diff line number Diff line
@@ -349,7 +349,7 @@ static int ath10k_bmi_lz_data_large(struct ath10k *ar, const void *buffer, u32 l
	int ret;
	size_t buf_len;

	ath10k_dbg(ar, ATH10K_DBG_BMI, "large bmi lz data buffer 0x%pK length %d\n",
	ath10k_dbg(ar, ATH10K_DBG_BMI, "large bmi lz data buffer 0x%p length %d\n",
		   buffer, length);

	if (ar->bmi.done_sent) {
@@ -395,7 +395,7 @@ int ath10k_bmi_lz_data(struct ath10k *ar, const void *buffer, u32 length)
	u32 txlen;
	int ret;

	ath10k_dbg(ar, ATH10K_DBG_BMI, "bmi lz data buffer 0x%pK length %d\n",
	ath10k_dbg(ar, ATH10K_DBG_BMI, "bmi lz data buffer 0x%p length %d\n",
		   buffer, length);

	if (ar->bmi.done_sent) {
@@ -461,7 +461,7 @@ int ath10k_bmi_fast_download(struct ath10k *ar,
	int ret;

	ath10k_dbg(ar, ATH10K_DBG_BMI,
		   "bmi fast download address 0x%x buffer 0x%pK length %d\n",
		   "bmi fast download address 0x%x buffer 0x%p length %d\n",
		   address, buffer, length);

	ret = ath10k_bmi_lz_stream_start(ar, address);
+2 −2
Original line number Diff line number Diff line
@@ -1388,7 +1388,7 @@ static int ath10k_ce_init_src_ring(struct ath10k *ar,
	ath10k_ce_src_ring_highmark_set(ar, ctrl_addr, nentries);

	ath10k_dbg(ar, ATH10K_DBG_BOOT,
		   "boot init ce src ring id %d entries %d base_addr %pK\n",
		   "boot init ce src ring id %d entries %d base_addr %p\n",
		   ce_id, nentries, src_ring->base_addr_owner_space);

	return 0;
@@ -1426,7 +1426,7 @@ static int ath10k_ce_init_dest_ring(struct ath10k *ar,
	ath10k_ce_dest_ring_highmark_set(ar, ctrl_addr, nentries);

	ath10k_dbg(ar, ATH10K_DBG_BOOT,
		   "boot ce dest ring id %d entries %d base_addr %pK\n",
		   "boot ce dest ring id %d entries %d base_addr %p\n",
		   ce_id, nentries, dest_ring->base_addr_owner_space);

	return 0;
+2 −2
Original line number Diff line number Diff line
@@ -1200,7 +1200,7 @@ static int ath10k_download_fw(struct ath10k *ar)
	}

	ath10k_dbg(ar, ATH10K_DBG_BOOT,
		   "boot uploading firmware image %pK len %d\n",
		   "boot uploading firmware image %p len %d\n",
		   data, data_len);

	/* Check if device supports to download firmware via
@@ -1826,7 +1826,7 @@ static int ath10k_download_and_run_otp(struct ath10k *ar)

	if (!ar->running_fw->fw_file.otp_data ||
	    !ar->running_fw->fw_file.otp_len) {
		ath10k_warn(ar, "Not running otp, calibration will be incorrect (otp-data %pK otp_len %zd)!\n",
		ath10k_warn(ar, "Not running otp, calibration will be incorrect (otp-data %p otp_len %zd)!\n",
			    ar->running_fw->fw_file.otp_data,
			    ar->running_fw->fw_file.otp_len);
		return 0;
Loading