Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936133AbcKWMAN (ORCPT ); Wed, 23 Nov 2016 07:00:13 -0500 Received: from hqemgate15.nvidia.com ([216.228.121.64]:3548 "EHLO hqemgate15.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933392AbcKWMAK (ORCPT ); Wed, 23 Nov 2016 07:00:10 -0500 X-PGP-Universal: processed; by hqnvupgp07.nvidia.com on Tue, 22 Nov 2016 15:58:45 -0800 Message-ID: <583580AD.60803@nvidia.com> Date: Wed, 23 Nov 2016 17:12:37 +0530 From: Laxman Dewangan User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Linus Walleij CC: Rob Herring , Stephen Warren , "thierry.reding@gmail.com" , Mark Rutland , Alexandre Courbot , "linux-gpio@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-tegra@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Joe Perches , Jon Hunter Subject: Re: [PATCH V3 2/2] pinctrl: tegra: Add driver to configure voltage and power of io pads References: <1479810013-29894-1-git-send-email-ldewangan@nvidia.com> <1479810013-29894-3-git-send-email-ldewangan@nvidia.com> In-Reply-To: X-Originating-IP: [10.19.65.30] X-ClientProxiedBy: DRHKMAIL103.nvidia.com (10.25.59.17) To bgmail102.nvidia.com (10.25.59.11) Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1522 Lines: 39 On Tuesday 22 November 2016 06:28 PM, Linus Walleij wrote: > On Tue, Nov 22, 2016 at 11:20 AM, Laxman Dewangan wrote: > >> + rinfo->regulator = devm_regulator_get_optional(dev, >> + soc_data->cfg[i].vsupply); > Please just use devm_regulator_get(). > > As has been discussed at lenth elsewhere "optional" in regulator_get_optional > does *not* mean "software optional", it means "hardware optional". > > Such as a terminal that may have a voltage connected or not be > connected to anything at all. > > If the system does not define a regulator you will anyway get a > dummy regulator. > The issue with dummy regulator is that the other regulator APIs with dummy regulator fails. Once we get the dummy regulator, there is no way to know whether the returned regulator is actual or dummy and when calling the regulator_get_voltage() it failed. [ 2.917176] pinctrl-t210-io-pad.0 supply vddio-audio-hv not found, using dummy regulator [ 2.925510] pinctrl-tegra-io-pad pinctrl-t210-io-pad.0: Failed to get voltage for rail vddio-aud2 Here, we need the regulator handle which can support the other regulator APIs. In some of platforms, we do not use some of the io-pins and on this case, we do not connect the IO rail supply for these pins. So this is like a hardware optional. If the IO pins are used then it need to have the proper regulator handle. Missing regulator handle on DT will be like that IO pads are not used.