162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/pinctrl/xlnx,zynq-pinctrl.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Xilinx Zynq Pinctrl
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  Please refer to pinctrl-bindings.txt in this directory for details of the
1462306a36Sopenharmony_ci  common pinctrl bindings used by client devices, including the meaning of the
1562306a36Sopenharmony_ci  phrase "pin configuration node".
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci  Zynq's pin configuration nodes act as a container for an arbitrary number of
1862306a36Sopenharmony_ci  subnodes. Each of these subnodes represents some desired configuration for a
1962306a36Sopenharmony_ci  pin, a group, or a list of pins or groups. This configuration can include the
2062306a36Sopenharmony_ci  mux function to select on those pin(s)/group(s), and various pin configuration
2162306a36Sopenharmony_ci  parameters, such as pull-up, slew rate, etc.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  Each configuration node can consist of multiple nodes describing the pinmux and
2462306a36Sopenharmony_ci  pinconf options. Those nodes can be pinmux nodes or pinconf nodes.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  The name of each subnode is not important; all subnodes should be enumerated
2762306a36Sopenharmony_ci  and processed purely based on their content.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciproperties:
3062306a36Sopenharmony_ci  compatible:
3162306a36Sopenharmony_ci    const: xlnx,zynq-pinctrl
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  reg:
3462306a36Sopenharmony_ci    description: Specifies the base address and size of the SLCR space.
3562306a36Sopenharmony_ci    maxItems: 1
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  syscon:
3862306a36Sopenharmony_ci    description:
3962306a36Sopenharmony_ci      phandle to the SLCR.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cipatternProperties:
4262306a36Sopenharmony_ci  '^(.*-)?(default|gpio)$':
4362306a36Sopenharmony_ci    type: object
4462306a36Sopenharmony_ci    patternProperties:
4562306a36Sopenharmony_ci      '^mux':
4662306a36Sopenharmony_ci        type: object
4762306a36Sopenharmony_ci        description:
4862306a36Sopenharmony_ci          Pinctrl node's client devices use subnodes for pin muxes,
4962306a36Sopenharmony_ci          which in turn use below standard properties.
5062306a36Sopenharmony_ci        $ref: pinmux-node.yaml#
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci        properties:
5362306a36Sopenharmony_ci          groups:
5462306a36Sopenharmony_ci            description:
5562306a36Sopenharmony_ci              List of groups to select (either this or "pins" must be
5662306a36Sopenharmony_ci              specified), available groups for this subnode.
5762306a36Sopenharmony_ci            items:
5862306a36Sopenharmony_ci              enum: [ethernet0_0_grp, ethernet1_0_grp, mdio0_0_grp,
5962306a36Sopenharmony_ci                     mdio1_0_grp, qspi0_0_grp, qspi1_0_grp, qspi_fbclk,
6062306a36Sopenharmony_ci                     qspi_cs1_grp, spi0_0_grp, spi0_1_grp, spi0_2_grp,
6162306a36Sopenharmony_ci                     spi0_0_ss0, spi0_0_ss1, spi0_0_ss2, spi0_1_ss0,
6262306a36Sopenharmony_ci                     spi0_1_ss1, spi0_1_ss2, spi0_2_ss0, spi0_2_ss1,
6362306a36Sopenharmony_ci                     spi0_2_ss2, spi1_0_grp, spi1_1_grp, spi1_2_grp,
6462306a36Sopenharmony_ci                     spi1_3_grp, spi1_0_ss0, spi1_0_ss1, spi1_0_ss2,
6562306a36Sopenharmony_ci                     spi1_1_ss0, spi1_1_ss1, spi1_1_ss2, spi1_2_ss0,
6662306a36Sopenharmony_ci                     spi1_2_ss1, spi1_2_ss2, spi1_3_ss0, spi1_3_ss1,
6762306a36Sopenharmony_ci                     spi1_3_ss2, sdio0_0_grp, sdio0_1_grp, sdio0_2_grp,
6862306a36Sopenharmony_ci                     sdio1_0_grp, sdio1_1_grp, sdio1_2_grp, sdio1_3_grp,
6962306a36Sopenharmony_ci                     sdio0_emio_wp, sdio0_emio_cd, sdio1_emio_wp,
7062306a36Sopenharmony_ci                     sdio1_emio_cd, smc0_nor, smc0_nor_cs1_grp,
7162306a36Sopenharmony_ci                     smc0_nor_addr25_grp, smc0_nand, can0_0_grp, can0_1_grp,
7262306a36Sopenharmony_ci                     can0_2_grp, can0_3_grp, can0_4_grp, can0_5_grp,
7362306a36Sopenharmony_ci                     can0_6_grp, can0_7_grp, can0_8_grp, can0_9_grp,
7462306a36Sopenharmony_ci                     can0_10_grp, can1_0_grp, can1_1_grp, can1_2_grp,
7562306a36Sopenharmony_ci                     can1_3_grp, can1_4_grp, can1_5_grp, can1_6_grp,
7662306a36Sopenharmony_ci                     can1_7_grp, can1_8_grp, can1_9_grp, can1_10_grp,
7762306a36Sopenharmony_ci                     can1_11_grp, uart0_0_grp, uart0_1_grp, uart0_2_grp,
7862306a36Sopenharmony_ci                     uart0_3_grp, uart0_4_grp, uart0_5_grp, uart0_6_grp,
7962306a36Sopenharmony_ci                     uart0_7_grp, uart0_8_grp, uart0_9_grp, uart0_10_grp,
8062306a36Sopenharmony_ci                     uart1_0_grp, uart1_1_grp, uart1_2_grp, uart1_3_grp,
8162306a36Sopenharmony_ci                     uart1_4_grp, uart1_5_grp, uart1_6_grp, uart1_7_grp,
8262306a36Sopenharmony_ci                     uart1_8_grp, uart1_9_grp, uart1_10_grp, uart1_11_grp,
8362306a36Sopenharmony_ci                     i2c0_0_grp, i2c0_1_grp, i2c0_2_grp, i2c0_3_grp,
8462306a36Sopenharmony_ci                     i2c0_4_grp, i2c0_5_grp, i2c0_6_grp, i2c0_7_grp,
8562306a36Sopenharmony_ci                     i2c0_8_grp, i2c0_9_grp, i2c0_10_grp, i2c1_0_grp,
8662306a36Sopenharmony_ci                     i2c1_1_grp, i2c1_2_grp, i2c1_3_grp, i2c1_4_grp,
8762306a36Sopenharmony_ci                     i2c1_5_grp, i2c1_6_grp, i2c1_7_grp, i2c1_8_grp,
8862306a36Sopenharmony_ci                     i2c1_9_grp, i2c1_10_grp, ttc0_0_grp, ttc0_1_grp,
8962306a36Sopenharmony_ci                     ttc0_2_grp, ttc1_0_grp, ttc1_1_grp, ttc1_2_grp,
9062306a36Sopenharmony_ci                     swdt0_0_grp, swdt0_1_grp, swdt0_2_grp, swdt0_3_grp,
9162306a36Sopenharmony_ci                     swdt0_4_grp, gpio0_0_grp, gpio0_1_grp, gpio0_2_grp,
9262306a36Sopenharmony_ci                     gpio0_3_grp, gpio0_4_grp, gpio0_5_grp, gpio0_6_grp,
9362306a36Sopenharmony_ci                     gpio0_7_grp, gpio0_8_grp, gpio0_9_grp, gpio0_10_grp,
9462306a36Sopenharmony_ci                     gpio0_11_grp, gpio0_12_grp, gpio0_13_grp, gpio0_14_grp,
9562306a36Sopenharmony_ci                     gpio0_15_grp, gpio0_16_grp, gpio0_17_grp, gpio0_18_grp,
9662306a36Sopenharmony_ci                     gpio0_19_grp, gpio0_20_grp, gpio0_21_grp, gpio0_22_grp,
9762306a36Sopenharmony_ci                     gpio0_23_grp, gpio0_24_grp, gpio0_25_grp, gpio0_26_grp,
9862306a36Sopenharmony_ci                     gpio0_27_grp, gpio0_28_grp, gpio0_29_grp, gpio0_30_grp,
9962306a36Sopenharmony_ci                     gpio0_31_grp, gpio0_32_grp, gpio0_33_grp, gpio0_34_grp,
10062306a36Sopenharmony_ci                     gpio0_35_grp, gpio0_36_grp, gpio0_37_grp, gpio0_38_grp,
10162306a36Sopenharmony_ci                     gpio0_39_grp, gpio0_40_grp, gpio0_41_grp, gpio0_42_grp,
10262306a36Sopenharmony_ci                     gpio0_43_grp, gpio0_44_grp, gpio0_45_grp, gpio0_46_grp,
10362306a36Sopenharmony_ci                     gpio0_47_grp, gpio0_48_grp, gpio0_49_grp, gpio0_50_grp,
10462306a36Sopenharmony_ci                     gpio0_51_grp, gpio0_52_grp, gpio0_53_grp, usb0_0_grp,
10562306a36Sopenharmony_ci                     usb1_0_grp]
10662306a36Sopenharmony_ci            maxItems: 54
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci          function:
10962306a36Sopenharmony_ci            description:
11062306a36Sopenharmony_ci              Specify the alternative function to be configured for the
11162306a36Sopenharmony_ci              given pin groups.
11262306a36Sopenharmony_ci            enum: [ethernet0, ethernet1, mdio0, mdio1, qspi0, qspi1, qspi_fbclk,
11362306a36Sopenharmony_ci                   qspi_cs1, spi0, spi0_ss, spi1, spi1_ss, sdio0, sdio0_pc,
11462306a36Sopenharmony_ci                   sdio0_cd, sdio0_wp, sdio1, sdio1_pc, sdio1_cd, sdio1_wp,
11562306a36Sopenharmony_ci                   smc0_nor, smc0_nor_cs1, smc0_nor_addr25, smc0_nand, can0,
11662306a36Sopenharmony_ci                   can1, uart0, uart1, i2c0, i2c1, ttc0, ttc1, swdt0, gpio0,
11762306a36Sopenharmony_ci                   usb0, usb1]
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci        required:
12062306a36Sopenharmony_ci          - groups
12162306a36Sopenharmony_ci          - function
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci        additionalProperties: false
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci      '^conf':
12662306a36Sopenharmony_ci        type: object
12762306a36Sopenharmony_ci        description:
12862306a36Sopenharmony_ci          Pinctrl node's client devices use subnodes for pin configurations,
12962306a36Sopenharmony_ci          which in turn use the standard properties below.
13062306a36Sopenharmony_ci        $ref: pincfg-node.yaml#
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci        properties:
13362306a36Sopenharmony_ci          groups:
13462306a36Sopenharmony_ci            description:
13562306a36Sopenharmony_ci              List of pin groups as mentioned above.
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci          pins:
13862306a36Sopenharmony_ci            description:
13962306a36Sopenharmony_ci              List of pin names to select in this subnode.
14062306a36Sopenharmony_ci            items:
14162306a36Sopenharmony_ci              pattern: '^MIO([0-9]|[1-4][0-9]|5[0-3])$'
14262306a36Sopenharmony_ci            maxItems: 54
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci          bias-pull-up: true
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci          bias-pull-down: true
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci          bias-disable: true
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci          bias-high-impedance: true
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci          low-power-enable: true
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci          low-power-disable: true
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci          slew-rate:
15762306a36Sopenharmony_ci            enum: [0, 1]
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci          power-source:
16062306a36Sopenharmony_ci            enum: [1, 2, 3, 4]
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci        oneOf:
16362306a36Sopenharmony_ci          - required: [ groups ]
16462306a36Sopenharmony_ci          - required: [ pins ]
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ci        additionalProperties: false
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci    additionalProperties: false
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ciallOf:
17162306a36Sopenharmony_ci  - $ref: pinctrl.yaml#
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_cirequired:
17462306a36Sopenharmony_ci  - compatible
17562306a36Sopenharmony_ci  - reg
17662306a36Sopenharmony_ci  - syscon
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ciadditionalProperties: false
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ciexamples:
18162306a36Sopenharmony_ci  - |
18262306a36Sopenharmony_ci    #include <dt-bindings/pinctrl/pinctrl-zynq.h>
18362306a36Sopenharmony_ci    pinctrl0: pinctrl@700 {
18462306a36Sopenharmony_ci       compatible = "xlnx,zynq-pinctrl";
18562306a36Sopenharmony_ci       reg = <0x700 0x200>;
18662306a36Sopenharmony_ci       syscon = <&slcr>;
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci       pinctrl_uart1_default: uart1-default {
18962306a36Sopenharmony_ci           mux {
19062306a36Sopenharmony_ci               groups = "uart1_10_grp";
19162306a36Sopenharmony_ci               function = "uart1";
19262306a36Sopenharmony_ci           };
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci           conf {
19562306a36Sopenharmony_ci               groups = "uart1_10_grp";
19662306a36Sopenharmony_ci               slew-rate = <0>;
19762306a36Sopenharmony_ci               power-source = <IO_STANDARD_LVCMOS18>;
19862306a36Sopenharmony_ci           };
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci           conf-rx {
20162306a36Sopenharmony_ci               pins = "MIO49";
20262306a36Sopenharmony_ci               bias-high-impedance;
20362306a36Sopenharmony_ci           };
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci           conf-tx {
20662306a36Sopenharmony_ci               pins = "MIO48";
20762306a36Sopenharmony_ci               bias-disable;
20862306a36Sopenharmony_ci           };
20962306a36Sopenharmony_ci       };
21062306a36Sopenharmony_ci    };
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci    uart1 {
21362306a36Sopenharmony_ci         pinctrl-names = "default";
21462306a36Sopenharmony_ci         pinctrl-0 = <&pinctrl_uart1_default>;
21562306a36Sopenharmony_ci    };
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci...
218