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