Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: tegra: pmc: Convert to json-schema

Convert the NVIDIA Tegra186 (and later) PMC bindings from the free-form
text format to json-schema.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>

+198 -133
-133
Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.txt
··· 1 - NVIDIA Tegra Power Management Controller (PMC) 2 - 3 - Required properties: 4 - - compatible: Should contain one of the following: 5 - - "nvidia,tegra186-pmc": for Tegra186 6 - - "nvidia,tegra194-pmc": for Tegra194 7 - - "nvidia,tegra234-pmc": for Tegra234 8 - - reg: Must contain an (offset, length) pair of the register set for each 9 - entry in reg-names. 10 - - reg-names: Must include the following entries: 11 - - "pmc" 12 - - "wake" 13 - - "aotag" 14 - - "scratch" 15 - - "misc" (Only for Tegra194 and later) 16 - 17 - Optional properties: 18 - - nvidia,invert-interrupt: If present, inverts the PMU interrupt signal. 19 - - interrupt-controller: Identifies the node as an interrupt controller. 20 - - #interrupt-cells: Specifies the number of cells needed to encode an 21 - interrupt source. The value must be 2. 22 - 23 - Example: 24 - 25 - SoC DTSI: 26 - 27 - pmc@c3600000 { 28 - compatible = "nvidia,tegra186-pmc"; 29 - reg = <0 0x0c360000 0 0x10000>, 30 - <0 0x0c370000 0 0x10000>, 31 - <0 0x0c380000 0 0x10000>, 32 - <0 0x0c390000 0 0x10000>; 33 - reg-names = "pmc", "wake", "aotag", "scratch"; 34 - }; 35 - 36 - Board DTS: 37 - 38 - pmc@c360000 { 39 - nvidia,invert-interrupt; 40 - }; 41 - 42 - == Pad Control == 43 - 44 - On Tegra SoCs a pad is a set of pins which are configured as a group. 45 - The pin grouping is a fixed attribute of the hardware. The PMC can be 46 - used to set pad power state and signaling voltage. A pad can be either 47 - in active or power down mode. The support for power state and signaling 48 - voltage configuration varies depending on the pad in question. 3.3 V and 49 - 1.8 V signaling voltages are supported on pins where software 50 - controllable signaling voltage switching is available. 51 - 52 - Pad configurations are described with pin configuration nodes which 53 - are placed under the pmc node and they are referred to by the pinctrl 54 - client properties. For more information see 55 - Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt. 56 - 57 - The following pads are present on Tegra186: 58 - csia csib dsi mipi-bias 59 - pex-clk-bias pex-clk3 pex-clk2 pex-clk1 60 - usb0 usb1 usb2 usb-bias 61 - uart audio hsic dbg 62 - hdmi-dp0 hdmi-dp1 pex-cntrl sdmmc2-hv 63 - sdmmc4 cam dsib dsic 64 - dsid csic csid csie 65 - dsif spi ufs dmic-hv 66 - edp sdmmc1-hv sdmmc3-hv conn 67 - audio-hv ao-hv 68 - 69 - Required pin configuration properties: 70 - - pins: A list of strings, each of which contains the name of a pad 71 - to be configured. 72 - 73 - Optional pin configuration properties: 74 - - low-power-enable: Configure the pad into power down mode 75 - - low-power-disable: Configure the pad into active mode 76 - - power-source: Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or 77 - TEGRA_IO_PAD_VOLTAGE_3V3 to select between signaling voltages. 78 - The values are defined in 79 - include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h. 80 - 81 - Note: The power state can be configured on all of the above pads except 82 - for ao-hv. Following pads have software configurable signaling 83 - voltages: sdmmc2-hv, dmic-hv, sdmmc1-hv, sdmmc3-hv, audio-hv, 84 - ao-hv. 85 - 86 - Pad configuration state example: 87 - pmc: pmc@7000e400 { 88 - compatible = "nvidia,tegra186-pmc"; 89 - reg = <0 0x0c360000 0 0x10000>, 90 - <0 0x0c370000 0 0x10000>, 91 - <0 0x0c380000 0 0x10000>, 92 - <0 0x0c390000 0 0x10000>; 93 - reg-names = "pmc", "wake", "aotag", "scratch"; 94 - 95 - ... 96 - 97 - sdmmc1_3v3: sdmmc1-3v3 { 98 - pins = "sdmmc1-hv"; 99 - power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>; 100 - }; 101 - 102 - sdmmc1_1v8: sdmmc1-1v8 { 103 - pins = "sdmmc1-hv"; 104 - power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>; 105 - }; 106 - 107 - hdmi_off: hdmi-off { 108 - pins = "hdmi"; 109 - low-power-enable; 110 - } 111 - 112 - hdmi_on: hdmi-on { 113 - pins = "hdmi"; 114 - low-power-disable; 115 - } 116 - }; 117 - 118 - Pinctrl client example: 119 - sdmmc1: sdhci@3400000 { 120 - ... 121 - pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; 122 - pinctrl-0 = <&sdmmc1_3v3>; 123 - pinctrl-1 = <&sdmmc1_1v8>; 124 - }; 125 - 126 - ... 127 - 128 - sor0: sor@15540000 { 129 - ... 130 - pinctrl-0 = <&hdmi_off>; 131 - pinctrl-1 = <&hdmi_on>; 132 - pinctrl-names = "hdmi-on", "hdmi-off"; 133 - };
+198
Documentation/devicetree/bindings/arm/tegra/nvidia,tegra186-pmc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/tegra/nvidia,tegra186-pmc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: NVIDIA Tegra Power Management Controller (PMC) 8 + 9 + maintainers: 10 + - Thierry Reding <thierry.reding@gmail.com> 11 + - Jon Hunter <jonathanh@nvidia.com> 12 + 13 + properties: 14 + compatible: 15 + enum: 16 + - nvidia,tegra186-pmc 17 + - nvidia,tegra194-pmc 18 + - nvidia,tegra234-pmc 19 + 20 + reg: 21 + minItems: 4 22 + maxItems: 5 23 + 24 + reg-names: 25 + minItems: 4 26 + items: 27 + - const: pmc 28 + - const: wake 29 + - const: aotag 30 + - const: scratch 31 + - const: misc 32 + 33 + interrupt-controller: true 34 + 35 + "#interrupt-cells": 36 + description: Specifies the number of cells needed to encode an 37 + interrupt source. The value must be 2. 38 + const: 2 39 + 40 + nvidia,invert-interrupt: 41 + description: If present, inverts the PMU interrupt signal. 42 + $ref: /schemas/types.yaml#/definitions/flag 43 + 44 + if: 45 + properties: 46 + compatible: 47 + contains: 48 + const: nvidia,tegra186-pmc 49 + then: 50 + properties: 51 + reg: 52 + maxItems: 4 53 + 54 + reg-names: 55 + maxItems: 4 56 + else: 57 + properties: 58 + reg: 59 + minItems: 5 60 + 61 + reg-names: 62 + minItems: 5 63 + 64 + patternProperties: 65 + "^[a-z0-9]+-[a-z0-9]+$": 66 + if: 67 + type: object 68 + then: 69 + description: | 70 + These are pad configuration nodes. On Tegra SoCs a pad is a set of 71 + pins which are configured as a group. The pin grouping is a fixed 72 + attribute of the hardware. The PMC can be used to set pad power 73 + state and signaling voltage. A pad can be either in active or 74 + power down mode. The support for power state and signaling voltage 75 + configuration varies depending on the pad in question. 3.3 V and 76 + 1.8 V signaling voltages are supported on pins where software 77 + controllable signaling voltage switching is available. 78 + 79 + Pad configurations are described with pin configuration nodes 80 + which are placed under the pmc node and they are referred to by 81 + the pinctrl client properties. For more information see 82 + 83 + Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt 84 + 85 + The following pads are present on Tegra186: 86 + 87 + csia, csib, dsi, mipi-bias, pex-clk-bias, pex-clk3, pex-clk2, 88 + pex-clk1, usb0, usb1, usb2, usb-bias, uart, audio, hsic, dbg, 89 + hdmi-dp0, hdmi-dp1, pex-cntrl, sdmmc2-hv, sdmmc4, cam, dsib, 90 + dsic, dsid, csic, csid, csie, dsif, spi, ufs, dmic-hv, edp, 91 + sdmmc1-hv, sdmmc3-hv, conn, audio-hv, ao-hv 92 + 93 + The following pads are present on Tegra194: 94 + 95 + csia, csib, mipi-bias, pex-clk-bias, pex-clk3, pex-clk2, 96 + pex-clk1, eqos, pex-clk-2-bias, pex-clk-2, dap3, dap5, uart, 97 + pwr-ctl, soc-gpio53, audio, gp-pwm2, gp-pwm3, soc-gpio12, 98 + soc-gpio13, soc-gpio10, uart4, uart5, dbg, hdmi-dp3, hdmi-dp2, 99 + hdmi-dp0, hdmi-dp1, pex-cntrl, pex-ctl2, pex-l0-rst, 100 + pex-l1-rst, sdmmc4, pex-l5-rst, cam, csic, csid, csie, csif, 101 + spi, ufs, csig, csih, edp, sdmmc1-hv, sdmmc3-hv, conn, 102 + audio-hv, ao-hv 103 + 104 + properties: 105 + pins: 106 + $ref: /schemas/types.yaml#/definitions/string 107 + description: Must contain the name of the pad(s) to be 108 + configured. 109 + 110 + low-power-enable: 111 + description: Configure the pad into power down mode. 112 + $ref: /schemas/types.yaml#/definitions/flag 113 + 114 + low-power-disable: 115 + description: Configure the pad into active mode. 116 + $ref: /schemas/types.yaml#/definitions/flag 117 + 118 + power-source: 119 + $ref: /schemas/types.yaml#/definitions/uint32 120 + description: | 121 + Must contain either TEGRA_IO_PAD_VOLTAGE_1V8 or 122 + TEGRA_IO_PAD_VOLTAGE_3V3 to select between signalling 123 + voltages. 124 + 125 + The values are defined in 126 + 127 + include/dt-bindings/pinctrl/pinctrl-tegra-io-pad.h 128 + 129 + The power state can be configured on all of the above pads 130 + except for ao-hv. Following pads have software configurable 131 + signaling voltages: sdmmc2-hv, dmic-hv, sdmmc1-hv, sdmmc3-hv, 132 + audio-hv, ao-hv. 133 + 134 + phandle: true 135 + 136 + required: 137 + - pins 138 + 139 + additionalProperties: false 140 + 141 + required: 142 + - compatible 143 + - reg 144 + - reg-names 145 + 146 + additionalProperties: false 147 + 148 + dependencies: 149 + interrupt-controller: ['#interrupt-cells'] 150 + "#interrupt-cells": 151 + required: 152 + - interrupt-controller 153 + 154 + examples: 155 + - | 156 + #include <dt-bindings/clock/tegra186-clock.h> 157 + #include <dt-bindings/interrupt-controller/arm-gic.h> 158 + #include <dt-bindings/pinctrl/pinctrl-tegra-io-pad.h> 159 + #include <dt-bindings/memory/tegra186-mc.h> 160 + #include <dt-bindings/reset/tegra186-reset.h> 161 + 162 + pmc@c3600000 { 163 + compatible = "nvidia,tegra186-pmc"; 164 + reg = <0x0c360000 0x10000>, 165 + <0x0c370000 0x10000>, 166 + <0x0c380000 0x10000>, 167 + <0x0c390000 0x10000>; 168 + reg-names = "pmc", "wake", "aotag", "scratch"; 169 + nvidia,invert-interrupt; 170 + 171 + sdmmc1_3v3: sdmmc1-3v3 { 172 + pins = "sdmmc1-hv"; 173 + power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>; 174 + }; 175 + 176 + sdmmc1_1v8: sdmmc1-1v8 { 177 + pins = "sdmmc1-hv"; 178 + power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>; 179 + }; 180 + }; 181 + 182 + sdmmc1: mmc@3400000 { 183 + compatible = "nvidia,tegra186-sdhci"; 184 + reg = <0x03400000 0x10000>; 185 + interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; 186 + clocks = <&bpmp TEGRA186_CLK_SDMMC1>, 187 + <&bpmp TEGRA186_CLK_SDMMC_LEGACY_TM>; 188 + clock-names = "sdhci", "tmclk"; 189 + resets = <&bpmp TEGRA186_RESET_SDMMC1>; 190 + reset-names = "sdhci"; 191 + interconnects = <&mc TEGRA186_MEMORY_CLIENT_SDMMCRA &emc>, 192 + <&mc TEGRA186_MEMORY_CLIENT_SDMMCWA &emc>; 193 + interconnect-names = "dma-mem", "write"; 194 + iommus = <&smmu TEGRA186_SID_SDMMC1>; 195 + pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; 196 + pinctrl-0 = <&sdmmc1_3v3>; 197 + pinctrl-1 = <&sdmmc1_1v8>; 198 + };