···11-NVIDIA Tegra Power Management Controller (PMC)22-33-Required properties:44-- compatible: Should contain one of the following:55- - "nvidia,tegra186-pmc": for Tegra18666- - "nvidia,tegra194-pmc": for Tegra19477- - "nvidia,tegra234-pmc": for Tegra23488-- reg: Must contain an (offset, length) pair of the register set for each99- entry in reg-names.1010-- reg-names: Must include the following entries:1111- - "pmc"1212- - "wake"1313- - "aotag"1414- - "scratch"1515- - "misc" (Only for Tegra194 and later)1616-1717-Optional properties:1818-- nvidia,invert-interrupt: If present, inverts the PMU interrupt signal.1919-- interrupt-controller: Identifies the node as an interrupt controller.2020-- #interrupt-cells: Specifies the number of cells needed to encode an2121- interrupt source. The value must be 2.2222-2323-Example:2424-2525-SoC DTSI:2626-2727- pmc@c3600000 {2828- compatible = "nvidia,tegra186-pmc";2929- reg = <0 0x0c360000 0 0x10000>,3030- <0 0x0c370000 0 0x10000>,3131- <0 0x0c380000 0 0x10000>,3232- <0 0x0c390000 0 0x10000>;3333- reg-names = "pmc", "wake", "aotag", "scratch";3434- };3535-3636-Board DTS:3737-3838- pmc@c360000 {3939- nvidia,invert-interrupt;4040- };4141-4242-== Pad Control ==4343-4444-On Tegra SoCs a pad is a set of pins which are configured as a group.4545-The pin grouping is a fixed attribute of the hardware. The PMC can be4646-used to set pad power state and signaling voltage. A pad can be either4747-in active or power down mode. The support for power state and signaling4848-voltage configuration varies depending on the pad in question. 3.3 V and4949-1.8 V signaling voltages are supported on pins where software5050-controllable signaling voltage switching is available.5151-5252-Pad configurations are described with pin configuration nodes which5353-are placed under the pmc node and they are referred to by the pinctrl5454-client properties. For more information see5555-Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt.5656-5757-The following pads are present on Tegra186:5858-csia csib dsi mipi-bias5959-pex-clk-bias pex-clk3 pex-clk2 pex-clk16060-usb0 usb1 usb2 usb-bias6161-uart audio hsic dbg6262-hdmi-dp0 hdmi-dp1 pex-cntrl sdmmc2-hv6363-sdmmc4 cam dsib dsic6464-dsid csic csid csie6565-dsif spi ufs dmic-hv6666-edp sdmmc1-hv sdmmc3-hv conn6767-audio-hv ao-hv6868-6969-Required pin configuration properties:7070- - pins: A list of strings, each of which contains the name of a pad7171- to be configured.7272-7373-Optional pin configuration properties:7474- - low-power-enable: Configure the pad into power down mode7575- - low-power-disable: Configure the pad into active mode7676- - power-source: Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or7777- TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages.7878- The values are defined in7979- include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h.8080-8181-Note: The power state can be configured on all of the above pads except8282- for ao-hv. Following pads have software configurable signaling8383- voltages: sdmmc2-hv, dmic-hv, sdmmc1-hv, sdmmc3-hv, audio-hv,8484- ao-hv.8585-8686-Pad configuration state example:8787- pmc: pmc@7000e400 {8888- compatible = "nvidia,tegra186-pmc";8989- reg = <0 0x0c360000 0 0x10000>,9090- <0 0x0c370000 0 0x10000>,9191- <0 0x0c380000 0 0x10000>,9292- <0 0x0c390000 0 0x10000>;9393- reg-names = "pmc", "wake", "aotag", "scratch";9494-9595- ...9696-9797- sdmmc1_3v3: sdmmc1-3v3 {9898- pins = "sdmmc1-hv";9999- power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;100100- };101101-102102- sdmmc1_1v8: sdmmc1-1v8 {103103- pins = "sdmmc1-hv";104104- power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;105105- };106106-107107- hdmi_off: hdmi-off {108108- pins = "hdmi";109109- low-power-enable;110110- }111111-112112- hdmi_on: hdmi-on {113113- pins = "hdmi";114114- low-power-disable;115115- }116116- };117117-118118-Pinctrl client example:119119- sdmmc1: sdhci@3400000 {120120- ...121121- pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";122122- pinctrl-0 = <&sdmmc1_3v3>;123123- pinctrl-1 = <&sdmmc1_1v8>;124124- };125125-126126- ...127127-128128- sor0: sor@15540000 {129129- ...130130- pinctrl-0 = <&hdmi_off>;131131- pinctrl-1 = <&hdmi_on>;132132- pinctrl-names = "hdmi-on", "hdmi-off";133133- };
···11+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)22+%YAML 1.233+---44+$id: http://devicetree.org/schemas/arm/tegra/nvidia,tegra186-pmc.yaml#55+$schema: http://devicetree.org/meta-schemas/core.yaml#66+77+title: NVIDIA Tegra Power Management Controller (PMC)88+99+maintainers:1010+ - Thierry Reding <thierry.reding@gmail.com>1111+ - Jon Hunter <jonathanh@nvidia.com>1212+1313+properties:1414+ compatible:1515+ enum:1616+ - nvidia,tegra186-pmc1717+ - nvidia,tegra194-pmc1818+ - nvidia,tegra234-pmc1919+2020+ reg:2121+ minItems: 42222+ maxItems: 52323+2424+ reg-names:2525+ minItems: 42626+ items:2727+ - const: pmc2828+ - const: wake2929+ - const: aotag3030+ - const: scratch3131+ - const: misc3232+3333+ interrupt-controller: true3434+3535+ "#interrupt-cells":3636+ description: Specifies the number of cells needed to encode an3737+ interrupt source. The value must be 2.3838+ const: 23939+4040+ nvidia,invert-interrupt:4141+ description: If present, inverts the PMU interrupt signal.4242+ $ref: /schemas/types.yaml#/definitions/flag4343+4444+if:4545+ properties:4646+ compatible:4747+ contains:4848+ const: nvidia,tegra186-pmc4949+then:5050+ properties:5151+ reg:5252+ maxItems: 45353+5454+ reg-names:5555+ maxItems: 45656+else:5757+ properties:5858+ reg:5959+ minItems: 56060+6161+ reg-names:6262+ minItems: 56363+6464+patternProperties:6565+ "^[a-z0-9]+-[a-z0-9]+$":6666+ if:6767+ type: object6868+ then:6969+ description: |7070+ These are pad configuration nodes. On Tegra SoCs a pad is a set of7171+ pins which are configured as a group. The pin grouping is a fixed7272+ attribute of the hardware. The PMC can be used to set pad power7373+ state and signaling voltage. A pad can be either in active or7474+ power down mode. The support for power state and signaling voltage7575+ configuration varies depending on the pad in question. 3.3 V and7676+ 1.8 V signaling voltages are supported on pins where software7777+ controllable signaling voltage switching is available.7878+7979+ Pad configurations are described with pin configuration nodes8080+ which are placed under the pmc node and they are referred to by8181+ the pinctrl client properties. For more information see8282+8383+ Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt8484+8585+ The following pads are present on Tegra186:8686+8787+ csia, csib, dsi, mipi-bias, pex-clk-bias, pex-clk3, pex-clk2,8888+ pex-clk1, usb0, usb1, usb2, usb-bias, uart, audio, hsic, dbg,8989+ hdmi-dp0, hdmi-dp1, pex-cntrl, sdmmc2-hv, sdmmc4, cam, dsib,9090+ dsic, dsid, csic, csid, csie, dsif, spi, ufs, dmic-hv, edp,9191+ sdmmc1-hv, sdmmc3-hv, conn, audio-hv, ao-hv9292+9393+ The following pads are present on Tegra194:9494+9595+ csia, csib, mipi-bias, pex-clk-bias, pex-clk3, pex-clk2,9696+ pex-clk1, eqos, pex-clk-2-bias, pex-clk-2, dap3, dap5, uart,9797+ pwr-ctl, soc-gpio53, audio, gp-pwm2, gp-pwm3, soc-gpio12,9898+ soc-gpio13, soc-gpio10, uart4, uart5, dbg, hdmi-dp3, hdmi-dp2,9999+ hdmi-dp0, hdmi-dp1, pex-cntrl, pex-ctl2, pex-l0-rst,100100+ pex-l1-rst, sdmmc4, pex-l5-rst, cam, csic, csid, csie, csif,101101+ spi, ufs, csig, csih, edp, sdmmc1-hv, sdmmc3-hv, conn,102102+ audio-hv, ao-hv103103+104104+ properties:105105+ pins:106106+ $ref: /schemas/types.yaml#/definitions/string107107+ description: Must contain the name of the pad(s) to be108108+ configured.109109+110110+ low-power-enable:111111+ description: Configure the pad into power down mode.112112+ $ref: /schemas/types.yaml#/definitions/flag113113+114114+ low-power-disable:115115+ description: Configure the pad into active mode.116116+ $ref: /schemas/types.yaml#/definitions/flag117117+118118+ power-source:119119+ $ref: /schemas/types.yaml#/definitions/uint32120120+ description: |121121+ Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or122122+ TEGRA_IO_PAD_VOLTAGE_3V3 to select between signalling123123+ voltages.124124+125125+ The values are defined in126126+127127+ include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h128128+129129+ The power state can be configured on all of the above pads130130+ except for ao-hv. Following pads have software configurable131131+ signaling voltages: sdmmc2-hv, dmic-hv, sdmmc1-hv, sdmmc3-hv,132132+ audio-hv, ao-hv.133133+134134+ phandle: true135135+136136+ required:137137+ - pins138138+139139+ additionalProperties: false140140+141141+required:142142+ - compatible143143+ - reg144144+ - reg-names145145+146146+additionalProperties: false147147+148148+dependencies:149149+ interrupt-controller: ['#interrupt-cells']150150+ "#interrupt-cells":151151+ required:152152+ - interrupt-controller153153+154154+examples:155155+ - |156156+ #include <dt-bindings/clock/tegra186-clock.h>157157+ #include <dt-bindings/interrupt-controller/arm-gic.h>158158+ #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h>159159+ #include <dt-bindings/memory/tegra186-mc.h>160160+ #include <dt-bindings/reset/tegra186-reset.h>161161+162162+ pmc@c3600000 {163163+ compatible = "nvidia,tegra186-pmc";164164+ reg = <0x0c360000 0x10000>,165165+ <0x0c370000 0x10000>,166166+ <0x0c380000 0x10000>,167167+ <0x0c390000 0x10000>;168168+ reg-names = "pmc", "wake", "aotag", "scratch";169169+ nvidia,invert-interrupt;170170+171171+ sdmmc1_3v3: sdmmc1-3v3 {172172+ pins = "sdmmc1-hv";173173+ power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;174174+ };175175+176176+ sdmmc1_1v8: sdmmc1-1v8 {177177+ pins = "sdmmc1-hv";178178+ power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;179179+ };180180+ };181181+182182+ sdmmc1: mmc@3400000 {183183+ compatible = "nvidia,tegra186-sdhci";184184+ reg = <0x03400000 0x10000>;185185+ interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;186186+ clocks = <&bpmp TEGRA186_CLK_SDMMC1>,187187+ <&bpmp TEGRA186_CLK_SDMMC_LEGACY_TM>;188188+ clock-names = "sdhci", "tmclk";189189+ resets = <&bpmp TEGRA186_RESET_SDMMC1>;190190+ reset-names = "sdhci";191191+ interconnects = <&mc TEGRA186_MEMORY_CLIENT_SDMMCRA &emc>,192192+ <&mc TEGRA186_MEMORY_CLIENT_SDMMCWA &emc>;193193+ interconnect-names = "dma-mem", "write";194194+ iommus = <&smmu TEGRA186_SID_SDMMC1>;195195+ pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";196196+ pinctrl-0 = <&sdmmc1_3v3>;197197+ pinctrl-1 = <&sdmmc1_1v8>;198198+ };