xref: /linux/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml (revision 0fbbc19482bd398da2163b2648a53eed6bdbc6cd)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/wireless/qcom,ath10k.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Technologies ath10k wireless devices
8
9maintainers:
10  - Jeff Johnson <jjohnson@kernel.org>
11
12description:
13  Qualcomm Technologies, Inc. IEEE 802.11ac devices.
14
15properties:
16  compatible:
17    enum:
18      - qcom,ath10k # SDIO-based devices
19      - qcom,ipq4019-wifi
20      - qcom,wcn3990-wifi # SNoC-based devices
21
22  reg:
23    maxItems: 1
24
25  reg-names:
26    items:
27      - const: membase
28
29  interrupts:
30    minItems: 12
31    maxItems: 17
32
33  interrupt-names:
34    minItems: 12
35    maxItems: 17
36
37  memory-region:
38    maxItems: 1
39    description:
40      Reference to the MSA memory region used by the Wi-Fi firmware
41      running on the Q6 core.
42
43  iommus:
44    minItems: 1
45    maxItems: 2
46
47  clocks:
48    minItems: 1
49    maxItems: 3
50
51  clock-names:
52    minItems: 1
53    maxItems: 3
54
55  resets:
56    maxItems: 6
57
58  reset-names:
59    items:
60      - const: wifi_cpu_init
61      - const: wifi_radio_srif
62      - const: wifi_radio_warm
63      - const: wifi_radio_cold
64      - const: wifi_core_warm
65      - const: wifi_core_cold
66
67  ext-fem-name:
68    $ref: /schemas/types.yaml#/definitions/string
69    description: Name of external front end module used.
70    enum:
71      - microsemi-lx5586
72      - sky85703-11
73      - sky85803
74
75  firmware-name:
76    maxItems: 1
77    description:
78      If present, a board or platform specific string used to lookup firmware
79      files for the device.
80
81  wifi-firmware:
82    type: object
83    additionalProperties: false
84    description: |
85      The ath10k Wi-Fi node can contain one optional firmware subnode.
86      Firmware subnode is needed when the platform does not have Trustzone.
87    properties:
88      iommus:
89        maxItems: 1
90    required:
91      - iommus
92
93  ieee80211-freq-limit: true
94
95  qcom,calibration-data:
96    $ref: /schemas/types.yaml#/definitions/uint8-array
97    description:
98      Calibration data + board-specific data as a byte array. The length
99      can vary between hardware versions.
100
101  qcom,ath10k-calibration-data:
102    $ref: /schemas/types.yaml#/definitions/uint8-array
103    deprecated: true
104    description:
105      Calibration data + board-specific data as a byte array. The length
106      can vary between hardware versions.
107
108  qcom,calibration-variant:
109    $ref: /schemas/types.yaml#/definitions/string
110    description:
111      Unique variant identifier of the calibration data in board-2.bin
112      for designs with colliding bus and device specific ids
113
114  qcom,ath10k-calibration-variant:
115    $ref: /schemas/types.yaml#/definitions/string
116    deprecated: true
117    description:
118      Unique variant identifier of the calibration data in board-2.bin
119      for designs with colliding bus and device specific ids
120
121  qcom,pre-calibration-data:
122    $ref: /schemas/types.yaml#/definitions/uint8-array
123    description:
124      Pre-calibration data as a byte array. The length can vary between
125      hardware versions.
126
127  qcom,ath10k-pre-calibration-data:
128    $ref: /schemas/types.yaml#/definitions/uint8-array
129    deprecated: true
130    description:
131      Pre-calibration data as a byte array. The length can vary between
132      hardware versions.
133
134  qcom,coexist-support:
135    $ref: /schemas/types.yaml#/definitions/uint8
136    enum: [0, 1]
137    description:
138      Indicate coex support by the hardware.
139
140  qcom,coexist-gpio-pin:
141    $ref: /schemas/types.yaml#/definitions/uint32
142    description:
143      COEX GPIO number provided to the Wi-Fi firmware.
144
145  qcom,msa-fixed-perm:
146    type: boolean
147    description:
148      Whether to skip executing an SCM call that reassigns the memory
149      region ownership.
150
151  qcom,no-msa-ready-indicator:
152    type: boolean
153    description:
154      Don't wait for MSA_READY indicator to complete init.
155
156  qcom,smem-states:
157    $ref: /schemas/types.yaml#/definitions/phandle-array
158    description: State bits used by the AP to signal the WLAN Q6.
159    items:
160      - description: Signal bits used to enable/disable low power mode
161                     on WCN in the case of WoW (Wake on Wireless).
162
163  qcom,smem-state-names:
164    description: The names of the state bits used for SMP2P output.
165    items:
166      - const: wlan-smp2p-out
167
168  qcom,snoc-host-cap-8bit-quirk:
169    type: boolean
170    description:
171      Quirk specifying that the firmware expects the 8bit version
172      of the host capability QMI request
173
174  qcom,snoc-host-cap-skip-quirk:
175    type: boolean
176    description:
177      Quirk specifying that the firmware wants to skip the host
178      capability QMI request
179
180  qcom,xo-cal-data:
181    $ref: /schemas/types.yaml#/definitions/uint32
182    description:
183      XO cal offset to be configured in XO trim register.
184
185  vdd-0.8-cx-mx-supply:
186    description: Main logic power rail
187
188  vdd-1.8-xo-supply:
189    description: Crystal oscillator supply
190
191  vdd-1.3-rfa-supply:
192    description: RFA supply
193
194  vdd-3.3-ch0-supply:
195    description: Primary Wi-Fi antenna supply
196
197  vdd-3.3-ch1-supply:
198    description: Secondary Wi-Fi antenna supply
199
200required:
201  - compatible
202  - reg
203
204additionalProperties: false
205
206allOf:
207  - $ref: ieee80211.yaml#
208  - if:
209      properties:
210        compatible:
211          contains:
212            enum:
213              - qcom,ipq4019-wifi
214    then:
215      properties:
216        interrupts:
217          minItems: 17
218          maxItems: 17
219
220        interrupt-names:
221          items:
222            - const: msi0
223            - const: msi1
224            - const: msi2
225            - const: msi3
226            - const: msi4
227            - const: msi5
228            - const: msi6
229            - const: msi7
230            - const: msi8
231            - const: msi9
232            - const: msi10
233            - const: msi11
234            - const: msi12
235            - const: msi13
236            - const: msi14
237            - const: msi15
238            - const: legacy
239
240        clocks:
241          items:
242            - description: Wi-Fi command clock
243            - description: Wi-Fi reference clock
244            - description: Wi-Fi RTC clock
245
246        clock-names:
247          items:
248            - const: wifi_wcss_cmd
249            - const: wifi_wcss_ref
250            - const: wifi_wcss_rtc
251
252      required:
253        - clocks
254        - clock-names
255        - interrupts
256        - interrupt-names
257        - resets
258        - reset-names
259
260  - if:
261      properties:
262        compatible:
263          contains:
264            enum:
265              - qcom,wcn3990-wifi
266
267    then:
268      properties:
269        clocks:
270          minItems: 1
271          items:
272            - description: XO reference clock
273            - description: Qualcomm Debug Subsystem clock
274
275        clock-names:
276          minItems: 1
277          items:
278            - const: cxo_ref_clk_pin
279            - const: qdss
280
281        interrupts:
282          items:
283            - description: CE0
284            - description: CE1
285            - description: CE2
286            - description: CE3
287            - description: CE4
288            - description: CE5
289            - description: CE6
290            - description: CE7
291            - description: CE8
292            - description: CE9
293            - description: CE10
294            - description: CE11
295
296        interrupt-names: false
297
298      required:
299        - interrupts
300
301  - not:
302      required:
303        - qcom,snoc-host-cap-8bit-quirk
304        - qcom,snoc-host-cap-skip-quirk
305
306examples:
307  # SNoC
308  - |
309    #include <dt-bindings/clock/qcom,rpmcc.h>
310    #include <dt-bindings/interrupt-controller/arm-gic.h>
311
312    wifi@18800000 {
313      compatible = "qcom,wcn3990-wifi";
314      reg = <0x18800000 0x800000>;
315      reg-names = "membase";
316      memory-region = <&wlan_msa_mem>;
317      clocks = <&rpmcc RPM_SMD_RF_CLK2_PIN>;
318      clock-names = "cxo_ref_clk_pin";
319      interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>,
320                   <GIC_SPI 414 IRQ_TYPE_LEVEL_HIGH>,
321                   <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>,
322                   <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH>,
323                   <GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH>,
324                   <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH>,
325                   <GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH>,
326                   <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>,
327                   <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>,
328                   <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>,
329                   <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>,
330                   <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>;
331      iommus = <&anoc2_smmu 0x1900>,
332               <&anoc2_smmu 0x1901>;
333      qcom,snoc-host-cap-8bit-quirk;
334      vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
335      vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
336      vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
337      vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
338      vdd-3.3-ch1-supply = <&vreg_l23a_3p3>;
339
340      wifi-firmware {
341        iommus = <&apps_smmu 0x1c02 0x1>;
342      };
343    };
344
345  # AHB
346  - |
347    #include <dt-bindings/clock/qcom,gcc-ipq4019.h>
348
349    wifi@a000000 {
350        compatible = "qcom,ipq4019-wifi";
351        reg = <0xa000000 0x200000>;
352        resets = <&gcc WIFI0_CPU_INIT_RESET>,
353                 <&gcc WIFI0_RADIO_SRIF_RESET>,
354                 <&gcc WIFI0_RADIO_WARM_RESET>,
355                 <&gcc WIFI0_RADIO_COLD_RESET>,
356                 <&gcc WIFI0_CORE_WARM_RESET>,
357                 <&gcc WIFI0_CORE_COLD_RESET>;
358        reset-names = "wifi_cpu_init",
359                      "wifi_radio_srif",
360                      "wifi_radio_warm",
361                      "wifi_radio_cold",
362                      "wifi_core_warm",
363                      "wifi_core_cold";
364        clocks = <&gcc GCC_WCSS2G_CLK>,
365                 <&gcc GCC_WCSS2G_REF_CLK>,
366                 <&gcc GCC_WCSS2G_RTC_CLK>;
367        clock-names = "wifi_wcss_cmd",
368                      "wifi_wcss_ref",
369                      "wifi_wcss_rtc";
370        interrupts = <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>,
371                     <GIC_SPI 33 IRQ_TYPE_EDGE_RISING>,
372                     <GIC_SPI 34 IRQ_TYPE_EDGE_RISING>,
373                     <GIC_SPI 35 IRQ_TYPE_EDGE_RISING>,
374                     <GIC_SPI 36 IRQ_TYPE_EDGE_RISING>,
375                     <GIC_SPI 37 IRQ_TYPE_EDGE_RISING>,
376                     <GIC_SPI 38 IRQ_TYPE_EDGE_RISING>,
377                     <GIC_SPI 39 IRQ_TYPE_EDGE_RISING>,
378                     <GIC_SPI 40 IRQ_TYPE_EDGE_RISING>,
379                     <GIC_SPI 41 IRQ_TYPE_EDGE_RISING>,
380                     <GIC_SPI 42 IRQ_TYPE_EDGE_RISING>,
381                     <GIC_SPI 43 IRQ_TYPE_EDGE_RISING>,
382                     <GIC_SPI 44 IRQ_TYPE_EDGE_RISING>,
383                     <GIC_SPI 45 IRQ_TYPE_EDGE_RISING>,
384                     <GIC_SPI 46 IRQ_TYPE_EDGE_RISING>,
385                     <GIC_SPI 47 IRQ_TYPE_EDGE_RISING>,
386                     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
387        interrupt-names =  "msi0",
388                           "msi1",
389                           "msi2",
390                           "msi3",
391                           "msi4",
392                           "msi5",
393                           "msi6",
394                           "msi7",
395                           "msi8",
396                           "msi9",
397                           "msi10",
398                           "msi11",
399                           "msi12",
400                           "msi13",
401                           "msi14",
402                           "msi15",
403                           "legacy";
404        ieee80211-freq-limit = <5470000 5875000>;
405      };
406