18c2ecf20Sopenharmony_ciNVIDIA Tegra Power Management Controller (PMC)
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciRequired properties:
48c2ecf20Sopenharmony_ci- compatible: Should contain one of the following:
58c2ecf20Sopenharmony_ci  - "nvidia,tegra186-pmc": for Tegra186
68c2ecf20Sopenharmony_ci  - "nvidia,tegra194-pmc": for Tegra194
78c2ecf20Sopenharmony_ci  - "nvidia,tegra234-pmc": for Tegra234
88c2ecf20Sopenharmony_ci- reg: Must contain an (offset, length) pair of the register set for each
98c2ecf20Sopenharmony_ci  entry in reg-names.
108c2ecf20Sopenharmony_ci- reg-names: Must include the following entries:
118c2ecf20Sopenharmony_ci  - "pmc"
128c2ecf20Sopenharmony_ci  - "wake"
138c2ecf20Sopenharmony_ci  - "aotag"
148c2ecf20Sopenharmony_ci  - "scratch"
158c2ecf20Sopenharmony_ci  - "misc" (Only for Tegra194 and later)
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciOptional properties:
188c2ecf20Sopenharmony_ci- nvidia,invert-interrupt: If present, inverts the PMU interrupt signal.
198c2ecf20Sopenharmony_ci- interrupt-controller: Identifies the node as an interrupt controller.
208c2ecf20Sopenharmony_ci- #interrupt-cells: Specifies the number of cells needed to encode an
218c2ecf20Sopenharmony_ci  interrupt source. The value must be 2.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciExample:
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciSoC DTSI:
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci	pmc@c3600000 {
288c2ecf20Sopenharmony_ci		compatible = "nvidia,tegra186-pmc";
298c2ecf20Sopenharmony_ci		reg = <0 0x0c360000 0 0x10000>,
308c2ecf20Sopenharmony_ci		      <0 0x0c370000 0 0x10000>,
318c2ecf20Sopenharmony_ci		      <0 0x0c380000 0 0x10000>,
328c2ecf20Sopenharmony_ci		      <0 0x0c390000 0 0x10000>;
338c2ecf20Sopenharmony_ci		reg-names = "pmc", "wake", "aotag", "scratch";
348c2ecf20Sopenharmony_ci	};
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ciBoard DTS:
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci	pmc@c360000 {
398c2ecf20Sopenharmony_ci		nvidia,invert-interrupt;
408c2ecf20Sopenharmony_ci	};
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci== Pad Control ==
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciOn Tegra SoCs a pad is a set of pins which are configured as a group.
458c2ecf20Sopenharmony_ciThe pin grouping is a fixed attribute of the hardware. The PMC can be
468c2ecf20Sopenharmony_ciused to set pad power state and signaling voltage. A pad can be either
478c2ecf20Sopenharmony_ciin active or power down mode. The support for power state and signaling
488c2ecf20Sopenharmony_civoltage configuration varies depending on the pad in question. 3.3 V and
498c2ecf20Sopenharmony_ci1.8 V signaling voltages are supported on pins where software
508c2ecf20Sopenharmony_cicontrollable signaling voltage switching is available.
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ciPad configurations are described with pin configuration nodes which
538c2ecf20Sopenharmony_ciare placed under the pmc node and they are referred to by the pinctrl
548c2ecf20Sopenharmony_ciclient properties. For more information see
558c2ecf20Sopenharmony_ciDocumentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ciThe following pads are present on Tegra186:
588c2ecf20Sopenharmony_cicsia		csib		dsi		mipi-bias
598c2ecf20Sopenharmony_cipex-clk-bias	pex-clk3	pex-clk2	pex-clk1
608c2ecf20Sopenharmony_ciusb0		usb1		usb2		usb-bias
618c2ecf20Sopenharmony_ciuart		audio		hsic		dbg
628c2ecf20Sopenharmony_cihdmi-dp0	hdmi-dp1	pex-cntrl	sdmmc2-hv
638c2ecf20Sopenharmony_cisdmmc4		cam		dsib		dsic
648c2ecf20Sopenharmony_cidsid		csic		csid		csie
658c2ecf20Sopenharmony_cidsif		spi		ufs		dmic-hv
668c2ecf20Sopenharmony_ciedp		sdmmc1-hv	sdmmc3-hv	conn
678c2ecf20Sopenharmony_ciaudio-hv	ao-hv
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ciRequired pin configuration properties:
708c2ecf20Sopenharmony_ci  - pins: A list of strings, each of which contains the name of a pad
718c2ecf20Sopenharmony_ci	  to be configured.
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ciOptional pin configuration properties:
748c2ecf20Sopenharmony_ci  - low-power-enable: Configure the pad into power down mode
758c2ecf20Sopenharmony_ci  - low-power-disable: Configure the pad into active mode
768c2ecf20Sopenharmony_ci  - power-source: Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or
778c2ecf20Sopenharmony_ci    TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages.
788c2ecf20Sopenharmony_ci    The values are defined in
798c2ecf20Sopenharmony_ci    include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ciNote: The power state can be configured on all of the above pads except
828c2ecf20Sopenharmony_ci      for ao-hv. Following pads have software configurable signaling
838c2ecf20Sopenharmony_ci      voltages: sdmmc2-hv, dmic-hv, sdmmc1-hv, sdmmc3-hv, audio-hv,
848c2ecf20Sopenharmony_ci      ao-hv.
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ciPad configuration state example:
878c2ecf20Sopenharmony_ci	pmc: pmc@7000e400 {
888c2ecf20Sopenharmony_ci		compatible = "nvidia,tegra186-pmc";
898c2ecf20Sopenharmony_ci		reg = <0 0x0c360000 0 0x10000>,
908c2ecf20Sopenharmony_ci		      <0 0x0c370000 0 0x10000>,
918c2ecf20Sopenharmony_ci		      <0 0x0c380000 0 0x10000>,
928c2ecf20Sopenharmony_ci		      <0 0x0c390000 0 0x10000>;
938c2ecf20Sopenharmony_ci		reg-names = "pmc", "wake", "aotag", "scratch";
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci		...
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci		sdmmc1_3v3: sdmmc1-3v3 {
988c2ecf20Sopenharmony_ci			pins = "sdmmc1-hv";
998c2ecf20Sopenharmony_ci			power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
1008c2ecf20Sopenharmony_ci		};
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci		sdmmc1_1v8: sdmmc1-1v8 {
1038c2ecf20Sopenharmony_ci			pins = "sdmmc1-hv";
1048c2ecf20Sopenharmony_ci			power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
1058c2ecf20Sopenharmony_ci		};
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci		hdmi_off: hdmi-off {
1088c2ecf20Sopenharmony_ci			pins = "hdmi";
1098c2ecf20Sopenharmony_ci			low-power-enable;
1108c2ecf20Sopenharmony_ci		}
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci		hdmi_on: hdmi-on {
1138c2ecf20Sopenharmony_ci			pins = "hdmi";
1148c2ecf20Sopenharmony_ci			low-power-disable;
1158c2ecf20Sopenharmony_ci		}
1168c2ecf20Sopenharmony_ci	};
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ciPinctrl client example:
1198c2ecf20Sopenharmony_ci	sdmmc1: sdhci@3400000 {
1208c2ecf20Sopenharmony_ci		...
1218c2ecf20Sopenharmony_ci		pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
1228c2ecf20Sopenharmony_ci		pinctrl-0 = <&sdmmc1_3v3>;
1238c2ecf20Sopenharmony_ci		pinctrl-1 = <&sdmmc1_1v8>;
1248c2ecf20Sopenharmony_ci	};
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ci	...
1278c2ecf20Sopenharmony_ci
1288c2ecf20Sopenharmony_ci	sor0: sor@15540000 {
1298c2ecf20Sopenharmony_ci		...
1308c2ecf20Sopenharmony_ci		pinctrl-0 = <&hdmi_off>;
1318c2ecf20Sopenharmony_ci		pinctrl-1 = <&hdmi_on>;
1328c2ecf20Sopenharmony_ci		pinctrl-names = "hdmi-on", "hdmi-off";
1338c2ecf20Sopenharmony_ci	};
134