Commit 43b77244 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge tag 'wireless-next-2024-09-04' of...

Merge tag 'wireless-next-2024-09-04' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next

Kalle Valo says:

====================
pull-request: wireless-next-2024-09-04

here's a pull request to net-next tree, more info below. Please let me know if
there are any problems.
====================

Conflicts:

drivers/net/wireless/ath/ath12k/hw.c
  38055789 ("wifi: ath12k: use 128 bytes aligned iova in transmit path for WCN7850")
  8be12629 ("wifi: ath12k: restore ASPM for supported hardwares only")
https://lore.kernel.org/87msldyj97.fsf@kernel.org

Link: https://patch.msgid.link/20240904153205.64C11C4CEC2@smtp.kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents d57f7b45 97b766f9
Loading
Loading
Loading
Loading
+93 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/wireless/marvell,sd8787.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Marvell 8787/8897/8978/8997 (sd8787/sd8897/sd8978/sd8997/pcie8997) SDIO/PCIE devices

maintainers:
  - Brian Norris <briannorris@chromium.org>
  - Frank Li <Frank.Li@nxp.com>

description:
  This node provides properties for describing the Marvell SDIO/PCIE wireless device.
  The node is expected to be specified as a child node to the SDIO/PCIE controller that
  connects the device to the system.

properties:
  compatible:
    enum:
      - marvell,sd8787
      - marvell,sd8897
      - marvell,sd8978
      - marvell,sd8997
      - nxp,iw416
      - pci11ab,2b42
      - pci1b4b,2b42

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  wakeup-source: true

  marvell,caldata-txpwrlimit-2g:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description: Calibration data for the 2GHz band.
    maxItems: 566

  marvell,caldata-txpwrlimit-5g-sub0:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description: Calibration data for sub-band 0 in the 5GHz band.
    maxItems: 502

  marvell,caldata-txpwrlimit-5g-sub1:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description: Calibration data for sub-band 1 in the 5GHz band.
    maxItems: 688

  marvell,caldata-txpwrlimit-5g-sub2:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description: Calibration data for sub-band 2 in the 5GHz band.
    maxItems: 750

  marvell,caldata-txpwrlimit-5g-sub3:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description: Calibration data for sub-band 3 in the 5GHz band.
    maxItems: 502

  marvell,wakeup-pin:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Provides the pin number for the wakeup pin from the device's point of
      view. The wakeup pin is used for the device to wake the host system
      from sleep. This property is only necessary if the wakeup pin is
      wired in a non-standard way, such that the default pin assignments
      are invalid.

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    mmc {
         #address-cells = <1>;
         #size-cells = <0>;

         wifi@1 {
             compatible = "marvell,sd8897";
             reg = <1>;
             interrupt-parent = <&pio>;
             interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
             marvell,wakeup-pin = <3>;
        };
    };
+0 −70
Original line number Diff line number Diff line
Marvell 8787/8897/8978/8997 (sd8787/sd8897/sd8978/sd8997/pcie8997) SDIO/PCIE devices
------

This node provides properties for controlling the Marvell SDIO/PCIE wireless device.
The node is expected to be specified as a child node to the SDIO/PCIE controller that
connects the device to the system.

Required properties:

  - compatible : should be one of the following:
	* "marvell,sd8787"
	* "marvell,sd8897"
	* "marvell,sd8978"
	* "marvell,sd8997"
	* "nxp,iw416"
	* "pci11ab,2b42"
	* "pci1b4b,2b42"

