1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pinctrl/nvidia,tegra124-pinmux.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NVIDIA Tegra124 Pinmux Controller
8
9maintainers:
10  - Thierry Reding <thierry.reding@gmail.com>
11  - Jon Hunter <jonathanh@nvidia.com>
12
13description: The Tegra124 pinctrl binding is very similar to the Tegra20 and
14  Tegra30 pinctrl binding, as described in nvidia,tegra20-pinmux.yaml and
15  nvidia,tegra30-pinmux.yaml. In fact, this document assumes that binding as a
16  baseline, and only documents the differences between the two bindings.
17
18properties:
19  compatible:
20    oneOf:
21      - const: nvidia,tegra124-pinmux
22      - items:
23          - const: nvidia,tegra132-pinmux
24          - const: nvidia,tegra124-pinmux
25
26  reg:
27    items:
28      - description: driver strength and pad control registers
29      - description: pinmux registers
30      - description: MIPI_PAD_CTRL registers
31
32patternProperties:
33  "^pinmux(-[a-z0-9-_]+)?$":
34    type: object
35
36    # pin groups
37    additionalProperties:
38      $ref: nvidia,tegra-pinmux-common.yaml
39      additionalProperties: false
40      properties:
41        nvidia,pins:
42          $ref: /schemas/types.yaml#/definitions/string-array
43          items:
44            enum: [ ulpi_data0_po1, ulpi_data1_po2, ulpi_data2_po3,
45                    ulpi_data3_po4, ulpi_data4_po5, ulpi_data5_po6,
46                    ulpi_data6_po7, ulpi_data7_po0, ulpi_clk_py0, ulpi_dir_py1,
47                    ulpi_nxt_py2, ulpi_stp_py3, dap3_fs_pp0, dap3_din_pp1,
48                    dap3_dout_pp2, dap3_sclk_pp3, pv0, pv1, sdmmc1_clk_pz0,
49                    sdmmc1_cmd_pz1, sdmmc1_dat3_py4, sdmmc1_dat2_py5,
50                    sdmmc1_dat1_py6, sdmmc1_dat0_py7, clk2_out_pw5,
51                    clk2_req_pcc5, hdmi_int_pn7, ddc_scl_pv4, ddc_sda_pv5,
52                    uart2_rxd_pc3, uart2_txd_pc2, uart2_rts_n_pj6,
53                    uart2_cts_n_pj5, uart3_txd_pw6, uart3_rxd_pw7,
54                    uart3_cts_n_pa1, uart3_rts_n_pc0, pu0, pu1, pu2, pu3, pu4,
55                    pu5, pu6, gen1_i2c_scl_pc4, gen1_i2c_sda_pc5, dap4_fs_pp4,
56                    dap4_din_pp5, dap4_dout_pp6, dap4_sclk_pp7, clk3_out_pee0,
57                    clk3_req_pee1, pc7, pi5, pi7, pk0, pk1, pj0, pj2, pk3, pk4,
58                    pk2, pi3, pi6, pg0, pg1, pg2, pg3, pg4, pg5, pg6, pg7, ph0,
59                    ph1, ph2, ph3, ph4, ph5, ph6, ph7, pj7, pb0, pb1, pk7, pi0,
60                    pi1, pi2, pi4, gen2_i2c_scl_pt5, gen2_i2c_sda_pt6,
61                    sdmmc4_clk_pcc4, sdmmc4_cmd_pt7, sdmmc4_dat0_paa0,
62                    sdmmc4_dat1_paa1, sdmmc4_dat2_paa2, sdmmc4_dat3_paa3,
63                    sdmmc4_dat4_paa4, sdmmc4_dat5_paa5, sdmmc4_dat6_paa6,
64                    sdmmc4_dat7_paa7, cam_mclk_pcc0, pcc1, pbb0,
65                    cam_i2c_scl_pbb1, cam_i2c_sda_pbb2, pbb3, pbb4, pbb5, pbb6,
66                    pbb7, pcc2, jtag_rtck, pwr_i2c_scl_pz6, pwr_i2c_sda_pz7,
67                    kb_row0_pr0, kb_row1_pr1, kb_row2_pr2, kb_row3_pr3,
68                    kb_row4_pr4, kb_row5_pr5, kb_row6_pr6, kb_row7_pr7,
69                    kb_row8_ps0, kb_row9_ps1, kb_row10_ps2, kb_row11_ps3,
70                    kb_row12_ps4, kb_row13_ps5, kb_row14_ps6, kb_row15_ps7,
71                    kb_col0_pq0, kb_col1_pq1, kb_col2_pq2, kb_col3_pq3,
72                    kb_col4_pq4, kb_col5_pq5, kb_col6_pq6, kb_col7_pq7,
73                    clk_32k_out_pa0, core_pwr_req, cpu_pwr_req, pwr_int_n,
74                    clk_32k_in, owr, dap1_fs_pn0, dap1_din_pn1, dap1_dout_pn2,
75                    dap1_sclk_pn3, dap_mclk1_req_pee2, dap_mclk1_pw4,
76                    spdif_in_pk6, spdif_out_pk5, dap2_fs_pa2, dap2_din_pa4,
77                    dap2_dout_pa5, dap2_sclk_pa3, dvfs_pwm_px0,
78                    gpio_x1_aud_px1, gpio_x3_aud_px3, dvfs_clk_px2,
79                    gpio_x4_aud_px4, gpio_x5_aud_px5, gpio_x6_aud_px6,
80                    gpio_x7_aud_px7, sdmmc3_clk_pa6, sdmmc3_cmd_pa7,
81                    sdmmc3_dat0_pb7, sdmmc3_dat1_pb6, sdmmc3_dat2_pb5,
82                    sdmmc3_dat3_pb4, pex_l0_rst_n_pdd1, pex_l0_clkreq_n_pdd2,
83                    pex_wake_n_pdd3, pex_l1_rst_n_pdd5, pex_l1_clkreq_n_pdd6,
84                    hdmi_cec_pee3, sdmmc1_wp_n_pv3, sdmmc3_cd_n_pv2,
85                    gpio_w2_aud_pw2, gpio_w3_aud_pw3, usb_vbus_en0_pn4,
86                    usb_vbus_en1_pn5, sdmmc3_clk_lb_out_pee4,
87                    sdmmc3_clk_lb_in_pee5, gmi_clk_lb, reset_out_n,
88                    kb_row16_pt0, kb_row17_pt1, usb_vbus_en2_pff1, pff2,
89                    dp_hpd_pff0,
90                    # drive groups
91                    drive_ao1, drive_ao2, drive_at1, drive_at2, drive_at3,
92                    drive_at4, drive_at5, drive_cdev1, drive_cdev2, drive_dap1,
93                    drive_dap2, drive_dap3, drive_dap4, drive_dbg, drive_sdio3,
94                    drive_spi, drive_uaa, drive_uab, drive_uart2, drive_uart3,
95                    drive_sdio1, drive_ddc, drive_gma, drive_gme, drive_gmf,
96                    drive_gmg, drive_gmh, drive_owr, drive_uda, drive_gpv,
97                    drive_dev3, drive_cec, drive_usb_vbus_en, drive_ao3,
98                    drive_ao0, drive_hv0, drive_sdio4, drive_ao4,
99                    # MIPI pad control groups
100                    mipi_pad_ctrl_dsi_b ]
101
102        nvidia,function:
103          enum: [ blink, cec, cldvfs, clk12, cpu, dap, dap1, dap2, dev3,
104                  displaya, displaya_alt, displayb, dtv, extperiph1,
105                  extperiph2, extperiph3, gmi, gmi_alt, hda, hsi, i2c1, i2c2,
106                  i2c3, i2c4, i2cpwr, i2s0, i2s1, i2s2, i2s3, i2s4, irda, kbc,
107                  owr, pmi, pwm0, pwm1, pwm2, pwm3, pwron, reset_out_n, rsvd1,
108                  rsvd2, rsvd3, rsvd4, sdmmc1, sdmmc2, sdmmc3, sdmmc4, soc,
109                  spdif, spi1, spi2, spi3, spi4, spi5, spi6, trace, uarta,
110                  uartb, uartc, uartd, ulpi, usb, vgp1, vgp2, vgp3, vgp4, vgp5,
111                  vgp6, vi, vi_alt1, vi_alt3, vimclk2, vimclk2_alt, sata, ccla,
112                  pe0, pe, pe1, dp, rtck, sys, clk, tmds, csi, dsi_b ]
113
114        nvidia,pull: true
115        nvidia,tristate: true
116        nvidia,schmitt: true
117        nvidia,pull-down-strength: true
118        nvidia,pull-up-strength: true
119        nvidia,high-speed-mode: true
120        nvidia,low-power-mode: true
121        nvidia,enable-input: true
122        nvidia,open-drain: true
123        nvidia,lock: true
124        nvidia,io-reset: true
125        nvidia,rcv-sel: true
126        nvidia,drive-type: true
127        nvidia,slew-rate-rising: true
128        nvidia,slew-rate-falling: true
129
130      required:
131        - nvidia,pins
132
133additionalProperties: false
134
135required:
136  - compatible
137  - reg
138
139examples:
140  - |
141    #include <dt-bindings/clock/tegra124-car.h>
142    #include <dt-bindings/interrupt-controller/arm-gic.h>
143    #include <dt-bindings/pinctrl/pinctrl-tegra.h>
144
145    pinmux@70000868 {
146        compatible = "nvidia,tegra124-pinmux";
147        reg = <0x70000868 0x164>, /* Pad control registers */
148              <0x70003000 0x434>, /* Mux registers */
149              <0x70000820 0x8>;   /* MIPI pad control */
150
151        sdmmc4_default: pinmux {
152            sdmmc4_clk_pcc4 {
153                nvidia,pins = "sdmmc4_clk_pcc4";
154                nvidia,function = "sdmmc4";
155                nvidia,pull = <TEGRA_PIN_PULL_NONE>;
156                nvidia,tristate = <TEGRA_PIN_DISABLE>;
157            };
158
159            sdmmc4_dat0_paa0 {
160                nvidia,pins = "sdmmc4_dat0_paa0",
161                              "sdmmc4_dat1_paa1",
162                              "sdmmc4_dat2_paa2",
163                              "sdmmc4_dat3_paa3",
164                              "sdmmc4_dat4_paa4",
165                              "sdmmc4_dat5_paa5",
166                              "sdmmc4_dat6_paa6",
167                              "sdmmc4_dat7_paa7";
168                nvidia,function = "sdmmc4";
169                nvidia,pull = <TEGRA_PIN_PULL_UP>;
170                nvidia,tristate = <TEGRA_PIN_DISABLE>;
171            };
172        };
173    };
174...
175