xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/xlnx,pinctrl-zynq.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
1*01950c46SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*01950c46SEmmanuel Vadot%YAML 1.2
3*01950c46SEmmanuel Vadot---
4*01950c46SEmmanuel Vadot$id: http://devicetree.org/schemas/pinctrl/xlnx,pinctrl-zynq.yaml#
5*01950c46SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*01950c46SEmmanuel Vadot
7*01950c46SEmmanuel Vadottitle: Xilinx Zynq Pinctrl
8*01950c46SEmmanuel Vadot
9*01950c46SEmmanuel Vadotmaintainers:
10*01950c46SEmmanuel Vadot  - Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
11*01950c46SEmmanuel Vadot
12*01950c46SEmmanuel Vadotdescription: |
13*01950c46SEmmanuel Vadot  Please refer to pinctrl-bindings.txt in this directory for details of the
14*01950c46SEmmanuel Vadot  common pinctrl bindings used by client devices, including the meaning of the
15*01950c46SEmmanuel Vadot  phrase "pin configuration node".
16*01950c46SEmmanuel Vadot
17*01950c46SEmmanuel Vadot  Zynq's pin configuration nodes act as a container for an arbitrary number of
18*01950c46SEmmanuel Vadot  subnodes. Each of these subnodes represents some desired configuration for a
19*01950c46SEmmanuel Vadot  pin, a group, or a list of pins or groups. This configuration can include the
20*01950c46SEmmanuel Vadot  mux function to select on those pin(s)/group(s), and various pin configuration
21*01950c46SEmmanuel Vadot  parameters, such as pull-up, slew rate, etc.
22*01950c46SEmmanuel Vadot
23*01950c46SEmmanuel Vadot  Each configuration node can consist of multiple nodes describing the pinmux and
24*01950c46SEmmanuel Vadot  pinconf options. Those nodes can be pinmux nodes or pinconf nodes.
25*01950c46SEmmanuel Vadot
26*01950c46SEmmanuel Vadot  The name of each subnode is not important; all subnodes should be enumerated
27*01950c46SEmmanuel Vadot  and processed purely based on their content.
28*01950c46SEmmanuel Vadot
29*01950c46SEmmanuel Vadotproperties:
30*01950c46SEmmanuel Vadot  compatible:
31*01950c46SEmmanuel Vadot    const: xlnx,pinctrl-zynq
32*01950c46SEmmanuel Vadot
33*01950c46SEmmanuel Vadot  reg:
34*01950c46SEmmanuel Vadot    description: Specifies the base address and size of the SLCR space.
35*01950c46SEmmanuel Vadot    maxItems: 1
36*01950c46SEmmanuel Vadot
37*01950c46SEmmanuel Vadot  syscon:
38*01950c46SEmmanuel Vadot    description:
39*01950c46SEmmanuel Vadot      phandle to the SLCR.
40*01950c46SEmmanuel Vadot
41*01950c46SEmmanuel VadotpatternProperties:
42*01950c46SEmmanuel Vadot  '^(.*-)?(default|gpio-grp)$':
43*01950c46SEmmanuel Vadot    type: object
44*01950c46SEmmanuel Vadot    patternProperties:
45*01950c46SEmmanuel Vadot      '^mux':
46*01950c46SEmmanuel Vadot        type: object
47*01950c46SEmmanuel Vadot        description:
48*01950c46SEmmanuel Vadot          Pinctrl node's client devices use subnodes for pin muxes,
49*01950c46SEmmanuel Vadot          which in turn use below standard properties.
50*01950c46SEmmanuel Vadot        $ref: pinmux-node.yaml#
51*01950c46SEmmanuel Vadot
52*01950c46SEmmanuel Vadot        properties:
53*01950c46SEmmanuel Vadot          groups:
54*01950c46SEmmanuel Vadot            description:
55*01950c46SEmmanuel Vadot              List of groups to select (either this or "pins" must be
56*01950c46SEmmanuel Vadot              specified), available groups for this subnode.
57*01950c46SEmmanuel Vadot            items:
58*01950c46SEmmanuel Vadot              enum: [ethernet0_0_grp, ethernet1_0_grp, mdio0_0_grp,
59*01950c46SEmmanuel Vadot                     mdio1_0_grp, qspi0_0_grp, qspi1_0_grp, qspi_fbclk,
60*01950c46SEmmanuel Vadot                     qspi_cs1_grp, spi0_0_grp, spi0_1_grp, spi0_2_grp,
61*01950c46SEmmanuel Vadot                     spi0_0_ss0, spi0_0_ss1, spi0_0_ss2, spi0_1_ss0,
62*01950c46SEmmanuel Vadot                     spi0_1_ss1, spi0_1_ss2, spi0_2_ss0, spi0_2_ss1,
63*01950c46SEmmanuel Vadot                     spi0_2_ss2, spi1_0_grp, spi1_1_grp, spi1_2_grp,
64*01950c46SEmmanuel Vadot                     spi1_3_grp, spi1_0_ss0, spi1_0_ss1, spi1_0_ss2,
65*01950c46SEmmanuel Vadot                     spi1_1_ss0, spi1_1_ss1, spi1_1_ss2, spi1_2_ss0,
66*01950c46SEmmanuel Vadot                     spi1_2_ss1, spi1_2_ss2, spi1_3_ss0, spi1_3_ss1,
67*01950c46SEmmanuel Vadot                     spi1_3_ss2, sdio0_0_grp, sdio0_1_grp, sdio0_2_grp,
68*01950c46SEmmanuel Vadot                     sdio1_0_grp, sdio1_1_grp, sdio1_2_grp, sdio1_3_grp,
69*01950c46SEmmanuel Vadot                     sdio0_emio_wp, sdio0_emio_cd, sdio1_emio_wp,
70*01950c46SEmmanuel Vadot                     sdio1_emio_cd, smc0_nor, smc0_nor_cs1_grp,
71*01950c46SEmmanuel Vadot                     smc0_nor_addr25_grp, smc0_nand, can0_0_grp, can0_1_grp,
72*01950c46SEmmanuel Vadot                     can0_2_grp, can0_3_grp, can0_4_grp, can0_5_grp,
73*01950c46SEmmanuel Vadot                     can0_6_grp, can0_7_grp, can0_8_grp, can0_9_grp,
74*01950c46SEmmanuel Vadot                     can0_10_grp, can1_0_grp, can1_1_grp, can1_2_grp,
75*01950c46SEmmanuel Vadot                     can1_3_grp, can1_4_grp, can1_5_grp, can1_6_grp,
76*01950c46SEmmanuel Vadot                     can1_7_grp, can1_8_grp, can1_9_grp, can1_10_grp,
77*01950c46SEmmanuel Vadot                     can1_11_grp, uart0_0_grp, uart0_1_grp, uart0_2_grp,
78*01950c46SEmmanuel Vadot                     uart0_3_grp, uart0_4_grp, uart0_5_grp, uart0_6_grp,
79*01950c46SEmmanuel Vadot                     uart0_7_grp, uart0_8_grp, uart0_9_grp, uart0_10_grp,
80*01950c46SEmmanuel Vadot                     uart1_0_grp, uart1_1_grp, uart1_2_grp, uart1_3_grp,
81*01950c46SEmmanuel Vadot                     uart1_4_grp, uart1_5_grp, uart1_6_grp, uart1_7_grp,
82*01950c46SEmmanuel Vadot                     uart1_8_grp, uart1_9_grp, uart1_10_grp, uart1_11_grp,
83*01950c46SEmmanuel Vadot                     i2c0_0_grp, i2c0_1_grp, i2c0_2_grp, i2c0_3_grp,
84*01950c46SEmmanuel Vadot                     i2c0_4_grp, i2c0_5_grp, i2c0_6_grp, i2c0_7_grp,
85*01950c46SEmmanuel Vadot                     i2c0_8_grp, i2c0_9_grp, i2c0_10_grp, i2c1_0_grp,
86*01950c46SEmmanuel Vadot                     i2c1_1_grp, i2c1_2_grp, i2c1_3_grp, i2c1_4_grp,
87*01950c46SEmmanuel Vadot                     i2c1_5_grp, i2c1_6_grp, i2c1_7_grp, i2c1_8_grp,
88*01950c46SEmmanuel Vadot                     i2c1_9_grp, i2c1_10_grp, ttc0_0_grp, ttc0_1_grp,
89*01950c46SEmmanuel Vadot                     ttc0_2_grp, ttc1_0_grp, ttc1_1_grp, ttc1_2_grp,
90*01950c46SEmmanuel Vadot                     swdt0_0_grp, swdt0_1_grp, swdt0_2_grp, swdt0_3_grp,
91*01950c46SEmmanuel Vadot                     swdt0_4_grp, gpio0_0_grp, gpio0_1_grp, gpio0_2_grp,
92*01950c46SEmmanuel Vadot                     gpio0_3_grp, gpio0_4_grp, gpio0_5_grp, gpio0_6_grp,
93*01950c46SEmmanuel Vadot                     gpio0_7_grp, gpio0_8_grp, gpio0_9_grp, gpio0_10_grp,
94*01950c46SEmmanuel Vadot                     gpio0_11_grp, gpio0_12_grp, gpio0_13_grp, gpio0_14_grp,
95*01950c46SEmmanuel Vadot                     gpio0_15_grp, gpio0_16_grp, gpio0_17_grp, gpio0_18_grp,
96*01950c46SEmmanuel Vadot                     gpio0_19_grp, gpio0_20_grp, gpio0_21_grp, gpio0_22_grp,
97*01950c46SEmmanuel Vadot                     gpio0_23_grp, gpio0_24_grp, gpio0_25_grp, gpio0_26_grp,
98*01950c46SEmmanuel Vadot                     gpio0_27_grp, gpio0_28_grp, gpio0_29_grp, gpio0_30_grp,
99*01950c46SEmmanuel Vadot                     gpio0_31_grp, gpio0_32_grp, gpio0_33_grp, gpio0_34_grp,
100*01950c46SEmmanuel Vadot                     gpio0_35_grp, gpio0_36_grp, gpio0_37_grp, gpio0_38_grp,
101*01950c46SEmmanuel Vadot                     gpio0_39_grp, gpio0_40_grp, gpio0_41_grp, gpio0_42_grp,
102*01950c46SEmmanuel Vadot                     gpio0_43_grp, gpio0_44_grp, gpio0_45_grp, gpio0_46_grp,
103*01950c46SEmmanuel Vadot                     gpio0_47_grp, gpio0_48_grp, gpio0_49_grp, gpio0_50_grp,
104*01950c46SEmmanuel Vadot                     gpio0_51_grp, gpio0_52_grp, gpio0_53_grp, usb0_0_grp,
105*01950c46SEmmanuel Vadot                     usb1_0_grp]
106*01950c46SEmmanuel Vadot            maxItems: 54
107*01950c46SEmmanuel Vadot
108*01950c46SEmmanuel Vadot          function:
109*01950c46SEmmanuel Vadot            description:
110*01950c46SEmmanuel Vadot              Specify the alternative function to be configured for the
111*01950c46SEmmanuel Vadot              given pin groups.
112*01950c46SEmmanuel Vadot            enum: [ethernet0, ethernet1, mdio0, mdio1, qspi0, qspi1, qspi_fbclk,
113*01950c46SEmmanuel Vadot                   qspi_cs1, spi0, spi0_ss, spi1, spi1_ss, sdio0, sdio0_pc,
114*01950c46SEmmanuel Vadot                   sdio0_cd, sdio0_wp, sdio1, sdio1_pc, sdio1_cd, sdio1_wp,
115*01950c46SEmmanuel Vadot                   smc0_nor, smc0_nor_cs1, smc0_nor_addr25, smc0_nand, can0,
116*01950c46SEmmanuel Vadot                   can1, uart0, uart1, i2c0, i2c1, ttc0, ttc1, swdt0, gpio0,
117*01950c46SEmmanuel Vadot                   usb0, usb1]
118*01950c46SEmmanuel Vadot
119*01950c46SEmmanuel Vadot        required:
120*01950c46SEmmanuel Vadot          - groups
121*01950c46SEmmanuel Vadot          - function
122*01950c46SEmmanuel Vadot
123*01950c46SEmmanuel Vadot        additionalProperties: false
124*01950c46SEmmanuel Vadot
125*01950c46SEmmanuel Vadot      '^conf':
126*01950c46SEmmanuel Vadot        type: object
127*01950c46SEmmanuel Vadot        description:
128*01950c46SEmmanuel Vadot          Pinctrl node's client devices use subnodes for pin configurations,
129*01950c46SEmmanuel Vadot          which in turn use the standard properties below.
130*01950c46SEmmanuel Vadot        $ref: pincfg-node.yaml#
131*01950c46SEmmanuel Vadot
132*01950c46SEmmanuel Vadot        properties:
133*01950c46SEmmanuel Vadot          groups:
134*01950c46SEmmanuel Vadot            description:
135*01950c46SEmmanuel Vadot              List of pin groups as mentioned above.
136*01950c46SEmmanuel Vadot
137*01950c46SEmmanuel Vadot          pins:
138*01950c46SEmmanuel Vadot            description:
139*01950c46SEmmanuel Vadot              List of pin names to select in this subnode.
140*01950c46SEmmanuel Vadot            items:
141*01950c46SEmmanuel Vadot              pattern: '^MIO([0-9]|[1-4][0-9]|5[0-3])$'
142*01950c46SEmmanuel Vadot            maxItems: 54
143*01950c46SEmmanuel Vadot
144*01950c46SEmmanuel Vadot          bias-pull-up: true
145*01950c46SEmmanuel Vadot
146*01950c46SEmmanuel Vadot          bias-pull-down: true
147*01950c46SEmmanuel Vadot
148*01950c46SEmmanuel Vadot          bias-disable: true
149*01950c46SEmmanuel Vadot
150*01950c46SEmmanuel Vadot          bias-high-impedance: true
151*01950c46SEmmanuel Vadot
152*01950c46SEmmanuel Vadot          low-power-enable: true
153*01950c46SEmmanuel Vadot
154*01950c46SEmmanuel Vadot          low-power-disable: true
155*01950c46SEmmanuel Vadot
156*01950c46SEmmanuel Vadot          slew-rate:
157*01950c46SEmmanuel Vadot            enum: [0, 1]
158*01950c46SEmmanuel Vadot
159*01950c46SEmmanuel Vadot          power-source:
160*01950c46SEmmanuel Vadot            enum: [1, 2, 3, 4]
161*01950c46SEmmanuel Vadot
162*01950c46SEmmanuel Vadot        oneOf:
163*01950c46SEmmanuel Vadot          - required: [ groups ]
164*01950c46SEmmanuel Vadot          - required: [ pins ]
165*01950c46SEmmanuel Vadot
166*01950c46SEmmanuel Vadot        additionalProperties: false
167*01950c46SEmmanuel Vadot
168*01950c46SEmmanuel Vadot    additionalProperties: false
169*01950c46SEmmanuel Vadot
170*01950c46SEmmanuel VadotallOf:
171*01950c46SEmmanuel Vadot  - $ref: pinctrl.yaml#
172*01950c46SEmmanuel Vadot
173*01950c46SEmmanuel Vadotrequired:
174*01950c46SEmmanuel Vadot  - compatible
175*01950c46SEmmanuel Vadot  - reg
176*01950c46SEmmanuel Vadot  - syscon
177*01950c46SEmmanuel Vadot
178*01950c46SEmmanuel VadotadditionalProperties: false
179*01950c46SEmmanuel Vadot
180*01950c46SEmmanuel Vadotexamples:
181*01950c46SEmmanuel Vadot  - |
182*01950c46SEmmanuel Vadot    #include <dt-bindings/pinctrl/pinctrl-zynq.h>
183*01950c46SEmmanuel Vadot    pinctrl0: pinctrl@700 {
184*01950c46SEmmanuel Vadot       compatible = "xlnx,pinctrl-zynq";
185*01950c46SEmmanuel Vadot       reg = <0x700 0x200>;
186*01950c46SEmmanuel Vadot       syscon = <&slcr>;
187*01950c46SEmmanuel Vadot
188*01950c46SEmmanuel Vadot       pinctrl_uart1_default: uart1-default {
189*01950c46SEmmanuel Vadot           mux {
190*01950c46SEmmanuel Vadot               groups = "uart1_10_grp";
191*01950c46SEmmanuel Vadot               function = "uart1";
192*01950c46SEmmanuel Vadot           };
193*01950c46SEmmanuel Vadot
194*01950c46SEmmanuel Vadot           conf {
195*01950c46SEmmanuel Vadot               groups = "uart1_10_grp";
196*01950c46SEmmanuel Vadot               slew-rate = <0>;
197*01950c46SEmmanuel Vadot               power-source = <IO_STANDARD_LVCMOS18>;
198*01950c46SEmmanuel Vadot           };
199*01950c46SEmmanuel Vadot
200*01950c46SEmmanuel Vadot           conf-rx {
201*01950c46SEmmanuel Vadot               pins = "MIO49";
202*01950c46SEmmanuel Vadot               bias-high-impedance;
203*01950c46SEmmanuel Vadot           };
204*01950c46SEmmanuel Vadot
205*01950c46SEmmanuel Vadot           conf-tx {
206*01950c46SEmmanuel Vadot               pins = "MIO48";
207*01950c46SEmmanuel Vadot               bias-disable;
208*01950c46SEmmanuel Vadot           };
209*01950c46SEmmanuel Vadot       };
210*01950c46SEmmanuel Vadot    };
211*01950c46SEmmanuel Vadot
212*01950c46SEmmanuel Vadot    uart1 {
213*01950c46SEmmanuel Vadot         pinctrl-names = "default";
214*01950c46SEmmanuel Vadot         pinctrl-0 = <&pinctrl_uart1_default>;
215*01950c46SEmmanuel Vadot    };
216*01950c46SEmmanuel Vadot
217*01950c46SEmmanuel Vadot...
218