Merge tag 'pwm/for-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / pinctrl / mediatek,mt7622-pinctrl.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/pinctrl/mediatek,mt7622-pinctrl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Mediatek MT7622 Pin Controller Device Tree Bindings
8
9 maintainers:
10   - Sean Wang <sean.wang@kernel.org>
11
12 description: |+
13   The MediaTek's MT7622 Pin controller is used to control SoC pins.
14
15 properties:
16   compatible:
17     enum:
18       - mediatek,mt7622-pinctrl
19       - mediatek,mt7629-pinctrl
20
21   reg:
22     maxItems: 1
23
24   reg-names:
25     items:
26       - const: eint
27
28   gpio-controller: true
29
30   "#gpio-cells":
31     const: 2
32     description: |
33       Number of cells in GPIO specifier. Since the generic GPIO
34       binding is used, the amount of cells must be specified as 2. See the below
35       mentioned gpio binding representation for description of particular cells.
36
37   interrupt-controller: true
38
39   interrupts:
40     maxItems: 1
41
42   "#interrupt-cells":
43     const: 2
44
45 required:
46   - compatible
47   - reg
48   - gpio-controller
49   - "#gpio-cells"
50
51 if:
52   required:
53     - interrupt-controller
54 then:
55   required:
56     - reg-names
57     - interrupts
58     - "#interrupt-cells"
59
60 patternProperties:
61   '-[0-9]+$':
62     type: object
63     additionalProperties: false
64     patternProperties:
65       'mux':
66         type: object
67         additionalProperties: false
68         description: |
69           pinmux configuration nodes.
70         $ref: "/schemas/pinctrl/pinmux-node.yaml"
71         properties:
72           function:
73             description: |
74               A string containing the name of the function to mux to the group.
75             enum: [emmc, eth, i2c, i2s, ir, led, flash, pcie, pmic, pwm, sd,
76                    spi, tdm, uart, watchdog, wifi]
77
78           groups:
79             description: |
80               An array of strings. Each string contains the name of a group.
81
82           drive-strength:
83             enum: [4, 8, 12, 16]
84
85         required:
86           - groups
87           - function
88
89         allOf:
90           - if:
91               properties:
92                 function:
93                   const: emmc
94             then:
95               properties:
96                 groups:
97                   enum: [emmc, emmc_rst]
98           - if:
99               properties:
100                 function:
101                   const: eth
102             then:
103               properties:
104                 groups:
105                   enum: [esw, esw_p0_p1, esw_p2_p3_p4, rgmii_via_esw,
106                          rgmii_via_gmac1, rgmii_via_gmac2, mdc_mdio]
107           - if:
108               properties:
109                 function:
110                   const: i2c
111             then:
112               properties:
113                 groups:
114                   enum: [i2c0, i2c_0, i2c_1, i2c1_0, i2c1_1, i2c1_2, i2c2_0,
115                          i2c2_1, i2c2_2]
116           - if:
117               properties:
118                 function:
119                   const: i2s
120             then:
121               properties:
122                 groups:
123                   enum: [i2s_in_mclk_bclk_ws, i2s1_in_data, i2s2_in_data,
124                          i2s3_in_data, i2s4_in_data, i2s_out_mclk_bclk_ws,
125                          i2s1_out_data, i2s2_out_data, i2s3_out_data,
126                          i2s4_out_data]
127           - if:
128               properties:
129                 function:
130                   const: ir
131             then:
132               properties:
133                 groups:
134                   enum: [ir_0_tx, ir_1_tx, ir_2_tx, ir_0_rx, ir_1_rx, ir_2_rx]
135           - if:
136               properties:
137                 function:
138                   const: led
139             then:
140               properties:
141                 groups:
142                   enum: [ephy_leds, ephy0_led, ephy1_led, ephy2_led, ephy3_led,
143                          ephy4_led, wled, wf2g_led, wf5g_led]
144           - if:
145               properties:
146                 function:
147                   const: flash
148             then:
149               properties:
150                 groups:
151                   enum: [par_nand, snfi, spi_nor]
152           - if:
153               properties:
154                 function:
155                   const: pcie
156             then:
157               properties:
158                 groups:
159                   enum: [pcie0_0_waken, pcie0_1_waken, pcie1_0_waken,
160                          pcie0_0_clkreq, pcie0_1_clkreq, pcie1_0_clkreq,
161                          pcie0_pad_perst, pcie1_pad_perst, pcie_pereset,
162                          pcie_wake, pcie_clkreq]
163           - if:
164               properties:
165                 function:
166                   const: pmic
167             then:
168               properties:
169                 groups:
170                   enum: [pmic_bus]
171           - if:
172               properties:
173                 function:
174                   const: pwm
175             then:
176               properties:
177                 groups:
178                   enum: [pwm_ch1_0, pwm_ch1_1, pwm_ch1_2, pwm_ch2_0, pwm_ch2_1,
179                          pwm_ch2_2, pwm_ch3_0, pwm_ch3_1, pwm_ch3_2, pwm_ch4_0,
180                          pwm_ch4_1, pwm_ch4_2, pwm_ch4_3, pwm_ch5_0, pwm_ch5_1,
181                          pwm_ch5_2, pwm_ch6_0, pwm_ch6_1, pwm_ch6_2, pwm_ch6_3,
182                          pwm_ch7_0, pwm_0, pwm_1]
183           - if:
184               properties:
185                 function:
186                   const: sd
187             then:
188               properties:
189                 groups:
190                   enum: [sd_0, sd_1]
191           - if:
192               properties:
193                 function:
194                   const: spi
195             then:
196               properties:
197                 groups:
198                   enum: [spic0_0, spic0_1, spic1_0, spic1_1, spic2_0_wp_hold,
199                          spic2_0, spi_0, spi_1, spi_wp, spi_hold]
200           - if:
201               properties:
202                 function:
203                   const: tdm
204             then:
205               properties:
206                 groups:
207                   enum: [tdm_0_out_mclk_bclk_ws, tdm_0_in_mclk_bclk_ws,
208                          tdm_0_out_data, tdm_0_in_data, tdm_1_out_mclk_bclk_ws,
209                          tdm_1_in_mclk_bclk_ws, tdm_1_out_data, tdm_1_in_data]
210           - if:
211               properties:
212                 function:
213                   const: uart
214             then:
215               properties:
216                 groups:
217                   enum: [uart0_0_tx_rx, uart1_0_tx_rx, uart1_0_rts_cts,
218                          uart1_1_tx_rx, uart1_1_rts_cts, uart2_0_tx_rx,
219                          uart2_0_rts_cts, uart2_1_tx_rx, uart2_1_rts_cts,
220                          uart2_2_tx_rx, uart2_2_rts_cts, uart2_3_tx_rx,
221                          uart3_0_tx_rx, uart3_1_tx_rx, uart3_1_rts_cts,
222                          uart4_0_tx_rx, uart4_1_tx_rx, uart4_1_rts_cts,
223                          uart4_2_tx_rx, uart4_2_rts_cts, uart0_txd_rxd,
224                          uart1_0_txd_rxd, uart1_0_cts_rts, uart1_1_txd_rxd,
225                          uart1_1_cts_rts, uart2_0_txd_rxd, uart2_0_cts_rts,
226                          uart2_1_txd_rxd, uart2_1_cts_rts]
227           - if:
228               properties:
229                 function:
230                   const: watchdog
231             then:
232               properties:
233                 groups:
234                   enum: [watchdog]
235           - if:
236               properties:
237                 function:
238                   const: wifi
239             then:
240               properties:
241                 groups:
242                   enum: [wf0_2g, wf0_5g]
243
244       'conf':
245         type: object
246         additionalProperties: false
247         description: |
248           pinconf configuration nodes.
249         $ref: "/schemas/pinctrl/pincfg-node.yaml"
250
251         properties:
252           groups:
253             description: |
254               An array of strings. Each string contains the name of a group.
255               Valid values are the same as the pinmux node.
256
257           pins:
258             description: |
259               An array of strings. Each string contains the name of a pin.
260             enum: [GPIO_A, I2S1_IN, I2S1_OUT, I2S_BCLK, I2S_WS, I2S_MCLK, TXD0,
261                    RXD0, SPI_WP, SPI_HOLD, SPI_CLK, SPI_MOSI, SPI_MISO, SPI_CS,
262                    I2C_SDA, I2C_SCL, I2S2_IN, I2S3_IN, I2S4_IN, I2S2_OUT,
263                    I2S3_OUT, I2S4_OUT, GPIO_B, MDC, MDIO, G2_TXD0, G2_TXD1,
264                    G2_TXD2, G2_TXD3, G2_TXEN, G2_TXC, G2_RXD0, G2_RXD1, G2_RXD2,
265                    G2_RXD3, G2_RXDV, G2_RXC, NCEB, NWEB, NREB, NDL4, NDL5, NDL6,
266                    NDL7, NRB, NCLE, NALE, NDL0, NDL1, NDL2, NDL3, MDI_TP_P0,
267                    MDI_TN_P0, MDI_RP_P0, MDI_RN_P0, MDI_TP_P1, MDI_TN_P1,
268                    MDI_RP_P1, MDI_RN_P1, MDI_RP_P2, MDI_RN_P2, MDI_TP_P2,
269                    MDI_TN_P2, MDI_TP_P3, MDI_TN_P3, MDI_RP_P3, MDI_RN_P3,
270                    MDI_RP_P4, MDI_RN_P4, MDI_TP_P4, MDI_TN_P4, PMIC_SCL,
271                    PMIC_SDA, SPIC1_CLK, SPIC1_MOSI, SPIC1_MISO, SPIC1_CS,
272                    GPIO_D, WATCHDOG, RTS3_N, CTS3_N, TXD3, RXD3, PERST0_N,
273                    PERST1_N, WLED_N, EPHY_LED0_N, AUXIN0, AUXIN1, AUXIN2,
274                    AUXIN3, TXD4, RXD4, RTS4_N, CST4_N, PWM1, PWM2, PWM3, PWM4,
275                    PWM5, PWM6, PWM7, GPIO_E, TOP_5G_CLK, TOP_5G_DATA,
276                    WF0_5G_HB0, WF0_5G_HB1, WF0_5G_HB2, WF0_5G_HB3, WF0_5G_HB4,
277                    WF0_5G_HB5, WF0_5G_HB6, XO_REQ, TOP_RST_N, SYS_WATCHDOG,
278                    EPHY_LED0_N_JTDO, EPHY_LED1_N_JTDI, EPHY_LED2_N_JTMS,
279                    EPHY_LED3_N_JTCLK, EPHY_LED4_N_JTRST_N, WF2G_LED_N,
280                    WF5G_LED_N, GPIO_9, GPIO_10, GPIO_11, GPIO_12, UART1_TXD,
281                    UART1_RXD, UART1_CTS, UART1_RTS, UART2_TXD, UART2_RXD,
282                    UART2_CTS, UART2_RTS, SMI_MDC, SMI_MDIO, PCIE_PERESET_N,
283                    PWM_0, GPIO_0, GPIO_1, GPIO_2, GPIO_3, GPIO_4, GPIO_5,
284                    GPIO_6, GPIO_7, GPIO_8, UART0_TXD, UART0_RXD, TOP_2G_CLK,
285                    TOP_2G_DATA, WF0_2G_HB0, WF0_2G_HB1, WF0_2G_HB2, WF0_2G_HB3,
286                    WF0_2G_HB4, WF0_2G_HB5, WF0_2G_HB6]
287
288           bias-disable: true
289
290           bias-pull-up: true
291
292           bias-pull-down: true
293
294           input-enable: true
295
296           input-disable: true
297
298           output-enable: true
299
300           output-low: true
301
302           output-high: true
303
304           input-schmitt-enable: true
305
306           input-schmitt-disable: true
307
308           drive-strength:
309             enum: [4, 8, 12, 16]
310
311           slew-rate:
312             enum: [0, 1]
313
314           mediatek,tdsel:
315             description: |
316               An integer describing the steps for output level shifter duty
317               cycle when asserted (high pulse width adjustment). Valid arguments
318               are from 0 to 15.
319             $ref: /schemas/types.yaml#/definitions/uint32
320
321           mediatek,rdsel:
322             description: |
323               An integer describing the steps for input level shifter duty cycle
324               when asserted (high pulse width adjustment). Valid arguments are
325               from 0 to 63.
326             $ref: /schemas/types.yaml#/definitions/uint32
327
328         required:
329           - pins
330
331 additionalProperties: false
332
333 examples:
334   - |
335     #include <dt-bindings/interrupt-controller/irq.h>
336     #include <dt-bindings/interrupt-controller/arm-gic.h>
337
338     soc {
339         #address-cells = <2>;
340         #size-cells = <2>;
341
342         pio: pinctrl@10211000 {
343           compatible = "mediatek,mt7622-pinctrl";
344           reg = <0 0x10211000 0 0x1000>;
345           gpio-controller;
346           #gpio-cells = <2>;
347
348           pinctrl_eth_default: eth-0 {
349             mux-mdio {
350               groups = "mdc_mdio";
351               function = "eth";
352               drive-strength = <12>;
353             };
354
355             mux-gmac2 {
356               groups = "rgmii_via_gmac2";
357               function = "eth";
358               drive-strength = <12>;
359             };
360
361             mux-esw {
362               groups = "esw";
363               function = "eth";
364               drive-strength = <8>;
365             };
366
367             conf-mdio {
368               pins = "MDC";
369               bias-pull-up;
370             };
371           };
372         };
373     };