Commit f39af96d authored by Kalle Valo's avatar Kalle Valo
Browse files
ath.git patches for v5.19. Major changes:

ath11k

* support setting Specific Absorption Rate (SAR) for WCN6855

* read country code from SMBIOS for WCN6855/QCA6390

* support for WCN6750
parents da4cea16 54a6f295
Loading
Loading
Loading
Loading
+252 −109
Original line number Diff line number Diff line
@@ -20,10 +20,70 @@ properties:
    enum:
      - qcom,ipq8074-wifi
      - qcom,ipq6018-wifi
      - qcom,wcn6750-wifi

  reg:
    maxItems: 1

  interrupts:
    minItems: 32
    maxItems: 52

  interrupt-names:
    maxItems: 52

  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

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

  memory-region:
    minItems: 1
    maxItems: 2
    description:
      phandle to a node describing reserved memory (System RAM memory)
      used by ath11k firmware (see bindings/reserved-memory/reserved-memory.txt)

  iommus:
    minItems: 1
    maxItems: 2

  wifi-firmware:
    type: object
    description: |
      WCN6750 wifi node can contain one optional firmware subnode.
      Firmware subnode is needed when the platform does not have Trustzone.
    required:
      - iommus

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

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,ipq8074-wifi
              - qcom,ipq6018-wifi
    then:
      properties:
        interrupts:
          items:
            - description: misc-pulse1 interrupt events
@@ -78,8 +138,6 @@ properties:
            - 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
@@ -135,35 +193,59 @@ properties:
            - 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

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

  memory-region:
    maxItems: 1
    description:
      phandle to a node describing reserved memory (System RAM memory)
      used by ath11k firmware (see bindings/reserved-memory/reserved-memory.txt)

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,ipq8074-wifi
              - qcom,ipq6018-wifi
    then:
      required:
  - compatible
  - reg
  - interrupts
        - interrupt-names
  - qcom,rproc

additionalProperties: false
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,wcn6750-wifi
    then:
      properties:
        interrupts:
          items:
            - 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 DP1
            - description: interrupt event for ring DP2
            - description: interrupt event for ring DP3
            - description: interrupt event for ring DP4
            - description: interrupt event for ring DP5
            - description: interrupt event for ring DP6
            - description: interrupt event for ring DP7
            - description: interrupt event for ring DP8
            - description: interrupt event for ring DP9
            - description: interrupt event for ring DP10
            - description: interrupt event for ring DP11
            - description: interrupt event for ring DP12
            - description: interrupt event for ring DP13
            - description: interrupt event for ring DP14
            - description: interrupt event for ring DP15
            - description: interrupt event for ring DP16
            - description: interrupt event for ring DP17
            - description: interrupt event for ring DP18
            - description: interrupt event for ring DP19
            - description: interrupt event for ring DP20
            - description: interrupt event for ring DP21
            - description: interrupt event for ring DP22

examples:
  - |
@@ -309,3 +391,64 @@ examples:
            };
        };
    };

  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    reserved-memory {
        #address-cells = <2>;
        #size-cells = <2>;

        wlan_ce_mem: memory@4cd000 {
            no-map;
            reg = <0x0 0x004cd000 0x0 0x1000>;
        };

        wlan_fw_mem: memory@80c00000 {
            no-map;
            reg = <0x0 0x80c00000 0x0 0xc00000>;
        };
    };

    wifi: wifi@17a10040 {
        compatible = "qcom,wcn6750-wifi";
        reg = <0x17a10040 0x0>;
        iommus = <&apps_smmu 0x1c00 0x1>;
        interrupts = <GIC_SPI 768 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 769 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 770 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 771 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 772 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 773 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 774 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 775 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 776 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 777 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 778 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 779 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 780 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 781 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 782 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 783 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 784 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 785 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 786 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 787 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 788 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 789 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 790 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 791 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 792 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 793 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 794 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 795 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 796 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 797 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 798 IRQ_TYPE_EDGE_RISING>,
                     <GIC_SPI 799 IRQ_TYPE_EDGE_RISING>;
        qcom,rproc = <&remoteproc_wpss>;
        memory-region = <&wlan_fw_mem>, <&wlan_ce_mem>;
        wifi-firmware {
                iommus = <&apps_smmu 0x1c02 0x1>;
        };
    };
+0 −3
Original line number Diff line number Diff line
@@ -59,9 +59,6 @@
#define ATH10K_KEEPALIVE_MAX_IDLE 3895
#define ATH10K_KEEPALIVE_MAX_UNRESPONSIVE 3900

/* NAPI poll budget */
#define ATH10K_NAPI_BUDGET      64

/* SMBIOS type containing Board Data File Name Extension */
#define ATH10K_SMBIOS_BDF_EXT_TYPE 0xF8

+20 −5
Original line number Diff line number Diff line
@@ -4119,11 +4119,10 @@ void ath10k_offchan_tx_work(struct work_struct *work)
		peer = ath10k_peer_find(ar, vdev_id, peer_addr);
		spin_unlock_bh(&ar->data_lock);

		if (peer)
		if (peer) {
			ath10k_warn(ar, "peer %pM on vdev %d already present\n",
				    peer_addr, vdev_id);

		if (!peer) {
		} else {
			ret = ath10k_peer_create(ar, NULL, NULL, vdev_id,
						 peer_addr,
						 WMI_PEER_TYPE_DEFAULT);
@@ -5340,13 +5339,29 @@ static int ath10k_start(struct ieee80211_hw *hw)
static void ath10k_stop(struct ieee80211_hw *hw)
{
	struct ath10k *ar = hw->priv;
	u32 opt;

	ath10k_drain_tx(ar);

	mutex_lock(&ar->conf_mutex);
	if (ar->state != ATH10K_STATE_OFF) {
		if (!ar->hw_rfkill_on)
		if (!ar->hw_rfkill_on) {
			/* If the current driver state is RESTARTING but not yet
			 * fully RESTARTED because of incoming suspend event,
			 * then ath10k_halt() is already called via
			 * ath10k_core_restart() and should not be called here.
			 */
			if (ar->state != ATH10K_STATE_RESTARTING) {
				ath10k_halt(ar);
			} else {
				/* Suspending here, because when in RESTARTING
				 * state, ath10k_core_stop() skips
				 * ath10k_wait_for_suspend().
				 */
				opt = WMI_PDEV_SUSPEND_AND_DISABLE_INTR;
				ath10k_wait_for_suspend(ar, opt);
			}
		}
		ar->state = ATH10K_STATE_OFF;
	}
	mutex_unlock(&ar->conf_mutex);
+1 −1
Original line number Diff line number Diff line
@@ -3216,7 +3216,7 @@ static void ath10k_pci_free_irq(struct ath10k *ar)
void ath10k_pci_init_napi(struct ath10k *ar)
{
	netif_napi_add(&ar->napi_dev, &ar->napi, ath10k_pci_napi_poll,
		       ATH10K_NAPI_BUDGET);
		       NAPI_POLL_WEIGHT);
}

static int ath10k_pci_init_irq(struct ath10k *ar)
+1 −1
Original line number Diff line number Diff line
@@ -2532,7 +2532,7 @@ static int ath10k_sdio_probe(struct sdio_func *func,
	}

	netif_napi_add(&ar->napi_dev, &ar->napi, ath10k_sdio_napi_poll,
		       ATH10K_NAPI_BUDGET);
		       NAPI_POLL_WEIGHT);

	ath10k_dbg(ar, ATH10K_DBG_BOOT,
		   "sdio new func %d vendor 0x%x device 0x%x block 0x%x/0x%x\n",
Loading