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