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