xref: /freebsd/sys/contrib/device-tree/Bindings/arm/tegra/nvidia,tegra186-pmc.txt (revision 6be3386466ab79a84b48429ae66244f21526d3df)
1c66ec88fSEmmanuel VadotNVIDIA Tegra Power Management Controller (PMC)
2c66ec88fSEmmanuel Vadot
3c66ec88fSEmmanuel VadotRequired properties:
4c66ec88fSEmmanuel Vadot- compatible: Should contain one of the following:
5c66ec88fSEmmanuel Vadot  - "nvidia,tegra186-pmc": for Tegra186
6c66ec88fSEmmanuel Vadot  - "nvidia,tegra194-pmc": for Tegra194
7*6be33864SEmmanuel Vadot  - "nvidia,tegra234-pmc": for Tegra234
8c66ec88fSEmmanuel Vadot- reg: Must contain an (offset, length) pair of the register set for each
9c66ec88fSEmmanuel Vadot  entry in reg-names.
10c66ec88fSEmmanuel Vadot- reg-names: Must include the following entries:
11c66ec88fSEmmanuel Vadot  - "pmc"
12c66ec88fSEmmanuel Vadot  - "wake"
13c66ec88fSEmmanuel Vadot  - "aotag"
14c66ec88fSEmmanuel Vadot  - "scratch"
15*6be33864SEmmanuel Vadot  - "misc" (Only for Tegra194 and later)
16c66ec88fSEmmanuel Vadot
17c66ec88fSEmmanuel VadotOptional properties:
18c66ec88fSEmmanuel Vadot- nvidia,invert-interrupt: If present, inverts the PMU interrupt signal.
19c66ec88fSEmmanuel Vadot- interrupt-controller: Identifies the node as an interrupt controller.
20c66ec88fSEmmanuel Vadot- #interrupt-cells: Specifies the number of cells needed to encode an
21c66ec88fSEmmanuel Vadot  interrupt source. The value must be 2.
22c66ec88fSEmmanuel Vadot
23c66ec88fSEmmanuel VadotExample:
24c66ec88fSEmmanuel Vadot
25c66ec88fSEmmanuel VadotSoC DTSI:
26c66ec88fSEmmanuel Vadot
27c66ec88fSEmmanuel Vadot	pmc@c3600000 {
28c66ec88fSEmmanuel Vadot		compatible = "nvidia,tegra186-pmc";
29c66ec88fSEmmanuel Vadot		reg = <0 0x0c360000 0 0x10000>,
30c66ec88fSEmmanuel Vadot		      <0 0x0c370000 0 0x10000>,
31c66ec88fSEmmanuel Vadot		      <0 0x0c380000 0 0x10000>,
32c66ec88fSEmmanuel Vadot		      <0 0x0c390000 0 0x10000>;
33c66ec88fSEmmanuel Vadot		reg-names = "pmc", "wake", "aotag", "scratch";
34c66ec88fSEmmanuel Vadot	};
35c66ec88fSEmmanuel Vadot
36c66ec88fSEmmanuel VadotBoard DTS:
37c66ec88fSEmmanuel Vadot
38c66ec88fSEmmanuel Vadot	pmc@c360000 {
39c66ec88fSEmmanuel Vadot		nvidia,invert-interrupt;
40c66ec88fSEmmanuel Vadot	};
41c66ec88fSEmmanuel Vadot
42c66ec88fSEmmanuel Vadot== Pad Control ==
43c66ec88fSEmmanuel Vadot
44c66ec88fSEmmanuel VadotOn Tegra SoCs a pad is a set of pins which are configured as a group.
45c66ec88fSEmmanuel VadotThe pin grouping is a fixed attribute of the hardware. The PMC can be
46c66ec88fSEmmanuel Vadotused to set pad power state and signaling voltage. A pad can be either
47c66ec88fSEmmanuel Vadotin active or power down mode. The support for power state and signaling
48c66ec88fSEmmanuel Vadotvoltage configuration varies depending on the pad in question. 3.3 V and
49c66ec88fSEmmanuel Vadot1.8 V signaling voltages are supported on pins where software
50c66ec88fSEmmanuel Vadotcontrollable signaling voltage switching is available.
51c66ec88fSEmmanuel Vadot
52c66ec88fSEmmanuel VadotPad configurations are described with pin configuration nodes which
53c66ec88fSEmmanuel Vadotare placed under the pmc node and they are referred to by the pinctrl
54c66ec88fSEmmanuel Vadotclient properties. For more information see
55c66ec88fSEmmanuel VadotDocumentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
56c66ec88fSEmmanuel Vadot
57c66ec88fSEmmanuel VadotThe following pads are present on Tegra186:
58c66ec88fSEmmanuel Vadotcsia		csib		dsi		mipi-bias
59c66ec88fSEmmanuel Vadotpex-clk-bias	pex-clk3	pex-clk2	pex-clk1
60c66ec88fSEmmanuel Vadotusb0		usb1		usb2		usb-bias
61c66ec88fSEmmanuel Vadotuart		audio		hsic		dbg
62c66ec88fSEmmanuel Vadothdmi-dp0	hdmi-dp1	pex-cntrl	sdmmc2-hv
63c66ec88fSEmmanuel Vadotsdmmc4		cam		dsib		dsic
64c66ec88fSEmmanuel Vadotdsid		csic		csid		csie
65c66ec88fSEmmanuel Vadotdsif		spi		ufs		dmic-hv
66c66ec88fSEmmanuel Vadotedp		sdmmc1-hv	sdmmc3-hv	conn
67c66ec88fSEmmanuel Vadotaudio-hv	ao-hv
68c66ec88fSEmmanuel Vadot
69c66ec88fSEmmanuel VadotRequired pin configuration properties:
70c66ec88fSEmmanuel Vadot  - pins: A list of strings, each of which contains the name of a pad
71c66ec88fSEmmanuel Vadot	  to be configured.
72c66ec88fSEmmanuel Vadot
73c66ec88fSEmmanuel VadotOptional pin configuration properties:
74c66ec88fSEmmanuel Vadot  - low-power-enable: Configure the pad into power down mode
75c66ec88fSEmmanuel Vadot  - low-power-disable: Configure the pad into active mode
76c66ec88fSEmmanuel Vadot  - power-source: Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or
77c66ec88fSEmmanuel Vadot    TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages.
78c66ec88fSEmmanuel Vadot    The values are defined in
79c66ec88fSEmmanuel Vadot    include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
80c66ec88fSEmmanuel Vadot
81c66ec88fSEmmanuel VadotNote: The power state can be configured on all of the above pads except
82c66ec88fSEmmanuel Vadot      for ao-hv. Following pads have software configurable signaling
83c66ec88fSEmmanuel Vadot      voltages: sdmmc2-hv, dmic-hv, sdmmc1-hv, sdmmc3-hv, audio-hv,
84c66ec88fSEmmanuel Vadot      ao-hv.
85c66ec88fSEmmanuel Vadot
86c66ec88fSEmmanuel VadotPad configuration state example:
87c66ec88fSEmmanuel Vadot	pmc: pmc@7000e400 {
88c66ec88fSEmmanuel Vadot		compatible = "nvidia,tegra186-pmc";
89c66ec88fSEmmanuel Vadot		reg = <0 0x0c360000 0 0x10000>,
90c66ec88fSEmmanuel Vadot		      <0 0x0c370000 0 0x10000>,
91c66ec88fSEmmanuel Vadot		      <0 0x0c380000 0 0x10000>,
92c66ec88fSEmmanuel Vadot		      <0 0x0c390000 0 0x10000>;
93c66ec88fSEmmanuel Vadot		reg-names = "pmc", "wake", "aotag", "scratch";
94c66ec88fSEmmanuel Vadot
95c66ec88fSEmmanuel Vadot		...
96c66ec88fSEmmanuel Vadot
97c66ec88fSEmmanuel Vadot		sdmmc1_3v3: sdmmc1-3v3 {
98c66ec88fSEmmanuel Vadot			pins = "sdmmc1-hv";
99c66ec88fSEmmanuel Vadot			power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
100c66ec88fSEmmanuel Vadot		};
101c66ec88fSEmmanuel Vadot
102c66ec88fSEmmanuel Vadot		sdmmc1_1v8: sdmmc1-1v8 {
103c66ec88fSEmmanuel Vadot			pins = "sdmmc1-hv";
104c66ec88fSEmmanuel Vadot			power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
105c66ec88fSEmmanuel Vadot		};
106c66ec88fSEmmanuel Vadot
107c66ec88fSEmmanuel Vadot		hdmi_off: hdmi-off {
108c66ec88fSEmmanuel Vadot			pins = "hdmi";
109c66ec88fSEmmanuel Vadot			low-power-enable;
110c66ec88fSEmmanuel Vadot		}
111c66ec88fSEmmanuel Vadot
112c66ec88fSEmmanuel Vadot		hdmi_on: hdmi-on {
113c66ec88fSEmmanuel Vadot			pins = "hdmi";
114c66ec88fSEmmanuel Vadot			low-power-disable;
115c66ec88fSEmmanuel Vadot		}
116c66ec88fSEmmanuel Vadot	};
117c66ec88fSEmmanuel Vadot
118c66ec88fSEmmanuel VadotPinctrl client example:
119c66ec88fSEmmanuel Vadot	sdmmc1: sdhci@3400000 {
120c66ec88fSEmmanuel Vadot		...
121c66ec88fSEmmanuel Vadot		pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
122c66ec88fSEmmanuel Vadot		pinctrl-0 = <&sdmmc1_3v3>;
123c66ec88fSEmmanuel Vadot		pinctrl-1 = <&sdmmc1_1v8>;
124c66ec88fSEmmanuel Vadot	};
125c66ec88fSEmmanuel Vadot
126c66ec88fSEmmanuel Vadot	...
127c66ec88fSEmmanuel Vadot
128c66ec88fSEmmanuel Vadot	sor0: sor@15540000 {
129c66ec88fSEmmanuel Vadot		...
130c66ec88fSEmmanuel Vadot		pinctrl-0 = <&hdmi_off>;
131c66ec88fSEmmanuel Vadot		pinctrl-1 = <&hdmi_on>;
132c66ec88fSEmmanuel Vadot		pinctrl-names = "hdmi-on", "hdmi-off";
133c66ec88fSEmmanuel Vadot	};
134