xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/xlnx,zynq-pinctrl.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel Vadot	Binding for Xilinx Zynq Pinctrl
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotRequired properties:
4*c66ec88fSEmmanuel Vadot- compatible: "xlnx,zynq-pinctrl"
5*c66ec88fSEmmanuel Vadot- syscon: phandle to SLCR
6*c66ec88fSEmmanuel Vadot- reg: Offset and length of pinctrl space in SLCR
7*c66ec88fSEmmanuel Vadot
8*c66ec88fSEmmanuel VadotPlease refer to pinctrl-bindings.txt in this directory for details of the
9*c66ec88fSEmmanuel Vadotcommon pinctrl bindings used by client devices, including the meaning of the
10*c66ec88fSEmmanuel Vadotphrase "pin configuration node".
11*c66ec88fSEmmanuel Vadot
12*c66ec88fSEmmanuel VadotZynq's pin configuration nodes act as a container for an arbitrary number of
13*c66ec88fSEmmanuel Vadotsubnodes. Each of these subnodes represents some desired configuration for a
14*c66ec88fSEmmanuel Vadotpin, a group, or a list of pins or groups. This configuration can include the
15*c66ec88fSEmmanuel Vadotmux function to select on those pin(s)/group(s), and various pin configuration
16*c66ec88fSEmmanuel Vadotparameters, such as pull-up, slew rate, etc.
17*c66ec88fSEmmanuel Vadot
18*c66ec88fSEmmanuel VadotEach configuration node can consist of multiple nodes describing the pinmux and
19*c66ec88fSEmmanuel Vadotpinconf options. Those nodes can be pinmux nodes or pinconf nodes.
20*c66ec88fSEmmanuel Vadot
21*c66ec88fSEmmanuel VadotThe name of each subnode is not important; all subnodes should be enumerated
22*c66ec88fSEmmanuel Vadotand processed purely based on their content.
23*c66ec88fSEmmanuel Vadot
24*c66ec88fSEmmanuel VadotRequired properties for pinmux nodes are:
25*c66ec88fSEmmanuel Vadot - groups: A list of pinmux groups.
26*c66ec88fSEmmanuel Vadot - function: The name of a pinmux function to activate for the specified set
27*c66ec88fSEmmanuel Vadot   of groups.
28*c66ec88fSEmmanuel Vadot
29*c66ec88fSEmmanuel VadotRequired properties for configuration nodes:
30*c66ec88fSEmmanuel VadotOne of:
31*c66ec88fSEmmanuel Vadot - pins: a list of pin names
32*c66ec88fSEmmanuel Vadot - groups: A list of pinmux groups.
33*c66ec88fSEmmanuel Vadot
34*c66ec88fSEmmanuel VadotThe following generic properties as defined in pinctrl-bindings.txt are valid
35*c66ec88fSEmmanuel Vadotto specify in a pinmux subnode:
36*c66ec88fSEmmanuel Vadot groups, function
37*c66ec88fSEmmanuel Vadot
38*c66ec88fSEmmanuel VadotThe following generic properties as defined in pinctrl-bindings.txt are valid
39*c66ec88fSEmmanuel Vadotto specify in a pinconf subnode:
40*c66ec88fSEmmanuel Vadot groups, pins, bias-disable, bias-high-impedance, bias-pull-up, slew-rate,
41*c66ec88fSEmmanuel Vadot low-power-disable, low-power-enable
42*c66ec88fSEmmanuel Vadot
43*c66ec88fSEmmanuel Vadot Valid arguments for 'slew-rate' are '0' and '1' to select between slow and fast
44*c66ec88fSEmmanuel Vadot respectively.
45*c66ec88fSEmmanuel Vadot
46*c66ec88fSEmmanuel Vadot Valid values for groups are:
47*c66ec88fSEmmanuel Vadot   ethernet0_0_grp, ethernet1_0_grp, mdio0_0_grp, mdio1_0_grp,
48*c66ec88fSEmmanuel Vadot   qspi0_0_grp, qspi1_0_grp, qspi_fbclk, qspi_cs1_grp, spi0_0_grp - spi0_2_grp,
49*c66ec88fSEmmanuel Vadot   spi0_X_ssY (X=0..2, Y=0..2), spi1_0_grp - spi1_3_grp,
50*c66ec88fSEmmanuel Vadot   spi1_X_ssY (X=0..3, Y=0..2), sdio0_0_grp - sdio0_2_grp,
51*c66ec88fSEmmanuel Vadot   sdio1_0_grp - sdio1_3_grp, sdio0_emio_wp, sdio0_emio_cd, sdio1_emio_wp,
52*c66ec88fSEmmanuel Vadot   sdio1_emio_cd, smc0_nor, smc0_nor_cs1_grp, smc0_nor_addr25_grp, smc0_nand,
53*c66ec88fSEmmanuel Vadot   can0_0_grp - can0_10_grp, can1_0_grp - can1_11_grp, uart0_0_grp - uart0_10_grp,
54*c66ec88fSEmmanuel Vadot   uart1_0_grp - uart1_11_grp, i2c0_0_grp - i2c0_10_grp, i2c1_0_grp - i2c1_10_grp,
55*c66ec88fSEmmanuel Vadot   ttc0_0_grp - ttc0_2_grp, ttc1_0_grp - ttc1_2_grp, swdt0_0_grp - swdt0_4_grp,
56*c66ec88fSEmmanuel Vadot   gpio0_0_grp - gpio0_53_grp, usb0_0_grp, usb1_0_grp
57*c66ec88fSEmmanuel Vadot
58*c66ec88fSEmmanuel Vadot Valid values for pins are:
59*c66ec88fSEmmanuel Vadot   MIO0 - MIO53
60*c66ec88fSEmmanuel Vadot
61*c66ec88fSEmmanuel Vadot Valid values for function are:
62*c66ec88fSEmmanuel Vadot   ethernet0, ethernet1, mdio0, mdio1, qspi0, qspi1, qspi_fbclk, qspi_cs1,
63*c66ec88fSEmmanuel Vadot   spi0, spi0_ss, spi1, spi1_ss, sdio0, sdio0_pc, sdio0_cd, sdio0_wp,
64*c66ec88fSEmmanuel Vadot   sdio1, sdio1_pc, sdio1_cd, sdio1_wp,
65*c66ec88fSEmmanuel Vadot   smc0_nor, smc0_nor_cs1, smc0_nor_addr25, smc0_nand, can0, can1, uart0, uart1,
66*c66ec88fSEmmanuel Vadot   i2c0, i2c1, ttc0, ttc1, swdt0, gpio0, usb0, usb1
67*c66ec88fSEmmanuel Vadot
68*c66ec88fSEmmanuel VadotThe following driver-specific properties as defined here are valid to specify in
69*c66ec88fSEmmanuel Vadota pin configuration subnode:
70*c66ec88fSEmmanuel Vadot - io-standard: Configure the pin to use the selected IO standard according to
71*c66ec88fSEmmanuel Vadot   this mapping:
72*c66ec88fSEmmanuel Vadot    1: LVCMOS18
73*c66ec88fSEmmanuel Vadot    2: LVCMOS25
74*c66ec88fSEmmanuel Vadot    3: LVCMOS33
75*c66ec88fSEmmanuel Vadot    4: HSTL
76*c66ec88fSEmmanuel Vadot
77*c66ec88fSEmmanuel VadotExample:
78*c66ec88fSEmmanuel Vadot	pinctrl0: pinctrl@700 {
79*c66ec88fSEmmanuel Vadot		compatible = "xlnx,pinctrl-zynq";
80*c66ec88fSEmmanuel Vadot		reg = <0x700 0x200>;
81*c66ec88fSEmmanuel Vadot		syscon = <&slcr>;
82*c66ec88fSEmmanuel Vadot
83*c66ec88fSEmmanuel Vadot		pinctrl_uart1_default: uart1-default {
84*c66ec88fSEmmanuel Vadot			mux {
85*c66ec88fSEmmanuel Vadot				groups = "uart1_10_grp";
86*c66ec88fSEmmanuel Vadot				function = "uart1";
87*c66ec88fSEmmanuel Vadot			};
88*c66ec88fSEmmanuel Vadot
89*c66ec88fSEmmanuel Vadot			conf {
90*c66ec88fSEmmanuel Vadot				groups = "uart1_10_grp";
91*c66ec88fSEmmanuel Vadot				slew-rate = <0>;
92*c66ec88fSEmmanuel Vadot				io-standard = <1>;
93*c66ec88fSEmmanuel Vadot			};
94*c66ec88fSEmmanuel Vadot
95*c66ec88fSEmmanuel Vadot			conf-rx {
96*c66ec88fSEmmanuel Vadot				pins = "MIO49";
97*c66ec88fSEmmanuel Vadot				bias-high-impedance;
98*c66ec88fSEmmanuel Vadot			};
99*c66ec88fSEmmanuel Vadot
100*c66ec88fSEmmanuel Vadot			conf-tx {
101*c66ec88fSEmmanuel Vadot				pins = "MIO48";
102*c66ec88fSEmmanuel Vadot				bias-disable;
103*c66ec88fSEmmanuel Vadot			};
104*c66ec88fSEmmanuel Vadot		};
105*c66ec88fSEmmanuel Vadot	};
106