Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp2020271imm; Thu, 2 Aug 2018 05:05:42 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeAntt7a2APXOWWi4dSY32E5cKdka6W4uNQOIv5tm42BNqC+fmvqNgcZkX4DJQfVzTxavFa X-Received: by 2002:a63:1d3:: with SMTP id 202-v6mr2494933pgb.136.1533211542311; Thu, 02 Aug 2018 05:05:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533211542; cv=none; d=google.com; s=arc-20160816; b=SuC4r0dz5JKiLkqOJYHq67SMt0bS6J5mN3PRsQsdQN1QyWlSJVT+IWByDMeqTTxRyO 0pQD0MdzUX5Na05QwnzDlXweWooPHHs8eQeQxMTTrh7ZTAbhE8swfFgRsD8N+nxDFwXT BSvcSIEiOfoJPOsj5hoZ8mbPb34ZxFJjbytJnQV5G9qcwvIDYaU9jeGWybvrsGgqDxhN KqSWjzqeggXLpWEMygtSAM3qLZhlhk/a5Gr1HddYtkKiWQgAv10EjB1rifioJDC4JKUL LRZPiQp6LwToGQsKtwqOKDI3AxAzSvydr4VxbIGUHwxE7zJdXFulMFXC8Pr4jod4wbpE yGfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=9t+z256ADnEczbbIZ6dWExGKuyPBfxP8AUSSDSfJ2cY=; b=KHL0RkxQN5gnOQ1vNsSEtwexMU6UwsMDXc3uUqMhITa3RwK55K+pkZYgMwh2nJ26cS Olr0IJhGcaEPKRdVkMYnzAJroHZZ8PVaQXMQMQZthLJsAawJ0iK4KUKAjTbHgUsyv9eX s6V+qBD+Bwd8vDiCAexHmyTexSBihISn+oOEf7RfTkYFI8jRiZkO+61OkidqIpCi87y6 Pct4E2oBxQkkdCv1Z2rEMPcnZ+YAbzOWiNfjLqfkUMaNvv+QzkIlZqqFu3p43JhMhedQ iX2v+Bee5YkKnBIT7qwzI0xd/FNtnC1odj6Gd1OIo8yRKA1LcPXtdrjk+NFeeMOlCAZI ZNQA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u15-v6si1855004pfa.28.2018.08.02.05.05.27; Thu, 02 Aug 2018 05:05:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732229AbeHBNz1 (ORCPT + 99 others); Thu, 2 Aug 2018 09:55:27 -0400 Received: from nat-hk.nvidia.com ([203.18.50.4]:26175 "EHLO nat-hk.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732034AbeHBNz0 (ORCPT ); Thu, 2 Aug 2018 09:55:26 -0400 X-Greylist: delayed 303 seconds by postgrey-1.27 at vger.kernel.org; Thu, 02 Aug 2018 09:55:22 EDT Received: from hkpgpgate102.nvidia.com (Not Verified[10.18.92.100]) by nat-hk.nvidia.com (using TLS: TLSv1, AES128-SHA) id ; Thu, 02 Aug 2018 19:59:28 +0800 Received: from HKMAIL102.nvidia.com ([10.18.16.11]) by hkpgpgate102.nvidia.com (PGP Universal service); Thu, 02 Aug 2018 04:59:27 -0700 X-PGP-Universal: processed; by hkpgpgate102.nvidia.com on Thu, 02 Aug 2018 04:59:27 -0700 Received: from DRBGMAIL101.nvidia.com (10.18.16.20) by HKMAIL102.nvidia.com (10.18.16.11) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 2 Aug 2018 11:59:26 +0000 Received: from HQMAIL105.nvidia.com (172.20.187.12) by DRBGMAIL101.nvidia.com (10.18.16.20) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 2 Aug 2018 11:59:25 +0000 Received: from vreddytalla-dt.nvidia.com (10.124.1.5) by HQMAIL105.nvidia.com (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1347.2 via Frontend Transport; Thu, 2 Aug 2018 11:59:19 +0000 From: Venkat Reddy Talla To: , , , , , , , , , , , , CC: , , , Subject: [PATCH 2/3] dt-bindings: tegra: update PMC DT binding with io pads control Date: Thu, 2 Aug 2018 17:29:02 +0530 Message-ID: <1533211143-17517-2-git-send-email-vreddytalla@nvidia.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1533211143-17517-1-git-send-email-vreddytalla@nvidia.com> References: <1533211143-17517-1-git-send-email-vreddytalla@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org NVIDIA Tegra124 and later SoCs support the multi-voltage level and low power state of some of its IO pads. The IO pads can work in the voltage of the 1.8V and 3.3V of IO voltage from IO power rail sources. When IO interfaces are not used then IO pads can be configure in low power state to reduce the power consumption from that IO pads. On Tegra124, the voltage level of IO power rail source is auto detected by hardware(SoC) and hence it is only require to configure in low power mode if IO pads are not used. On T210 onwards, the auto-detection of voltage level from IO power rail is removed from SoC and hence SW need to configure the PMC register explicitly to set proper voltage in IO pads based on IO rail power source voltage. Updating PMC DT binding document for detailing the DT properties for configuring IO pads voltage levels and its power state. Signed-off-by: Venkat Reddy Talla --- .../bindings/arm/tegra/nvidia,tegra20-pmc.txt | 125 ++++++++++++++++++++- 1 file changed, 124 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt index a74b37b..1166373 100644 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt @@ -6,6 +6,35 @@ The PMC block interacts with an external Power Management Unit. The PMC mostly controls the entry and exit of the system from different sleep modes. It provides power-gating controllers for SoC and CPU power-islands. +NVIDIA Tegra124 and later SoCs support the multi-voltage level and low power +state of some of its IO pads. When IO interface are not used then IO pads can +be configure in low power state to reduce the power from that IO pads. The IO +pads can operate at the nominal IO voltage of eother 1.8V or 3.3V. + +On Tegra124, the voltage of IO power rail source is auto detected by SoC and +hence it is only require to configure in low power mode if IO pads are not +used. + +On T210 onwards, the HW based auto-detection for IO voltage is removed and +hence SW need to configure the PMC register explicitly, to set proper voltage +in IO pads, based on IO rail power source voltage. + +The voltage configurations and low power state of IO pads should be done in +boot if it is not going to change otherwise dynamically based on IO rail +voltage on that IO pads and usage of IO pads. + +The DT property of the IO pads must be under the node of pmc i.e. +pmc@7000e400 for Tegra124 onwards. + +Please refer to in this directory for details of the +common pinctrl bindings used by client devices, including the meaning of the +phrase "pin configuration node". + +Tegra's pin configuration nodes act as a container for an arbitrary number of +subnodes. Each of these subnodes represents some desired configuration for an +IO pads, or a list of IO pads. This configuration can include the voltage and +power enable/disable control. + Required properties: - name : Should be pmc - compatible : Should contain one of the following: @@ -13,7 +42,7 @@ Required properties: For Tegra30 must contain "nvidia,tegra30-pmc". For Tegra114 must contain "nvidia,tegra114-pmc" For Tegra124 must contain "nvidia,tegra124-pmc" - For Tegra132 must contain "nvidia,tegra124-pmc" + For Tegra132 must contain "nvidia,tegra132-pmc" For Tegra210 must contain "nvidia,tegra210-pmc" - reg : Offset and length of the register set for the device - clocks : Must contain an entry for each entry in clock-names. @@ -77,6 +106,56 @@ Optional nodes: should match the powergates on the Tegra SoC. See "Powergate Nodes" below. +Required subnode-properties: +========================== +- pins : An array of strings. Each string contains the name of an IO pad. Valid + values for these names are listed below. + +Optional subnode-properties: +========================== +Following properties are supported from generic pin configuration explained +in . +low-power-enable: enable low power mode +low-power-disable: disable low power mode +nvidia,restrict-voltage-switch: restrict io pad voltage switch for all pads +nvidia,enable-voltage-switching: enable voltage switch for io pad + +Valid values for pin for T124 SOC are: + audio, bb, cam, comp, csia, csib, csie, dsi, dsib, dsic, dsid, hdmi, + hsic, hv, lvds, mipi-bias, nand, pex-bias, pex-clk1, pex-clk2, + pex-ctrl, sdmmc1, sdmmc3, sdmmc4, sys-ddc, uart, usb0, usb1, usb2, + usb-bias + +Valid values for pin for T210 SOC are: + audio, audio-hv, cam, csia, csib, csic, csid, csie, csif, + dbg, debug-nonao, dmic, dp, dsi, dsib, dsic, dsid, emmc, emmc2, + gpio, hdmi, hsic, lvds, mipi-bias, pex-bias, pex-clk1, pex-clk2, + pex-ctrl, sdmmc1, sdmmc3, spi, spi-hv, uart, usb-bias, usb0, + usb1, usb2, usb3. + +To find out the IO rail voltage for setting the voltage of IO pad by SW, +the regulator supply handle must be provided from the DT and it is explained +in the regulator DT binding document + . +For example, for GPIO rail the supply name is vddio-gpio and regulator +handle is supplied from DT as + vddio-gpio-supply = <®ulator_xyz>; + +For T210, following IO pads support the 1.8V/3.3V and the corresponding +IO voltage pin names are as follows: + audio -> vddio_audio + audio-hv -> vddio_audio_hv + cam ->vddio_cam + dbg -> vddio_dbg + dmic -> vddio_dmic + gpio -> vddio_gpio + pex-ctrl -> vddio_pex_ctrl + sdmmc1 -> vddio_sdmmc1 + sdmmc3 -> vddio_sdmmc3 + spi -> vddio_spi + spi-hv -> vddio_spi_hv + uart -> vddio_uart + Example: / SoC dts including file @@ -123,6 +202,50 @@ pmc@7000f400 { ... }; +== PMC Nodes for IO pad power state/voltage configuration == + i2c@7000d000 { + pmic@3c { + regulators { + vddio_sdmmc1: ldo2 { + /* Regulator entries for LDO2 */ + }; + + vdd_cam: ldo3 { + /* Regulator entries for LDO3 */ + }; + }; + }; + }; + + pmc@7000e400 { + vddio-cam-supply = <&vdd_cam>; + vddio-sdmmc1-supply = <&vddio_sdmmc1>; + + pinctrl-names = "default"; + pinctrl-0 = <&tegra_io_pad_volt_default>; + nvidia,restrict-voltage-switch; + tegra_io_pad_volt_default: common { + audio-hv { + pins = "audio-hv"; + low-power-disable; + }; + + gpio { + pins = "gpio"; + low-power-disable; + }; + + audio { + pins = "audio", "dmic", "sdmmc3"; + low-power-enable; + }; + + sdmmc-io-pads { + pins = "sdmmc1-hv", "sdmmc3-hv"; + nvidia,enable-voltage-switching; + }; + }; + }; == Powergate Nodes == -- 2.1.4