GNU Linux-libre 5.19-rc6-gnu
[releases.git] / Documentation / devicetree / bindings / net / wireless / mediatek,mt76.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 # Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
3
4 %YAML 1.2
5 ---
6 $id: http://devicetree.org/schemas/net/wireless/mediatek,mt76.yaml#
7 $schema: http://devicetree.org/meta-schemas/core.yaml#
8
9 title: MediaTek mt76 wireless devices Generic Binding
10
11 maintainers:
12   - Felix Fietkau <nbd@nbd.name>
13   - Lorenzo Bianconi <lorenzo@kernel.org>
14   - Ryder Lee <ryder.lee@mediatek.com>
15
16 description: |
17   This node provides properties for configuring the MediaTek mt76xx
18   wireless device. The node is expected to be specified as a child
19   node of the PCI controller to which the wireless chip is connected.
20   Alternatively, it can specify the wireless part of the MT7628/MT7688
21   or MT7622/MT7986 SoC.
22
23 allOf:
24   - $ref: ieee80211.yaml#
25
26 properties:
27   compatible:
28     enum:
29       - mediatek,mt76
30       - mediatek,mt7628-wmac
31       - mediatek,mt7622-wmac
32       - mediatek,mt7986-wmac
33
34   reg:
35     minItems: 1
36     maxItems: 3
37     description:
38       MT7986 should contain 3 regions consys, dcm, and sku, in this order.
39
40   interrupts:
41     maxItems: 1
42
43   power-domains:
44     maxItems: 1
45
46   memory-region:
47     maxItems: 1
48
49   resets:
50     maxItems: 1
51     description:
52       Specify the consys reset for mt7986.
53
54   reset-names:
55     const: consys
56
57   mediatek,infracfg:
58     $ref: /schemas/types.yaml#/definitions/phandle
59     description:
60       Phandle to the infrastructure bus fabric syscon node.
61       This property is MT7622 specific
62
63   ieee80211-freq-limit: true
64
65   mediatek,eeprom-data:
66     $ref: /schemas/types.yaml#/definitions/uint32-array
67     description:
68       EEPROM data embedded as array.
69
70   mediatek,mtd-eeprom:
71     $ref: /schemas/types.yaml#/definitions/phandle-array
72     items:
73       - items:
74           - description: phandle to MTD partition
75           - description: offset containing EEPROM data
76     description:
77       Phandle to a MTD partition + offset containing EEPROM data
78
79   big-endian:
80     $ref: /schemas/types.yaml#/definitions/flag
81     description:
82       Specify if the radio eeprom partition is written in big-endian
83
84   mediatek,eeprom-merge-otp:
85     type: boolean
86     description:
87       Merge EEPROM data with OTP data. Can be used on boards where the flash
88       calibration data is generic and specific calibration data should be
89       pulled from the OTP ROM
90
91   mediatek,disable-radar-background:
92     type: boolean
93     description:
94       Disable/enable radar/CAC detection running on a dedicated offchannel
95       chain available on some hw.
96       Background radar/CAC detection allows to avoid the CAC downtime
97       switching on a different channel during CAC detection on the selected
98       radar channel.
99
100   led:
101     type: object
102     $ref: /schemas/leds/common.yaml#
103     additionalProperties: false
104     properties:
105       led-sources:
106         maxItems: 1
107
108   power-limits:
109     type: object
110     additionalProperties: false
111     patternProperties:
112       "^r[0-9]+":
113         type: object
114         additionalProperties: false
115         properties:
116           regdomain:
117             $ref: /schemas/types.yaml#/definitions/string
118             description:
119               Regdomain refers to a legal regulatory region. Different
120               countries define different levels of allowable transmitter
121               power, time that a channel can be occupied, and different
122               available channels
123             enum:
124               - FCC
125               - ETSI
126               - JP
127
128         patternProperties:
129           "^txpower-[256]g$":
130             type: object
131             additionalProperties: false
132             patternProperties:
133               "^b[0-9]+$":
134                 type: object
135                 additionalProperties: false
136                 properties:
137                   channels:
138                     $ref: /schemas/types.yaml#/definitions/uint32-array
139                     minItems: 2
140                     maxItems: 2
141                     description:
142                       Pairs of first and last channel number of the selected
143                       band
144
145                   rates-cck:
146                     $ref: /schemas/types.yaml#/definitions/uint8-array
147                     minItems: 4
148                     maxItems: 4
149                     description:
150                       4 half-dBm per-rate power limit values
151
152                   rates-ofdm:
153                     $ref: /schemas/types.yaml#/definitions/uint8-array
154                     minItems: 8
155                     maxItems: 8
156                     description:
157                       8 half-dBm per-rate power limit values
158
159                   rates-mcs:
160                     $ref: /schemas/types.yaml#/definitions/uint8-matrix
161                     description:
162                       Sets of per-rate power limit values for 802.11n/802.11ac
163                       rates for multiple channel bandwidth settings.
164                       Each set starts with the number of channel bandwidth
165                       settings for which the rate set applies, followed by
166                       either 8 or 10 power limit values. The order of the
167                       channel bandwidth settings is 20, 40, 80 and 160 MHz.
168                     maxItems: 4
169                     items:
170                       minItems: 9
171                       maxItems: 11
172
173                   rates-ru:
174                     $ref: /schemas/types.yaml#/definitions/uint8-matrix
175                     description:
176                       Sets of per-rate power limit values for 802.11ax rates
177                       for multiple channel bandwidth or resource unit settings.
178                       Each set starts with the number of channel bandwidth or
179                       resource unit settings for which the rate set applies,
180                       followed by 12 power limit values. The order of the
181                       channel resource unit settings is RU26, RU52, RU106,
182                       RU242/SU20, RU484/SU40, RU996/SU80 and RU2x996/SU160.
183                     items:
184                       minItems: 13
185                       maxItems: 13
186
187                   txs-delta:
188                     $ref: /schemas/types.yaml#/definitions/uint32-array
189                     description:
190                       Half-dBm power delta for different numbers of antennas
191
192 required:
193   - compatible
194   - reg
195
196 unevaluatedProperties: false
197
198 examples:
199   - |
200     pcie0 {
201       #address-cells = <3>;
202       #size-cells = <2>;
203       wifi@0,0 {
204         compatible = "mediatek,mt76";
205         reg = <0x0000 0 0 0 0>;
206         ieee80211-freq-limit = <5000000 6000000>;
207         mediatek,mtd-eeprom = <&factory 0x8000>;
208         big-endian;
209
210         led {
211           led-sources = <2>;
212         };
213
214         power-limits {
215           r0 {
216             regdomain = "FCC";
217             txpower-5g {
218                b0 {
219                    channels = <36 48>;
220                    rates-ofdm = /bits/ 8 <23 23 23 23 23 23 23 23>;
221                    rates-mcs = /bits/ 8 <1 23 23 23 23 23 23 23 23 23 23>,
222                                /bits/ 8 <3 22 22 22 22 22 22 22 22 22 22>;
223                    rates-ru = /bits/ 8 <3 22 22 22 22 22 22 22 22 22 22 22 22>,
224                               /bits/ 8 <4 20 20 20 20 20 20 20 20 20 20 20 20>;
225                };
226                b1 {
227                    channels = <100 181>;
228                    rates-ofdm = /bits/ 8 <14 14 14 14 14 14 14 14>;
229                    rates-mcs = /bits/ 8  <4 14 14 14 14 14 14 14 14 14 14>;
230                    txs-delta = <12 9 6>;
231                    rates-ru = /bits/ 8  <7 14 14 14 14 14 14 14 14 14 14 14 14>;
232                };
233              };
234           };
235         };
236       };
237     };
238
239   - |
240     wifi@10300000 {
241       compatible = "mediatek,mt7628-wmac";
242       reg = <0x10300000 0x100000>;
243
244       interrupt-parent = <&cpuintc>;
245       interrupts = <6>;
246
247       mediatek,mtd-eeprom = <&factory 0x0>;
248     };
249
250   - |
251     #include <dt-bindings/interrupt-controller/arm-gic.h>
252     #include <dt-bindings/interrupt-controller/irq.h>
253     wifi@18000000 {
254       compatible = "mediatek,mt7622-wmac";
255       reg = <0x10300000 0x100000>;
256       interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_LOW>;
257
258       mediatek,infracfg = <&infracfg>;
259
260       power-domains = <&scpsys 3>;
261     };
262
263   - |
264     wifi@18000000 {
265         compatible = "mediatek,mt7986-wmac";
266         resets = <&watchdog 23>;
267         reset-names = "consys";
268         reg = <0x18000000 0x1000000>,
269               <0x10003000 0x1000>,
270               <0x11d10000 0x1000>;
271         interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>;
272         memory-region = <&wmcpu_emi>;
273     };