xref: /freebsd/sys/contrib/device-tree/Bindings/arm/tegra/nvidia,tegra186-pmc.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
1e67e8565SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2e67e8565SEmmanuel Vadot%YAML 1.2
3e67e8565SEmmanuel Vadot---
4e67e8565SEmmanuel Vadot$id: http://devicetree.org/schemas/arm/tegra/nvidia,tegra186-pmc.yaml#
5e67e8565SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6e67e8565SEmmanuel Vadot
7e67e8565SEmmanuel Vadottitle: NVIDIA Tegra Power Management Controller (PMC)
8e67e8565SEmmanuel Vadot
9e67e8565SEmmanuel Vadotmaintainers:
10e67e8565SEmmanuel Vadot  - Thierry Reding <thierry.reding@gmail.com>
11e67e8565SEmmanuel Vadot  - Jon Hunter <jonathanh@nvidia.com>
12e67e8565SEmmanuel Vadot
13e67e8565SEmmanuel Vadotproperties:
14e67e8565SEmmanuel Vadot  compatible:
15e67e8565SEmmanuel Vadot    enum:
16e67e8565SEmmanuel Vadot      - nvidia,tegra186-pmc
17e67e8565SEmmanuel Vadot      - nvidia,tegra194-pmc
18e67e8565SEmmanuel Vadot      - nvidia,tegra234-pmc
19e67e8565SEmmanuel Vadot
20e67e8565SEmmanuel Vadot  reg:
21e67e8565SEmmanuel Vadot    minItems: 4
22e67e8565SEmmanuel Vadot    maxItems: 5
23e67e8565SEmmanuel Vadot
24e67e8565SEmmanuel Vadot  reg-names:
25e67e8565SEmmanuel Vadot    minItems: 4
26e67e8565SEmmanuel Vadot    items:
27e67e8565SEmmanuel Vadot      - const: pmc
28e67e8565SEmmanuel Vadot      - const: wake
29e67e8565SEmmanuel Vadot      - const: aotag
30*01950c46SEmmanuel Vadot      - enum: [ scratch, misc ]
31e67e8565SEmmanuel Vadot      - const: misc
32e67e8565SEmmanuel Vadot
33e67e8565SEmmanuel Vadot  interrupt-controller: true
34e67e8565SEmmanuel Vadot
35e67e8565SEmmanuel Vadot  "#interrupt-cells":
36e67e8565SEmmanuel Vadot    description: Specifies the number of cells needed to encode an
37e67e8565SEmmanuel Vadot      interrupt source. The value must be 2.
38e67e8565SEmmanuel Vadot    const: 2
39e67e8565SEmmanuel Vadot
40e67e8565SEmmanuel Vadot  nvidia,invert-interrupt:
41e67e8565SEmmanuel Vadot    description: If present, inverts the PMU interrupt signal.
42e67e8565SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/flag
43e67e8565SEmmanuel Vadot
44*01950c46SEmmanuel VadotallOf:
45*01950c46SEmmanuel Vadot  - if:
46e67e8565SEmmanuel Vadot      properties:
47e67e8565SEmmanuel Vadot        compatible:
48e67e8565SEmmanuel Vadot          contains:
49e67e8565SEmmanuel Vadot            const: nvidia,tegra186-pmc
50e67e8565SEmmanuel Vadot    then:
51e67e8565SEmmanuel Vadot      properties:
52e67e8565SEmmanuel Vadot        reg:
53e67e8565SEmmanuel Vadot          maxItems: 4
54e67e8565SEmmanuel Vadot        reg-names:
55e67e8565SEmmanuel Vadot          maxItems: 4
56*01950c46SEmmanuel Vadot          contains:
57*01950c46SEmmanuel Vadot            const: scratch
58*01950c46SEmmanuel Vadot
59*01950c46SEmmanuel Vadot  - if:
60*01950c46SEmmanuel Vadot      properties:
61*01950c46SEmmanuel Vadot        compatible:
62*01950c46SEmmanuel Vadot          contains:
63*01950c46SEmmanuel Vadot            const: nvidia,tegra194-pmc
64*01950c46SEmmanuel Vadot    then:
65e67e8565SEmmanuel Vadot      properties:
66e67e8565SEmmanuel Vadot        reg:
67e67e8565SEmmanuel Vadot          minItems: 5
68e67e8565SEmmanuel Vadot        reg-names:
69e67e8565SEmmanuel Vadot          minItems: 5
70e67e8565SEmmanuel Vadot
71*01950c46SEmmanuel Vadot  - if:
72*01950c46SEmmanuel Vadot      properties:
73*01950c46SEmmanuel Vadot        compatible:
74*01950c46SEmmanuel Vadot          contains:
75*01950c46SEmmanuel Vadot            const: nvidia,tegra234-pmc
76*01950c46SEmmanuel Vadot    then:
77*01950c46SEmmanuel Vadot      properties:
78*01950c46SEmmanuel Vadot        reg-names:
79*01950c46SEmmanuel Vadot          contains:
80*01950c46SEmmanuel Vadot            const: misc
81*01950c46SEmmanuel Vadot
82e67e8565SEmmanuel VadotpatternProperties:
83e67e8565SEmmanuel Vadot  "^[a-z0-9]+-[a-z0-9]+$":
84e67e8565SEmmanuel Vadot    if:
85e67e8565SEmmanuel Vadot      type: object
86e67e8565SEmmanuel Vadot    then:
87e67e8565SEmmanuel Vadot      description: |
88e67e8565SEmmanuel Vadot        These are pad configuration nodes. On Tegra SoCs a pad is a set of
89e67e8565SEmmanuel Vadot        pins which are configured as a group. The pin grouping is a fixed
90e67e8565SEmmanuel Vadot        attribute of the hardware. The PMC can be used to set pad power
91e67e8565SEmmanuel Vadot        state and signaling voltage. A pad can be either in active or
92e67e8565SEmmanuel Vadot        power down mode. The support for power state and signaling voltage
93e67e8565SEmmanuel Vadot        configuration varies depending on the pad in question. 3.3 V and
94e67e8565SEmmanuel Vadot        1.8 V signaling voltages are supported on pins where software
95e67e8565SEmmanuel Vadot        controllable signaling voltage switching is available.
96e67e8565SEmmanuel Vadot
97e67e8565SEmmanuel Vadot        Pad configurations are described with pin configuration nodes
98e67e8565SEmmanuel Vadot        which are placed under the pmc node and they are referred to by
99e67e8565SEmmanuel Vadot        the pinctrl client properties. For more information see
100e67e8565SEmmanuel Vadot
101e67e8565SEmmanuel Vadot          Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
102e67e8565SEmmanuel Vadot
103e67e8565SEmmanuel Vadot        The following pads are present on Tegra186:
104e67e8565SEmmanuel Vadot
105e67e8565SEmmanuel Vadot          csia, csib, dsi, mipi-bias, pex-clk-bias, pex-clk3, pex-clk2,
106e67e8565SEmmanuel Vadot          pex-clk1, usb0, usb1, usb2, usb-bias, uart, audio, hsic, dbg,
107e67e8565SEmmanuel Vadot          hdmi-dp0, hdmi-dp1, pex-cntrl, sdmmc2-hv, sdmmc4, cam, dsib,
108e67e8565SEmmanuel Vadot          dsic, dsid, csic, csid, csie, dsif, spi, ufs, dmic-hv, edp,
109e67e8565SEmmanuel Vadot          sdmmc1-hv, sdmmc3-hv, conn, audio-hv, ao-hv
110e67e8565SEmmanuel Vadot
111e67e8565SEmmanuel Vadot        The following pads are present on Tegra194:
112e67e8565SEmmanuel Vadot
113e67e8565SEmmanuel Vadot          csia, csib, mipi-bias, pex-clk-bias, pex-clk3, pex-clk2,
114e67e8565SEmmanuel Vadot          pex-clk1, eqos, pex-clk-2-bias, pex-clk-2, dap3, dap5, uart,
115e67e8565SEmmanuel Vadot          pwr-ctl, soc-gpio53, audio, gp-pwm2, gp-pwm3, soc-gpio12,
116e67e8565SEmmanuel Vadot          soc-gpio13, soc-gpio10, uart4, uart5, dbg, hdmi-dp3, hdmi-dp2,
117e67e8565SEmmanuel Vadot          hdmi-dp0, hdmi-dp1, pex-cntrl, pex-ctl2, pex-l0-rst,
118e67e8565SEmmanuel Vadot          pex-l1-rst, sdmmc4, pex-l5-rst, cam, csic, csid, csie, csif,
119e67e8565SEmmanuel Vadot          spi, ufs, csig, csih, edp, sdmmc1-hv, sdmmc3-hv, conn,
120e67e8565SEmmanuel Vadot          audio-hv, ao-hv
121e67e8565SEmmanuel Vadot
122e67e8565SEmmanuel Vadot      properties:
123e67e8565SEmmanuel Vadot        pins:
124e67e8565SEmmanuel Vadot          $ref: /schemas/types.yaml#/definitions/string
125e67e8565SEmmanuel Vadot          description: Must contain the name of the pad(s) to be
126e67e8565SEmmanuel Vadot            configured.
127e67e8565SEmmanuel Vadot
128e67e8565SEmmanuel Vadot        low-power-enable:
129e67e8565SEmmanuel Vadot          description: Configure the pad into power down mode.
130e67e8565SEmmanuel Vadot          $ref: /schemas/types.yaml#/definitions/flag
131e67e8565SEmmanuel Vadot
132e67e8565SEmmanuel Vadot        low-power-disable:
133e67e8565SEmmanuel Vadot          description: Configure the pad into active mode.
134e67e8565SEmmanuel Vadot          $ref: /schemas/types.yaml#/definitions/flag
135e67e8565SEmmanuel Vadot
136e67e8565SEmmanuel Vadot        power-source:
137e67e8565SEmmanuel Vadot          $ref: /schemas/types.yaml#/definitions/uint32
138e67e8565SEmmanuel Vadot          description: |
139e67e8565SEmmanuel Vadot            Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or
140e67e8565SEmmanuel Vadot            TEGRA_IO_PAD_VOLTAGE_3V3 to select between signalling
141e67e8565SEmmanuel Vadot            voltages.
142e67e8565SEmmanuel Vadot
143e67e8565SEmmanuel Vadot            The values are defined in
144e67e8565SEmmanuel Vadot
145e67e8565SEmmanuel Vadot              include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h
146e67e8565SEmmanuel Vadot
147e67e8565SEmmanuel Vadot            The power state can be configured on all of the above pads
148e67e8565SEmmanuel Vadot            except for ao-hv. Following pads have software configurable
149e67e8565SEmmanuel Vadot            signaling voltages: sdmmc2-hv, dmic-hv, sdmmc1-hv, sdmmc3-hv,
150e67e8565SEmmanuel Vadot            audio-hv, ao-hv.
151e67e8565SEmmanuel Vadot
152e67e8565SEmmanuel Vadot        phandle: true
153e67e8565SEmmanuel Vadot
154e67e8565SEmmanuel Vadot      required:
155e67e8565SEmmanuel Vadot        - pins
156e67e8565SEmmanuel Vadot
157e67e8565SEmmanuel Vadot      additionalProperties: false
158e67e8565SEmmanuel Vadot
159e67e8565SEmmanuel Vadotrequired:
160e67e8565SEmmanuel Vadot  - compatible
161e67e8565SEmmanuel Vadot  - reg
162e67e8565SEmmanuel Vadot  - reg-names
163e67e8565SEmmanuel Vadot
164e67e8565SEmmanuel VadotadditionalProperties: false
165e67e8565SEmmanuel Vadot
166e67e8565SEmmanuel Vadotdependencies:
167e67e8565SEmmanuel Vadot  interrupt-controller: ['#interrupt-cells']
168e67e8565SEmmanuel Vadot  "#interrupt-cells":
169e67e8565SEmmanuel Vadot    required:
170e67e8565SEmmanuel Vadot      - interrupt-controller
171e67e8565SEmmanuel Vadot
172e67e8565SEmmanuel Vadotexamples:
173e67e8565SEmmanuel Vadot  - |
174e67e8565SEmmanuel Vadot    #include <dt-bindings/clock/tegra186-clock.h>
175e67e8565SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
176e67e8565SEmmanuel Vadot    #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
177e67e8565SEmmanuel Vadot    #include <dt-bindings/memory/tegra186-mc.h>
178e67e8565SEmmanuel Vadot    #include <dt-bindings/reset/tegra186-reset.h>
179e67e8565SEmmanuel Vadot
180e67e8565SEmmanuel Vadot    pmc@c3600000 {
181e67e8565SEmmanuel Vadot        compatible = "nvidia,tegra186-pmc";
182e67e8565SEmmanuel Vadot        reg = <0x0c360000 0x10000>,
183e67e8565SEmmanuel Vadot              <0x0c370000 0x10000>,
184e67e8565SEmmanuel Vadot              <0x0c380000 0x10000>,
185e67e8565SEmmanuel Vadot              <0x0c390000 0x10000>;
186e67e8565SEmmanuel Vadot        reg-names = "pmc", "wake", "aotag", "scratch";
187e67e8565SEmmanuel Vadot        nvidia,invert-interrupt;
188e67e8565SEmmanuel Vadot
189e67e8565SEmmanuel Vadot        sdmmc1_3v3: sdmmc1-3v3 {
190e67e8565SEmmanuel Vadot            pins = "sdmmc1-hv";
191e67e8565SEmmanuel Vadot            power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
192e67e8565SEmmanuel Vadot        };
193e67e8565SEmmanuel Vadot
194e67e8565SEmmanuel Vadot        sdmmc1_1v8: sdmmc1-1v8 {
195e67e8565SEmmanuel Vadot            pins = "sdmmc1-hv";
196e67e8565SEmmanuel Vadot            power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
197e67e8565SEmmanuel Vadot        };
198e67e8565SEmmanuel Vadot    };
199e67e8565SEmmanuel Vadot
200e67e8565SEmmanuel Vadot    sdmmc1: mmc@3400000 {
201e67e8565SEmmanuel Vadot        compatible = "nvidia,tegra186-sdhci";
202e67e8565SEmmanuel Vadot        reg = <0x03400000 0x10000>;
203e67e8565SEmmanuel Vadot        interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
204e67e8565SEmmanuel Vadot        clocks = <&bpmp TEGRA186_CLK_SDMMC1>,
205e67e8565SEmmanuel Vadot                 <&bpmp TEGRA186_CLK_SDMMC_LEGACY_TM>;
206e67e8565SEmmanuel Vadot        clock-names = "sdhci", "tmclk";
207e67e8565SEmmanuel Vadot        resets = <&bpmp TEGRA186_RESET_SDMMC1>;
208e67e8565SEmmanuel Vadot        reset-names = "sdhci";
209e67e8565SEmmanuel Vadot        interconnects = <&mc TEGRA186_MEMORY_CLIENT_SDMMCRA &emc>,
210e67e8565SEmmanuel Vadot                        <&mc TEGRA186_MEMORY_CLIENT_SDMMCWA &emc>;
211e67e8565SEmmanuel Vadot        interconnect-names = "dma-mem", "write";
212e67e8565SEmmanuel Vadot        iommus = <&smmu TEGRA186_SID_SDMMC1>;
213e67e8565SEmmanuel Vadot        pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
214e67e8565SEmmanuel Vadot        pinctrl-0 = <&sdmmc1_3v3>;
215e67e8565SEmmanuel Vadot        pinctrl-1 = <&sdmmc1_1v8>;
216e67e8565SEmmanuel Vadot    };
217