Commit 57725b5b authored by Kalle Valo's avatar Kalle Valo
Browse files
ath.git patches for v5.6. Major changes:

ath11k

* a new driver for Qualcomm Wi-Fi 6 (IEEE 802.11ax) devices

ath10k

* significant improvements on receive throughput and firmware download
  with SDIO bus

* report signal strength for each chain also on SDIO

* set max mtu to 1500 on SDIO devices
parents e42617b8 2dc01659
Loading
Loading
Loading
Loading
+273 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.

%YAML 1.2
---
$id: http://devicetree.org/schemas/net/wireless/qcom,ath11k.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Technologies ath11k wireless devices Generic Binding

maintainers:
  - Kalle Valo <kvalo@codeaurora.org>

description: |
  These are dt entries for Qualcomm Technologies, Inc. IEEE 802.11ax
  devices, for example like AHB based IPQ8074.

properties:
  compatible:
    const: qcom,ipq8074-wifi

  reg:
    maxItems: 1

  interrupts:
    items:
      - description: misc-pulse1 interrupt events
      - description: misc-latch interrupt events
      - description: sw exception interrupt events
      - description: watchdog 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-ring3
      - description: interrupt event for ring host2rxdma-monitor-ring2
      - 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 ppdu-end-interrupts-mac3
      - description: interrupt event for ring ppdu-end-interrupts-mac2
      - description: interrupt event for ring ppdu-end-interrupts-mac1
      - description: interrupt event for ring rxdma2host-monitor-status-ring-mac3
      - description: interrupt event for ring rxdma2host-monitor-status-ring-mac2
      - description: interrupt event for ring rxdma2host-monitor-status-ring-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 rxdma2host-destination-ring-mac3
      - description: interrupt event for ring rxdma2host-destination-ring-mac2
      - description: interrupt event for ring rxdma2host-destination-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-ring3
      - description: interrupt event for ring wbm2host-tx-completions-ring2
      - description: interrupt event for ring wbm2host-tx-completions-ring1
      - description: interrupt event for ring tcl2host-status-ring


  interrupt-names:
    items:
      - const: misc-pulse1
      - const: misc-latch
      - const: sw-exception
      - const: watchdog
      - 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-ring3
      - const: host2rxdma-monitor-ring2
      - 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: ppdu-end-interrupts-mac3
      - const: ppdu-end-interrupts-mac2
      - const: ppdu-end-interrupts-mac1
      - const: rxdma2host-monitor-status-ring-mac3
      - const: rxdma2host-monitor-status-ring-mac2
      - const: rxdma2host-monitor-status-ring-mac1
      - const: host2rxdma-host-buf-ring-mac3
      - const: host2rxdma-host-buf-ring-mac2
      - const: host2rxdma-host-buf-ring-mac1
      - const: rxdma2host-destination-ring-mac3
      - const: rxdma2host-destination-ring-mac2
      - const: rxdma2host-destination-ring-mac1
      - const: host2tcl-input-ring4
      - const: host2tcl-input-ring3
      - const: host2tcl-input-ring2
      - const: host2tcl-input-ring1
      - const: wbm2host-tx-completions-ring3
      - const: wbm2host-tx-completions-ring2
      - const: wbm2host-tx-completions-ring1
      - const: tcl2host-status-ring

  qcom,rproc:
    $ref: /schemas/types.yaml#definitions/phandle
    description:
      DT entry of q6v5-wcss remoteproc driver.
      Phandle to a node that can contain the following properties
        * compatible
        * reg
        * reg-names

required:
  - compatible
  - reg
  - interrupts
  - interrupt-names
  - qcom,rproc

additionalProperties: false