Optional properties:

  - marvell,caldata* : A series of properties with marvell,caldata prefix,
		      represent calibration data downloaded to the device during
		      initialization. This is an array of unsigned 8-bit values.
		      the properties should follow below property name and
		      corresponding array length:
	"marvell,caldata-txpwrlimit-2g" (length = 566).
	"marvell,caldata-txpwrlimit-5g-sub0" (length = 502).
	"marvell,caldata-txpwrlimit-5g-sub1" (length = 688).
	"marvell,caldata-txpwrlimit-5g-sub2" (length = 750).
	"marvell,caldata-txpwrlimit-5g-sub3" (length = 502).
  - marvell,wakeup-pin : a wakeup pin number of wifi chip which will be configured
		      to firmware. Firmware will wakeup the host using this pin
		      during suspend/resume.
  - interrupts : interrupt pin number to the cpu. driver will request an irq based on
		 this interrupt number. during system suspend, the irq will be enabled
		 so that the wifi chip can wakeup host platform under certain condition.
		 during system resume, the irq will be disabled to make sure
		 unnecessary interrupt is not received.
  - vmmc-supply: a phandle of a regulator, supplying VCC to the card
  - mmc-pwrseq:  phandle to the MMC power sequence node. See "mmc-pwrseq-*"
		 for documentation of MMC power sequence bindings.

Example:

Tx power limit calibration data is configured in below example.
The calibration data is an array of unsigned values, the length
can vary between hw versions.
IRQ pin 38 is used as system wakeup source interrupt. wakeup pin 3 is configured
so that firmware can wakeup host using this device side pin.

&mmc3 {
	vmmc-supply = <&wlan_en_reg>;
	mmc-pwrseq = <&wifi_pwrseq>;
	bus-width = <4>;
	cap-power-off-card;
	keep-power-in-suspend;

	#address-cells = <1>;
	#size-cells = <0>;
	mwifiex: wifi@1 {
		compatible = "marvell,sd8897";
		reg = <1>;
		interrupt-parent = <&pio>;
		interrupts = <38 IRQ_TYPE_LEVEL_LOW>;

		marvell,caldata_00_txpwrlimit_2g_cfg_set = /bits/ 8 <
	0x01 0x00 0x06 0x00 0x08 0x02 0x89 0x01>;
		marvell,wakeup-pin = <3>;
	};
};
+1 −0
Original line number Diff line number Diff line
@@ -399,6 +399,7 @@ struct ath11k_vif {
	u8 bssid[ETH_ALEN];
	struct cfg80211_bitrate_mask bitrate_mask;
	struct delayed_work connection_loss_work;
	struct work_struct bcn_tx_work;
	int num_legacy_stations;
	int rtscts_prot_mode;
	int txpower;
+1 −1
Original line number Diff line number Diff line
@@ -2697,7 +2697,7 @@ int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id,
		if (unlikely(push_reason !=
			     HAL_REO_DEST_RING_PUSH_REASON_ROUTING_INSTRUCTION)) {
			dev_kfree_skb_any(msdu);
			ab->soc_stats.hal_reo_error[dp->reo_dst_ring[ring_id].ring_id]++;
			ab->soc_stats.hal_reo_error[ring_id]++;
			continue;
		}

+12 −0
Original line number Diff line number Diff line
@@ -6599,6 +6599,16 @@ static int ath11k_mac_vdev_delete(struct ath11k *ar, struct ath11k_vif *arvif)
	return ret;
}

static void ath11k_mac_bcn_tx_work(struct work_struct *work)
{
	struct ath11k_vif *arvif = container_of(work, struct ath11k_vif,
						bcn_tx_work);

	mutex_lock(&arvif->ar->conf_mutex);
	ath11k_mac_bcn_tx_event(arvif);
	mutex_unlock(&arvif->ar->conf_mutex);
}

static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw,
				       struct ieee80211_vif *vif)
{
@@ -6637,6 +6647,7 @@ static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw,
	arvif->vif = vif;

	INIT_LIST_HEAD(&arvif->list);
	INIT_WORK(&arvif->bcn_tx_work, ath11k_mac_bcn_tx_work);
	INIT_DELAYED_WORK(&arvif->connection_loss_work,
			  ath11k_mac_vif_sta_connection_loss_work);

@@ -6879,6 +6890,7 @@ static void ath11k_mac_op_remove_interface(struct ieee80211_hw *hw,
	int i;

	cancel_delayed_work_sync(&arvif->connection_loss_work);
	cancel_work_sync(&arvif->bcn_tx_work);

	mutex_lock(&ar->conf_mutex);

Loading