1 # SPDX-License-Identifier: GPL-2.0
4 $id: http://devicetree.org/schemas/arm/tegra/nvidia,tegra20-pmc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Tegra Power Management Controller (PMC)
10 - Thierry Reding <thierry.reding@gmail.com>
11 - Jonathan Hunter <jonathanh@nvidia.com>
25 Offset and length of the register set for the device.
32 Must includes entries pclk and clk32k_in.
33 pclk is the Tegra clock of that name and clk32k_in is 32KHz clock
39 Must contain an entry for each entry in clock-names.
40 See ../clocks/clocks-bindings.txt for details.
45 Tegra PMC has clk_out_1, clk_out_2, and clk_out_3.
46 PMC also has blink control which allows 32Khz clock output to
48 Consumer of PMC clock should specify the desired clock by having
49 the clock ID in its "clocks" phandle cell with pmc clock provider.
50 See include/dt-bindings/soc/tegra-pmc.h for the list of Tegra PMC
56 Specifies number of cells needed to encode an interrupt source.
59 interrupt-controller: true
61 nvidia,invert-interrupt:
62 $ref: /schemas/types.yaml#/definitions/flag
63 description: Inverts the PMU interrupt signal.
64 The PMU is an external Power Management Unit, whose interrupt output
65 signal is fed into the PMC. This signal is optionally inverted, and
66 then fed into the ARM GIC. The PMC is not involved in the detection
67 or handling of this interrupt signal, merely its inversion.
69 nvidia,core-power-req-active-high:
70 $ref: /schemas/types.yaml#/definitions/flag
71 description: Core power request active-high.
73 nvidia,sys-clock-req-active-high:
74 $ref: /schemas/types.yaml#/definitions/flag
75 description: System clock request active-high.
77 nvidia,combined-power-req:
78 $ref: /schemas/types.yaml#/definitions/flag
79 description: combined power request for CPU and Core.
81 nvidia,cpu-pwr-good-en:
82 $ref: /schemas/types.yaml#/definitions/flag
84 CPU power good signal from external PMIC to PMC is enabled.
87 $ref: /schemas/types.yaml#/definitions/uint32
90 The suspend mode that the platform should use.
91 Mode 0 is for LP0, CPU + Core voltage off and DRAM in self-refresh
92 Mode 1 is for LP1, CPU voltage off and DRAM in self-refresh
93 Mode 2 is for LP2, CPU voltage off
95 nvidia,cpu-pwr-good-time:
96 $ref: /schemas/types.yaml#/definitions/uint32
97 description: CPU power good time in uSec.
99 nvidia,cpu-pwr-off-time:
100 $ref: /schemas/types.yaml#/definitions/uint32
101 description: CPU power off time in uSec.
103 nvidia,core-pwr-good-time:
104 $ref: /schemas/types.yaml#/definitions/uint32-array
106 <Oscillator-stable-time Power-stable-time>
107 Core power good time in uSec.
109 nvidia,core-pwr-off-time:
110 $ref: /schemas/types.yaml#/definitions/uint32
111 description: Core power off time in uSec.
114 $ref: /schemas/types.yaml#/definitions/uint32-array
116 <start length> Starting address and length of LP0 vector.
117 The LP0 vector contains the warm boot code that is executed
118 by AVP when resuming from the LP0 state.
119 The AVP (Audio-Video Processor) is an ARM7 processor and
120 always being the first boot processor when chip is power on
121 or resume from deep sleep mode. When the system is resumed
122 from the deep sleep mode, the warm boot code will restore
123 some PLLs, clocks and then brings up CPU0 for resuming the
129 On Tegra30, Tegra114 and Tegra124 if i2c-thermtrip subnode exists,
130 hardware-triggered thermal reset will be enabled.
133 nvidia,i2c-controller-id:
134 $ref: /schemas/types.yaml#/definitions/uint32
136 ID of I2C controller to send poweroff command to PMU.
137 Valid values are described in section 9.2.148
138 "APBDEV_PMC_SCRATCH53_0" of the Tegra K1 Technical Reference
142 $ref: /schemas/types.yaml#/definitions/uint32
143 description: Bus address of the PMU on the I2C bus.
146 $ref: /schemas/types.yaml#/definitions/uint32
147 description: PMU I2C register address to issue poweroff command.
150 $ref: /schemas/types.yaml#/definitions/uint32
151 description: Poweroff command to write to PMU.
154 $ref: /schemas/types.yaml#/definitions/uint32
156 Pinmux used by the hardware when issuing Poweroff command.
157 Defaults to 0. Valid values are described in section 12.5.2
158 "Pinmux Support" of the Tegra4 Technical Reference Manual.
161 - nvidia,i2c-controller-id
166 additionalProperties: false
171 This node contains a hierarchy of power domain nodes, which should
172 match the powergates on the Tegra SoC. Each powergate node
173 represents a power-domain on the Tegra SoC that can be power-gated
175 Hardware blocks belonging to a power domain should contain
176 "power-domains" property that is a phandle pointing to corresponding
178 The name of the powergate node should be one of the below. Note that
179 not every powergate is applicable to all Tegra devices and the following
180 list shows which powergates are applicable to which devices.
181 Please refer to Tegra TRM for mode details on the powergate nodes to
182 use for each power-gate block inside Tegra.
183 Name Description Devices Applicable
184 3d 3D Graphics Tegra20/114/124/210
185 3d0 3D Graphics 0 Tegra30
186 3d1 3D Graphics 1 Tegra30
189 dis Display A Tegra114/124/210
190 disb Display B Tegra114/124/210
191 heg 2D Graphics Tegra30/114/124/210
192 iram Internal RAM Tegra124/210
194 nvdec NVIDIA Video Decode Engine Tegra210
195 nvjpg NVIDIA JPEG Engine Tegra210
196 pcie PCIE Tegra20/30/124/210
197 sata SATA Tegra30/124/210
198 sor Display interfaces Tegra124/210
199 ve2 Video Encode Engine 2 Tegra210
200 venc Video Encode Engine All
201 vdec Video Decode Engine Tegra20/30/114/124
202 vic Video Imaging Compositor Tegra124/210
203 xusba USB Partition A Tegra114/124/210
204 xusbb USB Partition B Tegra114/124/210
205 xusbc USB Partition C Tegra114/124/210
216 Must contain an entry for each clock required by the PMC
217 for controlling a power-gate.
218 See ../clocks/clock-bindings.txt document for more details.
224 Must contain an entry for each reset required by the PMC
225 for controlling a power-gate.
226 See ../reset/reset.txt for more details.
228 '#power-domain-cells':
230 description: Must be 0.
235 - '#power-domain-cells'
237 additionalProperties: false
240 "^[a-f0-9]+-[a-f0-9]+$":
243 This is a Pad configuration node. On Tegra SOCs a pad is a set of
244 pins which are configured as a group. The pin grouping is a fixed
245 attribute of the hardware. The PMC can be used to set pad power state
246 and signaling voltage. A pad can be either in active or power down mode.
247 The support for power state and signaling voltage configuration varies
248 depending on the pad in question. 3.3V and 1.8V signaling voltages
249 are supported on pins where software controllable signaling voltage
250 switching is available.
252 The pad configuration state nodes are placed under the pmc node and they
253 are referred to by the pinctrl client properties. For more information
254 see Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
255 The pad name should be used as the value of the pins property in pin
258 The following pads are present on Tegra124 and Tegra132
259 audio, bb, cam, comp, csia, csb, cse, dsi, dsib, dsic, dsid, hdmi, hsic,
260 hv, lvds, mipi-bias, nand, pex-bias, pex-clk1, pex-clk2, pex-cntrl,
261 sdmmc1, sdmmc3, sdmmc4, sys_ddc, uart, usb0, usb1, usb2, usb_bias.
263 The following pads are present on Tegra210
264 audio, audio-hv, cam, csia, csib, csic, csid, csie, csif, dbg,
265 debug-nonao, dmic, dp, dsi, dsib, dsic, dsid, emmc, emmc2, gpio, hdmi,
266 hsic, lvds, mipi-bias, pex-bias, pex-clk1, pex-clk2, pex-cntrl, sdmmc1,
267 sdmmc3, spi, spi-hv, uart, usb0, usb1, usb2, usb3, usb-bias.
271 $ref: /schemas/types.yaml#/definitions/string
272 description: Must contain name of the pad(s) to be configured.
275 $ref: /schemas/types.yaml#/definitions/flag
276 description: Configure the pad into power down mode.
279 $ref: /schemas/types.yaml#/definitions/flag
280 description: Configure the pad into active mode.
283 $ref: /schemas/types.yaml#/definitions/uint32
285 Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or
286 TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages.
287 The values are defined in
288 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
289 Power state can be configured on all Tegra124 and Tegra132
290 pads. None of the Tegra124 or Tegra132 pads support signaling
292 All of the listed Tegra210 pads except pex-cntrl support power
293 state configuration. Signaling voltage switching is supported
294 on below Tegra210 pads.
295 audio, audio-hv, cam, dbg, dmic, gpio, pex-cntrl, sdmmc1,
296 sdmmc3, spi, spi-hv, and uart.
301 additionalProperties: false
306 The vast majority of hardware blocks of Tegra SoC belong to a
307 Core power domain, which has a dedicated voltage rail that powers
313 Should contain level, voltages and opp-supported-hw property.
314 The supported-hw is a bitfield indicating SoC speedo or process
317 "#power-domain-cells":
321 - operating-points-v2
322 - "#power-domain-cells"
324 additionalProperties: false
328 Phandle to voltage regulator connected to the SoC Core power rail.
337 additionalProperties: false
340 "nvidia,suspend-mode": ["nvidia,core-pwr-off-time", "nvidia,cpu-pwr-off-time"]
341 "nvidia,core-pwr-off-time": ["nvidia,core-pwr-good-time"]
342 "nvidia,cpu-pwr-off-time": ["nvidia,cpu-pwr-good-time"]
347 #include <dt-bindings/clock/tegra210-car.h>
348 #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
349 #include <dt-bindings/soc/tegra-pmc.h>
351 tegra_pmc: pmc@7000e400 {
352 compatible = "nvidia,tegra210-pmc";
353 reg = <0x7000e400 0x400>;
354 core-supply = <®ulator>;
355 clocks = <&tegra_car TEGRA210_CLK_PCLK>, <&clk32k_in>;
356 clock-names = "pclk", "clk32k_in";
359 nvidia,invert-interrupt;
360 nvidia,suspend-mode = <0>;
361 nvidia,cpu-pwr-good-time = <0>;
362 nvidia,cpu-pwr-off-time = <0>;
363 nvidia,core-pwr-good-time = <4587 3876>;
364 nvidia,core-pwr-off-time = <39065>;
365 nvidia,core-power-req-active-high;
366 nvidia,sys-clock-req-active-high;
368 pd_core: core-domain {
369 operating-points-v2 = <&core_opp_table>;
370 #power-domain-cells = <0>;
375 clocks = <&tegra_car TEGRA210_CLK_APE>,
376 <&tegra_car TEGRA210_CLK_APB2APE>;
377 resets = <&tegra_car 198>;
378 power-domains = <&pd_core>;
379 #power-domain-cells = <0>;
383 clocks = <&tegra_car TEGRA210_CLK_XUSB_SS>;
384 resets = <&tegra_car TEGRA210_CLK_XUSB_SS>;
385 power-domains = <&pd_core>;
386 #power-domain-cells = <0>;