examples:
  - |

    q6v5_wcss: q6v5_wcss@CD00000 {
        compatible = "qcom,ipq8074-wcss-pil";
        reg = <0xCD00000 0x4040>,
              <0x4AB000 0x20>;
        reg-names = "qdsp6",
                    "rmb";
    };

    wifi0: wifi@c000000 {
        compatible = "qcom,ipq8074-wifi";
        reg = <0xc000000 0x2000000>;
        interrupts = <0 320 1>,
                     <0 319 1>,
                     <0 318 1>,
                     <0 317 1>,
                     <0 316 1>,
                     <0 315 1>,
                     <0 314 1>,
                     <0 311 1>,
                     <0 310 1>,
                     <0 411 1>,
                     <0 410 1>,
                     <0 40 1>,
                     <0 39 1>,
                     <0 302 1>,
                     <0 301 1>,
                     <0 37 1>,
                     <0 36 1>,
                     <0 296 1>,
                     <0 295 1>,
                     <0 294 1>,
                     <0 293 1>,
                     <0 292 1>,
                     <0 291 1>,
                     <0 290 1>,
                     <0 289 1>,
                     <0 288 1>,
                     <0 239 1>,
                     <0 236 1>,
                     <0 235 1>,
                     <0 234 1>,
                     <0 233 1>,
                     <0 232 1>,
                     <0 231 1>,
                     <0 230 1>,
                     <0 229 1>,
                     <0 228 1>,
                     <0 224 1>,
                     <0 223 1>,
                     <0 203 1>,
                     <0 183 1>,
                     <0 180 1>,
                     <0 179 1>,
                     <0 178 1>,
                     <0 177 1>,
                     <0 176 1>,
                     <0 163 1>,
                     <0 162 1>,
                     <0 160 1>,
                     <0 159 1>,
                     <0 158 1>,
                     <0 157 1>,
                     <0 156 1>;
        interrupt-names = "misc-pulse1",
                          "misc-latch",
                          "sw-exception",
                          "watchdog",
                          "ce0",
                          "ce1",
                          "ce2",
                          "ce3",
                          "ce4",
                          "ce5",
                          "ce6",
                          "ce7",
                          "ce8",
                          "ce9",
                          "ce10",
                          "ce11",
                          "host2wbm-desc-feed",
                          "host2reo-re-injection",
                          "host2reo-command",
                          "host2rxdma-monitor-ring3",
                          "host2rxdma-monitor-ring2",
                          "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",
                          "ppdu-end-interrupts-mac3",
                          "ppdu-end-interrupts-mac2",
                          "ppdu-end-interrupts-mac1",
                          "rxdma2host-monitor-status-ring-mac3",
                          "rxdma2host-monitor-status-ring-mac2",
                          "rxdma2host-monitor-status-ring-mac1",
                          "host2rxdma-host-buf-ring-mac3",
                          "host2rxdma-host-buf-ring-mac2",
                          "host2rxdma-host-buf-ring-mac1",
                          "rxdma2host-destination-ring-mac3",
                          "rxdma2host-destination-ring-mac2",
                          "rxdma2host-destination-ring-mac1",
                          "host2tcl-input-ring4",
                          "host2tcl-input-ring3",
                          "host2tcl-input-ring2",
                          "host2tcl-input-ring1",
                          "wbm2host-tx-completions-ring3",
                          "wbm2host-tx-completions-ring2",
                          "wbm2host-tx-completions-ring1",
                          "tcl2host-status-ring";
        qcom,rproc = <&q6v5_wcss>;
    };
+7 −0
Original line number Diff line number Diff line
@@ -13644,6 +13644,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
S:	Supported
F:	drivers/net/wireless/ath/ath10k/
QUALCOMM ATHEROS ATH11K WIRELESS DRIVER
M:	Kalle Valo <kvalo@codeaurora.org>
L:	ath11k@lists.infradead.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
S:	Supported
F:	drivers/net/wireless/ath/ath11k/
QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
M:	QCA ath9k Development <ath9k-devel@qca.qualcomm.com>
L:	linux-wireless@vger.kernel.org
+1 −0
Original line number Diff line number Diff line
@@ -62,5 +62,6 @@ source "drivers/net/wireless/ath/ar5523/Kconfig"
source "drivers/net/wireless/ath/wil6210/Kconfig"
source "drivers/net/wireless/ath/ath10k/Kconfig"
source "drivers/net/wireless/ath/wcn36xx/Kconfig"
source "drivers/net/wireless/ath/ath11k/Kconfig"

endif
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ obj-$(CONFIG_AR5523) += ar5523/
obj-$(CONFIG_WIL6210)		+= wil6210/
obj-$(CONFIG_ATH10K)		+= ath10k/
obj-$(CONFIG_WCN36XX)		+= wcn36xx/
obj-$(CONFIG_ATH11K)		+= ath11k/

obj-$(CONFIG_ATH_COMMON)	+= ath.o

+51 −1
Original line number Diff line number Diff line
@@ -346,6 +346,52 @@ int ath10k_bmi_execute(struct ath10k *ar, u32 address, u32 param, u32 *result)
	return 0;
}

static int ath10k_bmi_lz_data_large(struct ath10k *ar, const void *buffer, u32 length)
{
	struct bmi_cmd *cmd;
	u32 hdrlen = sizeof(cmd->id) + sizeof(cmd->lz_data);
	u32 txlen;
	int ret;
	size_t buf_len;

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

	if (ar->bmi.done_sent) {
		ath10k_warn(ar, "command disallowed\n");
		return -EBUSY;
	}

	buf_len = sizeof(*cmd) + BMI_MAX_LARGE_DATA_SIZE - BMI_MAX_DATA_SIZE;
	cmd = kzalloc(buf_len, GFP_KERNEL);
	if (!cmd)
		return -ENOMEM;

	while (length) {
		txlen = min(length, BMI_MAX_LARGE_DATA_SIZE - hdrlen);

		WARN_ON_ONCE(txlen & 3);

		cmd->id          = __cpu_to_le32(BMI_LZ_DATA);
		cmd->lz_data.len = __cpu_to_le32(txlen);
		memcpy(cmd->lz_data.payload, buffer, txlen);

		ret = ath10k_hif_exchange_bmi_msg(ar, cmd, hdrlen + txlen,
						  NULL, NULL);
		if (ret) {
			ath10k_warn(ar, "unable to write to the device\n");
			return ret;
		}

		buffer += txlen;
		length -= txlen;
	}

	kfree(cmd);

	return 0;
}

int ath10k_bmi_lz_data(struct ath10k *ar, const void *buffer, u32 length)
{
	struct bmi_cmd cmd;
@@ -430,7 +476,11 @@ int ath10k_bmi_fast_download(struct ath10k *ar,
	if (trailer_len > 0)
		memcpy(trailer, buffer + head_len, trailer_len);

	if (ar->hw_params.bmi_large_size_download)
		ret = ath10k_bmi_lz_data_large(ar, buffer, head_len);
	else
		ret = ath10k_bmi_lz_data(ar, buffer, head_len);

	if (ret)
		return ret;

Loading