xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/brcm,bcm21664-pinctrl.yaml (revision 8ccc0d235c226d84112561d453c49904398d085c)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pinctrl/brcm,bcm21664-pinctrl.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Broadcom BCM21664 pin controller
8
9maintainers:
10  - Florian Fainelli <florian.fainelli@broadcom.com>
11  - Ray Jui <rjui@broadcom.com>
12  - Scott Branden <sbranden@broadcom.com>
13
14allOf:
15  - $ref: pinctrl.yaml#
16
17properties:
18  compatible:
19    const: brcm,bcm21664-pinctrl
20
21  reg:
22    maxItems: 1
23
24patternProperties:
25  '-pins$':
26    type: object
27    additionalProperties: false
28
29    patternProperties:
30      '-grp[0-9]$':
31        type: object
32
33        properties:
34          pins:
35            description:
36              Specifies the name(s) of one or more pins to be configured by
37              this node.
38            items:
39              enum: [ adcsyn, batrm, bsc1clk, bsc1dat, camcs0, camcs1, clk32k,
40                      clk_cx8, dclk1, dclk4, dclkreq1, dclkreq4, dmic0clk,
41                      dmic0dq, dsi0te, gpio00, gpio01, gpio02, gpio03, gpio04,
42                      gpio05, gpio06, gpio07, gpio08, gpio09, gpio10, gpio11,
43                      gpio12, gpio13, gpio14, gpio15, gpio16, gpio17, gpio18,
44                      gpio19, gpio20, gpio21, gpio22, gpio23, gpio24, gpio25,
45                      gpio26, gpio27, gpio28, gpio32, gpio33, gpio34, gpio93,
46                      gpio94, gps_calreq, gps_hostreq, gps_pablank, gps_tmark,
47                      icusbdm, icusbdp, lcdcs0, lcdres, lcdscl, lcdsda, lcdte,
48                      mdmgpio00, mdmgpio01, mdmgpio02, mdmgpio03, mdmgpio04,
49                      mdmgpio05, mdmgpio06, mdmgpio07, mdmgpio08, mmc0ck,
50                      mmc0cmd, mmc0dat0, mmc0dat1, mmc0dat2, mmc0dat3, mmc0dat4,
51                      mmc0dat5, mmc0dat6, mmc0dat7, mmc0rst, mmc1ck, mmc1cmd,
52                      mmc1dat0, mmc1dat1, mmc1dat2, mmc1dat3, mmc1dat4,
53                      mmc1dat5, mmc1dat6, mmc1dat7, mmc1rst, pc1, pc2, pmbscclk,
54                      pmbscdat, pmuint, resetn, rfst2g_mtsloten3g,
55                      rtxdata2g_txdata3g1, rtxen2g_txdata3g2, rxdata3g0,
56                      rxdata3g1, rxdata3g2, sdck, sdcmd, sddat0, sddat1, sddat2,
57                      sddat3, simclk, simdat, simdet, simrst, spi0clk, spi0fss,
58                      spi0rxd, spi0txd, sri_c, sri_d, sri_e, sspck, sspdi,
59                      sspdo, sspsyn, stat1, stat2, swclktck, swdiotms, sysclken,
60                      tdi, tdo, testmode, traceclk, tracedt00, tracedt01,
61                      tracedt02, tracedt03, tracedt04, tracedt05, tracedt06,
62                      tracedt07, tracedt08, tracedt09, tracedt10, tracedt11,
63                      tracedt12, tracedt13, tracedt14, tracedt15, trstb,
64                      txdata3g0, ubctsn, ubrtsn, ubrx, ubtx ]
65
66          function:
67            description:
68              Specifies the pin mux selection.
69            enum: [ alt1, alt2, alt3, alt4, alt5, alt6 ]
70
71          bias-disable: true
72
73          bias-pull-up:
74            type: boolean
75
76          bias-pull-down:
77            type: boolean
78
79          slew-rate:
80            description: |
81              Meaning depends on configured pin mux:
82                bsc*clk/pmbscclk or bsc*dat/pmbscdat or gpio16/gpio17:
83                  0: Standard (100 kbps) & Fast (400 kbps) mode
84                  1: Highspeed (3.4 Mbps) mode
85                Otherwise:
86                  0: fast slew rate
87                  1: normal slew rate
88
89          drive-strength:
90            enum: [ 2, 4, 6, 8, 10, 12, 14, 16 ]
91
92          input-enable: true
93          input-disable: true
94
95          input-schmitt-enable: true
96          input-schmitt-disable: true
97
98        required:
99          - pins
100
101        additionalProperties: false
102
103        allOf:
104          - $ref: pincfg-node.yaml#
105          # Limitations for I2C pins
106          - if:
107              properties:
108                pins:
109                  contains:
110                    enum: [ bsc1clk, bsc1dat, gpio16, gpio17, pmbscclk,
111                            pmbscdat ]
112            then:
113              properties:
114                drive-strength: false
115                bias-pull-down: false
116                input-schmitt-enable: false
117                input-schmitt-disable: false
118
119
120required:
121  - compatible
122  - reg
123
124unevaluatedProperties: false
125
126examples:
127  - |
128    pinctrl@35004800 {
129      compatible = "brcm,bcm21664-pinctrl";
130      reg = <0x35004800 0x7f0>;
131
132      dev-a-active-pins {
133        /* group node defining 1 standard pin */
134        std-grp0 {
135          pins = "gpio00";
136          function = "alt1";
137          input-schmitt-enable;
138          bias-disable;
139          slew-rate = <1>;
140          drive-strength = <4>;
141        };
142
143        /* group node defining 2 I2C pins */
144        i2c-grp0 {
145          pins = "bsc1clk", "bsc1dat";
146          function = "alt2";
147          bias-pull-up;
148          input-enable;
149        };
150      };
151    };
152...
153