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