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
9title: MediaTek mt76 wireless devices Generic Binding
10
11maintainers:
12  - Felix Fietkau <nbd@nbd.name>
13  - Lorenzo Bianconi <lorenzo@kernel.org>
14  - Ryder Lee <ryder.lee@mediatek.com>
15
16description: |
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 SoC.
22
23allOf:
24  - $ref: ieee80211.yaml#
25
26properties:
27  compatible:
28    enum:
29      - mediatek,mt76
30      - mediatek,mt7628-wmac
31      - mediatek,mt7622-wmac
32
33  reg:
34    maxItems: 1
35
36  interrupts:
37    maxItems: 1
38
39  power-domains:
40    maxItems: 1
41
42  mediatek,infracfg:
43    $ref: /schemas/types.yaml#/definitions/phandle
44    description:
45      Phandle to the infrastructure bus fabric syscon node.
46      This property is MT7622 specific
47
48  ieee80211-freq-limit: true
49
50  mediatek,eeprom-data:
51    $ref: /schemas/types.yaml#/definitions/uint32-array
52    description:
53      EEPROM data embedded as array.
54
55  mediatek,mtd-eeprom:
56    $ref: /schemas/types.yaml#/definitions/phandle-array
57    description:
58      Phandle to a MTD partition + offset containing EEPROM data
59
60  big-endian:
61    $ref: /schemas/types.yaml#/definitions/flag
62    description:
63      Specify if the radio eeprom partition is written in big-endian
64
65  mediatek,eeprom-merge-otp:
66    type: boolean
67    description:
68      Merge EEPROM data with OTP data. Can be used on boards where the flash
69      calibration data is generic and specific calibration data should be
70      pulled from the OTP ROM
71
72  led:
73    type: object
74    $ref: /schemas/leds/common.yaml#
75    additionalProperties: false
76    properties:
77      led-sources:
78        maxItems: 1
79
80  power-limits:
81    type: object
82    additionalProperties: false
83    patternProperties:
84      "^r[0-9]+":
85        type: object
86        additionalProperties: false
87        properties:
88          regdomain:
89            $ref: /schemas/types.yaml#/definitions/string
90            description:
91              Regdomain refers to a legal regulatory region. Different
92              countries define different levels of allowable transmitter
93              power, time that a channel can be occupied, and different
94              available channels
95            enum:
96              - FCC
97              - ETSI
98              - JP
99
100        patternProperties:
101          "^txpower-[256]g$":
102            type: object
103            additionalProperties: false
104            patternProperties:
105              "^b[0-9]+$":
106                type: object
107                additionalProperties: false
108                properties:
109                  channels:
110                    $ref: /schemas/types.yaml#/definitions/uint32-array
111                    minItems: 2
112                    maxItems: 2
113                    description:
114                      Pairs of first and last channel number of the selected
115                      band
116
117                  rates-cck:
118                    $ref: /schemas/types.yaml#/definitions/uint8-array
119                    minItems: 4
120                    maxItems: 4
121                    description:
122                      4 half-dBm per-rate power limit values
123
124                  rates-ofdm:
125                    $ref: /schemas/types.yaml#/definitions/uint8-array
126                    minItems: 8
127                    maxItems: 8
128                    description:
129                      8 half-dBm per-rate power limit values
130
131                  rates-mcs:
132                    $ref: /schemas/types.yaml#/definitions/uint8-matrix
133                    description:
134                      Sets of per-rate power limit values for 802.11n/802.11ac
135                      rates for multiple channel bandwidth settings.
136                      Each set starts with the number of channel bandwidth
137                      settings for which the rate set applies, followed by
138                      either 8 or 10 power limit values. The order of the
139                      channel bandwidth settings is 20, 40, 80 and 160 MHz.
140                    maxItems: 4
141                    items:
142                      minItems: 9
143                      maxItems: 11
144
145                  rates-ru:
146                    $ref: /schemas/types.yaml#/definitions/uint8-matrix
147                    description:
148                      Sets of per-rate power limit values for 802.11ax rates
149                      for multiple channel bandwidth or resource unit settings.
150                      Each set starts with the number of channel bandwidth or
151                      resource unit settings for which the rate set applies,
152                      followed by 12 power limit values. The order of the
153                      channel resource unit settings is RU26, RU52, RU106,
154                      RU242/SU20, RU484/SU40, RU996/SU80 and RU2x996/SU160.
155                    items:
156                      minItems: 13
157                      maxItems: 13
158
159                  txs-delta:
160                    $ref: /schemas/types.yaml#/definitions/uint32-array
161                    description:
162                      Half-dBm power delta for different numbers of antennas
163
164required:
165  - compatible
166  - reg
167
168additionalProperties: false
169
170examples:
171  - |
172    pcie0 {
173      #address-cells = <3>;
174      #size-cells = <2>;
175      wifi@0,0 {
176        compatible = "mediatek,mt76";
177        reg = <0x0000 0 0 0 0>;
178        ieee80211-freq-limit = <5000000 6000000>;
179        mediatek,mtd-eeprom = <&factory 0x8000>;
180        big-endian;
181
182        led {
183          led-sources = <2>;
184        };
185
186        power-limits {
187          r0 {
188            regdomain = "FCC";
189            txpower-5g {
190               b0 {
191                   channels = <36 48>;
192                   rates-ofdm = /bits/ 8 <23 23 23 23 23 23 23 23>;
193                   rates-mcs = /bits/ 8 <1 23 23 23 23 23 23 23 23 23 23>,
194                               /bits/ 8 <3 22 22 22 22 22 22 22 22 22 22>;
195                   rates-ru = /bits/ 8 <3 22 22 22 22 22 22 22 22 22 22 22 22>,
196                              /bits/ 8 <4 20 20 20 20 20 20 20 20 20 20 20 20>;
197               };
198               b1 {
199                   channels = <100 181>;
200                   rates-ofdm = /bits/ 8 <14 14 14 14 14 14 14 14>;
201                   rates-mcs = /bits/ 8  <4 14 14 14 14 14 14 14 14 14 14>;
202                   txs-delta = <12 9 6>;
203                   rates-ru = /bits/ 8  <7 14 14 14 14 14 14 14 14 14 14 14 14>;
204               };
205             };
206          };
207        };
208      };
209    };
210
211  - |
212    wifi@10300000 {
213      compatible = "mediatek,mt7628-wmac";
214      reg = <0x10300000 0x100000>;
215
216      interrupt-parent = <&cpuintc>;
217      interrupts = <6>;
218
219      mediatek,mtd-eeprom = <&factory 0x0>;
220    };
221
222  - |
223    #include <dt-bindings/interrupt-controller/arm-gic.h>
224    #include <dt-bindings/interrupt-controller/irq.h>
225    wifi@18000000 {
226      compatible = "mediatek,mt7622-wmac";
227      reg = <0x10300000 0x100000>;
228      interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_LOW>;
229
230      mediatek,infracfg = <&infracfg>;
231
232      power-domains = <&scpsys 3>;
233    };
234