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>
26 Offset and length of the register set for the device.
33 Must includes entries pclk and clk32k_in.
34 pclk is the Tegra clock of that name and clk32k_in is 32KHz clock
40 Must contain an entry for each entry in clock-names.
41 See ../clocks/clocks-bindings.txt for details.
46 Tegra PMC has clk_out_1, clk_out_2, and clk_out_3.
47 PMC also has blink control which allows 32Khz clock output to
49 Consumer of PMC clock should specify the desired clock by having
50 the clock ID in its "clocks" phandle cell with pmc clock provider.
51 See include/dt-bindings/soc/tegra-pmc.h for the list of Tegra PMC
57 Specifies number of cells needed to encode an interrupt source.
60 interrupt-controller: true
62 nvidia,invert-interrupt:
63 $ref: /schemas/types.yaml#/definitions/flag
64 description: Inverts the PMU interrupt signal.
65 The PMU is an external Power Management Unit, whose interrupt output
66 signal is fed into the PMC. This signal is optionally inverted, and
67 then fed into the ARM GIC. The PMC is not involved in the detection
68 or handling of this interrupt signal, merely its inversion.
70 nvidia,core-power-req-active-high:
71 $ref: /schemas/types.yaml#/definitions/flag
72 description: Core power request active-high.
74 nvidia,sys-clock-req-active-high:
75 $ref: /schemas/types.yaml#/definitions/flag
76 description: System clock request active-high.
78 nvidia,combined-power-req:
79 $ref: /schemas/types.yaml#/definitions/flag
80 description: combined power request for CPU and Core.
82 nvidia,cpu-pwr-good-en:
83 $ref: /schemas/types.yaml#/definitions/flag
85 CPU power good signal from external PMIC to PMC is enabled.
88 $ref: /schemas/types.yaml#/definitions/uint32
91 The suspend mode that the platform should use.
92 Mode 0 is for LP0, CPU + Core voltage off and DRAM in self-refresh
93 Mode 1 is for LP1, CPU voltage off and DRAM in self-refresh
94 Mode 2 is for LP2, CPU voltage off
96 nvidia,cpu-pwr-good-time:
97 $ref: /schemas/types.yaml#/definitions/uint32
98 description: CPU power good time in uSec.
100 nvidia,cpu-pwr-off-time:
101 $ref: /schemas/types.yaml#/definitions/uint32
102 description: CPU power off time in uSec.
104 nvidia,core-pwr-good-time:
105 $ref: /schemas/types.yaml#/definitions/uint32-array
107 <Oscillator-stable-time Power-stable-time>
108 Core power good time in uSec.
110 nvidia,core-pwr-off-time:
111 $ref: /schemas/types.yaml#/definitions/uint32
112 description: Core power off time in uSec.
115 $ref: /schemas/types.yaml#/definitions/uint32-array
117 <start length> Starting address and length of LP0 vector.
118 The LP0 vector contains the warm boot code that is executed
119 by AVP when resuming from the LP0 state.
120 The AVP (Audio-Video Processor) is an ARM7 processor and
121 always being the first boot processor when chip is power on
122 or resume from deep sleep mode. When the system is resumed
123 from the deep sleep mode, the warm boot code will restore
124 some PLLs, clocks and then brings up CPU0 for resuming the
130 On Tegra30, Tegra114 and Tegra124 if i2c-thermtrip subnode exists,
131 hardware-triggered thermal reset will be enabled.
134 nvidia,i2c-controller-id:
135 $ref: /schemas/types.yaml#/definitions/uint32
137 ID of I2C controller to send poweroff command to PMU.
138 Valid values are described in section 9.2.148
139 "APBDEV_PMC_SCRATCH53_0" of the Tegra K1 Technical Reference
143 $ref: /schemas/types.yaml#/definitions/uint32
144 description: Bus address of the PMU on the I2C bus.
147 $ref: /schemas/types.yaml#/definitions/uint32
148 description: PMU I2C register address to issue poweroff command.
151 $ref: /schemas/types.yaml#/definitions/uint32
152 description: Poweroff command to write to PMU.
155 $ref: /schemas/types.yaml#/definitions/uint32
157 Pinmux used by the hardware when issuing Poweroff command.
158 Defaults to 0. Valid values are described in section 12.5.2
159 "Pinmux Support" of the Tegra4 Technical Reference Manual.
162 - nvidia,i2c-controller-id
167 additionalProperties: false
172 This node contains a hierarchy of power domain nodes, which should
173 match the powergates on the Tegra SoC. Each powergate node
174 represents a power-domain on the Tegra SoC that can be power-gated
176 Hardware blocks belonging to a power domain should contain
177 "power-domains" property that is a phandle pointing to corresponding
179 The name of the powergate node should be one of the below. Note that
180 not every powergate is applicable to all Tegra devices and the following
181 list shows which powergates are applicable to which devices.
182 Please refer to Tegra TRM for mode details on the powergate nodes to
183 use for each power-gate block inside Tegra.
184 Name Description Devices Applicable
185 3d 3D Graphics Tegra20/114/124/210
186 3d0 3D Graphics 0 Tegra30
187 3d1 3D Graphics 1 Tegra30
190 dis Display A Tegra114/124/210
191 disb Display B Tegra114/124/210
192 heg 2D Graphics Tegra30/114/124/210
193 iram Internal RAM Tegra124/210
195 nvdec NVIDIA Video Decode Engine Tegra210
196 nvjpg NVIDIA JPEG Engine Tegra210
197 pcie PCIE Tegra20/30/124/210
198 sata SATA Tegra30/124/210
199 sor Display interfaces Tegra124/210
200 ve2 Video Encode Engine 2 Tegra210
201 venc Video Encode Engine All
202 vdec Video Decode Engine Tegra20/30/114/124
203 vic Video Imaging Compositor Tegra124/210
204 xusba USB Partition A Tegra114/124/210
205 xusbb USB Partition B Tegra114/124/210
206 xusbc USB Partition C Tegra114/124/210
217 Must contain an entry for each clock required by the PMC
218 for controlling a power-gate.
219 See ../clocks/clock-bindings.txt document for more details.
225 Must contain an entry for each reset required by the PMC
226 for controlling a power-gate.
227 See ../reset/reset.txt for more details.
229 '#power-domain-cells':
231 description: Must be 0.
236 - '#power-domain-cells'
238 additionalProperties: false
241 "^[a-f0-9]+-[a-f0-9]+$":
244 This is a Pad configuration node. On Tegra SOCs a pad is a set of
245 pins which are configured as a group. The pin grouping is a fixed
246 attribute of the hardware. The PMC can be used to set pad power state
247 and signaling voltage. A pad can be either in active or power down mode.
248 The support for power state and signaling voltage configuration varies
249 depending on the pad in question. 3.3V and 1.8V signaling voltages
250 are supported on pins where software controllable signaling voltage
251 switching is available.
253 The pad configuration state nodes are placed under the pmc node and they
254 are referred to by the pinctrl client properties. For more information
255 see Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
256 The pad name should be used as the value of the pins property in pin
259 The following pads are present on Tegra124 and Tegra132
260 audio, bb, cam, comp, csia, csb, cse, dsi, dsib, dsic, dsid, hdmi, hsic,
261 hv, lvds, mipi-bias, nand, pex-bias, pex-clk1, pex-clk2, pex-cntrl,
262 sdmmc1, sdmmc3, sdmmc4, sys_ddc, uart, usb0, usb1, usb2, usb_bias.
264 The following pads are present on Tegra210
265 audio, audio-hv, cam, csia, csib, csic, csid, csie, csif, dbg,
266 debug-nonao, dmic, dp, dsi, dsib, dsic, dsid, emmc, emmc2, gpio, hdmi,
267 hsic, lvds, mipi-bias, pex-bias, pex-clk1, pex-clk2, pex-cntrl, sdmmc1,
268 sdmmc3, spi, spi-hv, uart, usb0, usb1, usb2, usb3, usb-bias.
272 $ref: /schemas/types.yaml#/definitions/string
273 description: Must contain name of the pad(s) to be configured.
276 $ref: /schemas/types.yaml#/definitions/flag
277 description: Configure the pad into power down mode.
280 $ref: /schemas/types.yaml#/definitions/flag
281 description: Configure the pad into active mode.
284 $ref: /schemas/types.yaml#/definitions/uint32
286 Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or
287 TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages.
288 The values are defined in
289 include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
290 Power state can be configured on all Tegra124 and Tegra132
291 pads. None of the Tegra124 or Tegra132 pads support signaling
293 All of the listed Tegra210 pads except pex-cntrl support power
294 state configuration. Signaling voltage switching is supported
295 on below Tegra210 pads.
296 audio, audio-hv, cam, dbg, dmic, gpio, pex-cntrl, sdmmc1,
297 sdmmc3, spi, spi-hv, and uart.
302 additionalProperties: false
307 The vast majority of hardware blocks of Tegra SoC belong to a
308 Core power domain, which has a dedicated voltage rail that powers
314 Should contain level, voltages and opp-supported-hw property.
315 The supported-hw is a bitfield indicating SoC speedo or process
318 "#power-domain-cells":
322 - operating-points-v2
323 - "#power-domain-cells"
325 additionalProperties: false
329 Phandle to voltage regulator connected to the SoC Core power rail.
338 additionalProperties: false
341 "nvidia,suspend-mode": ["nvidia,core-pwr-off-time", "nvidia,cpu-pwr-off-time"]
342 "nvidia,core-pwr-off-time": ["nvidia,core-pwr-good-time"]
343 "nvidia,cpu-pwr-off-time": ["nvidia,cpu-pwr-good-time"]
348 #include <dt-bindings/clock/tegra210-car.h>
349 #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>
350 #include <dt-bindings/soc/tegra-pmc.h>
352 tegra_pmc: pmc@7000e400 {
353 compatible = "nvidia,tegra210-pmc";
354 reg = <0x7000e400 0x400>;
355 core-supply = <®ulator>;
356 clocks = <&tegra_car TEGRA210_CLK_PCLK>, <&clk32k_in>;
357 clock-names = "pclk", "clk32k_in";
360 nvidia,invert-interrupt;
361 nvidia,suspend-mode = <0>;
362 nvidia,cpu-pwr-good-time = <0>;
363 nvidia,cpu-pwr-off-time = <0>;
364 nvidia,core-pwr-good-time = <4587 3876>;
365 nvidia,core-pwr-off-time = <39065>;
366 nvidia,core-power-req-active-high;
367 nvidia,sys-clock-req-active-high;
369 pd_core: core-domain {
370 operating-points-v2 = <&core_opp_table>;
371 #power-domain-cells = <0>;
376 clocks = <&tegra_car TEGRA210_CLK_APE>,
377 <&tegra_car TEGRA210_CLK_APB2APE>;
378 resets = <&tegra_car 198>;
379 power-domains = <&pd_core>;
380 #power-domain-cells = <0>;
384 clocks = <&tegra_car TEGRA210_CLK_XUSB_SS>;
385 resets = <&tegra_car TEGRA210_CLK_XUSB_SS>;
386 power-domains = <&pd_core>;
387 #power-domain-cells = <0>;