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