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