Merge tag 'fpga-for-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/fpga...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / arm / tegra / nvidia,tegra20-pmc.yaml
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/arm/tegra/nvidia,tegra20-pmc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Tegra Power Management Controller (PMC)
8
9 maintainers:
10   - Thierry Reding <thierry.reding@gmail.com>
11   - Jonathan Hunter <jonathanh@nvidia.com>
12
13 properties:
14   compatible:
15     enum:
16       - nvidia,tegra20-pmc
17       - nvidia,tegra30-pmc
18       - nvidia,tegra114-pmc
19       - nvidia,tegra124-pmc
20       - nvidia,tegra210-pmc
21
22   reg:
23     maxItems: 1
24     description:
25       Offset and length of the register set for the device.
26
27   clock-names:
28     items:
29       - const: pclk
30       - const: clk32k_in
31     description:
32       Must includes entries pclk and clk32k_in.
33       pclk is the Tegra clock of that name and clk32k_in is 32KHz clock
34       input to Tegra.
35
36   clocks:
37     maxItems: 2
38     description:
39       Must contain an entry for each entry in clock-names.
40       See ../clocks/clocks-bindings.txt for details.
41
42   '#clock-cells':
43     const: 1
44     description:
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
47       Tegra blink pad.
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
51       clock IDs.
52
53   '#interrupt-cells':
54     const: 2
55     description:
56       Specifies number of cells needed to encode an interrupt source.
57       The value must be 2.
58
59   interrupt-controller: true
60
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.
68
69   nvidia,core-power-req-active-high:
70     $ref: /schemas/types.yaml#/definitions/flag
71     description: Core power request active-high.
72
73   nvidia,sys-clock-req-active-high:
74     $ref: /schemas/types.yaml#/definitions/flag
75     description: System clock request active-high.
76
77   nvidia,combined-power-req:
78     $ref: /schemas/types.yaml#/definitions/flag
79     description: combined power request for CPU and Core.
80
81   nvidia,cpu-pwr-good-en:
82     $ref: /schemas/types.yaml#/definitions/flag
83     description:
84       CPU power good signal from external PMIC to PMC is enabled.
85
86   nvidia,suspend-mode:
87     $ref: /schemas/types.yaml#/definitions/uint32
88     enum: [0, 1, 2]
89     description:
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
94
95   nvidia,cpu-pwr-good-time:
96     $ref: /schemas/types.yaml#/definitions/uint32
97     description: CPU power good time in uSec.
98
99   nvidia,cpu-pwr-off-time:
100     $ref: /schemas/types.yaml#/definitions/uint32
101     description: CPU power off time in uSec.
102
103   nvidia,core-pwr-good-time:
104     $ref: /schemas/types.yaml#/definitions/uint32-array
105     description:
106       <Oscillator-stable-time Power-stable-time>
107       Core power good time in uSec.
108
109   nvidia,core-pwr-off-time:
110     $ref: /schemas/types.yaml#/definitions/uint32
111     description: Core power off time in uSec.
112
113   nvidia,lp0-vec:
114     $ref: /schemas/types.yaml#/definitions/uint32-array
115     description:
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
124       system.
125
126   i2c-thermtrip:
127     type: object
128     description:
129       On Tegra30, Tegra114 and Tegra124 if i2c-thermtrip subnode exists,
130       hardware-triggered thermal reset will be enabled.
131
132     properties:
133       nvidia,i2c-controller-id:
134         $ref: /schemas/types.yaml#/definitions/uint32
135         description:
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
139           Manual.
140
141       nvidia,bus-addr:
142         $ref: /schemas/types.yaml#/definitions/uint32
143         description: Bus address of the PMU on the I2C bus.
144
145       nvidia,reg-addr:
146         $ref: /schemas/types.yaml#/definitions/uint32
147         description: PMU I2C register address to issue poweroff command.
148
149       nvidia,reg-data:
150         $ref: /schemas/types.yaml#/definitions/uint32
151         description: Poweroff command to write to PMU.
152
153       nvidia,pinmux-id:
154         $ref: /schemas/types.yaml#/definitions/uint32
155         description:
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.
159
160     required:
161       - nvidia,i2c-controller-id
162       - nvidia,bus-addr
163       - nvidia,reg-addr
164       - nvidia,reg-data
165
166     additionalProperties: false
167
168   powergates:
169     type: object
170     description: |
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
174       by the Tegra PMC.
175       Hardware blocks belonging to a power domain should contain
176       "power-domains" property that is a phandle pointing to corresponding
177       powergate node.
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
187       aud                 Audio                                         Tegra210
188       dfd                 Debug                                         Tegra210
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
193       mpe                 MPEG Encode                               All
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
206
207     patternProperties:
208       "^[a-z0-9]+$":
209         type: object
210
211         patternProperties:
212           clocks:
213             minItems: 1
214             maxItems: 8
215             description:
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.
219
220           resets:
221             minItems: 1
222             maxItems: 8
223             description:
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.
227
228           '#power-domain-cells':
229             const: 0
230             description: Must be 0.
231
232         required:
233           - clocks
234           - resets
235           - '#power-domain-cells'
236
237     additionalProperties: false
238
239 patternProperties:
240   "^[a-f0-9]+-[a-f0-9]+$":
241     type: object
242     description:
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.
251
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
256       configuration nodes.
257
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.
262
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.
268
269     properties:
270       pins:
271         $ref: /schemas/types.yaml#/definitions/string
272         description: Must contain name of the pad(s) to be configured.
273
274       low-power-enable:
275         $ref: /schemas/types.yaml#/definitions/flag
276         description: Configure the pad into power down mode.
277
278       low-power-disable:
279         $ref: /schemas/types.yaml#/definitions/flag
280         description: Configure the pad into active mode.
281
282       power-source:
283         $ref: /schemas/types.yaml#/definitions/uint32
284         description:
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
291           voltage switching.
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.
297
298     required:
299       - pins
300
301     additionalProperties: false
302
303   core-domain:
304     type: object
305     description: |
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
308       the blocks.
309
310     properties:
311       operating-points-v2:
312         description:
313           Should contain level, voltages and opp-supported-hw property.
314           The supported-hw is a bitfield indicating SoC speedo or process
315           ID mask.
316
317       "#power-domain-cells":
318         const: 0
319
320     required:
321       - operating-points-v2
322       - "#power-domain-cells"
323
324     additionalProperties: false
325
326   core-supply:
327     description:
328       Phandle to voltage regulator connected to the SoC Core power rail.
329
330 required:
331   - compatible
332   - reg
333   - clock-names
334   - clocks
335   - '#clock-cells'
336
337 additionalProperties: false
338
339 dependencies:
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"]
343
344 examples:
345   - |
346
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>
350
351     tegra_pmc: pmc@7000e400 {
352               compatible = "nvidia,tegra210-pmc";
353               reg = <0x7000e400 0x400>;
354               core-supply = <&regulator>;
355               clocks = <&tegra_car TEGRA210_CLK_PCLK>, <&clk32k_in>;
356               clock-names = "pclk", "clk32k_in";
357               #clock-cells = <1>;
358
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;
367
368               pd_core: core-domain {
369                       operating-points-v2 = <&core_opp_table>;
370                       #power-domain-cells = <0>;
371               };
372
373               powergates {
374                     pd_audio: aud {
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>;
380                     };
381
382                     pd_xusbss: xusba {
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>;
387                     };
388               };
389     };