linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sowjanya Komatineni <skomatineni@nvidia.com>
To: Dmitry Osipenko <digetx@gmail.com>,
	Thierry Reding <thierry.reding@gmail.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	linux-tegra <linux-tegra@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v1] sdhci: tegra: Remove warnings about missing device-tree properties
Date: Tue, 19 May 2020 11:34:15 -0700	[thread overview]
Message-ID: <11c93dac-f5ba-2193-6f44-63af27fdce09@nvidia.com> (raw)
In-Reply-To: <b4eb368e-adc2-7b77-3ae9-fefdcfddaf3d@gmail.com>


On 5/19/20 9:33 AM, Dmitry Osipenko wrote:
> 19.05.2020 19:24, Thierry Reding пишет:
>> On Tue, May 19, 2020 at 05:05:27PM +0300, Dmitry Osipenko wrote:
>>> 19.05.2020 10:28, Ulf Hansson пишет:
>>>> On Sat, 16 May 2020 at 17:44, Dmitry Osipenko <digetx@gmail.com> wrote:
>>>>> Several people asked me about the MMC warnings in the KMSG log and
>>>>> I had to tell to ignore them because these warning are irrelevant to
>>>>> pre-Tegra210 SoCs.
>>>> Why are the warnings irrelevant?
>>> That's what the DT binding doc says [1].
>>>
>>> [1]
>>> https://www.kernel.org/doc/Documentation/devicetree/bindings/mmc/nvidia%2Ctegra20-sdhci.txt
>>>
>>> Although, looking at the driver's code and TRM docs, it seems that all
>>> those properties are really irrelevant only to the older Terga20 SoC. So
>>> the binding doc is a bit misleading.
>>>
>>> Nevertheless, the binding explicitly says that the properties are
>>> optional, which is correct.
>> Optional only means that drivers must not fail if these properties
>> aren't found, it doesn't mean that the driver can't warn that they
>> are missing.
>>
>> Quite possibly the only reason why they were made optional is because
>> they weren't part of the bindings since the beginning. Anything added
>> to a binding after the first public release has to be optional by
>> definition, otherwise DT ABI wouldn't be stable.
>>
>> I think these warnings were added on purpose, though I also see that
>> there are only values for these in device tree for Tegra186 and Tegra194
>> but not Tegra210 where these should also be necessary.

dt binding doc we have is common for MMC, SD and SDIO of all Tegras. Its 
not mandatory to have both 3v3 and 1v8 in device tree as based on signal 
mode.

As these driver strengths are SoC specific, they are part of Tegra SoC 
specific device tree where same values will be applicable to all Tegra 
SoC specific platforms.

Based on interface usage on platform, we use one or both of them like 
sdcard supports dual voltage and we use both 3V3 and 1V8 but if same 
interface is used for WIFI SD we use 1V8 only.

So made these dt properties as optional.

Other reason they are optional is, Tegra210 and prior has drive strength 
settings part of apb_misc and Tegra186 and later has driver strengths 
part of SDMMC controller. So,

- Pinctrls "sdmmc-3v3-drv" and "sdmmc-1v8-drv" for driver strengths are 
applicable for Tegra210 and prior.
- dt properties pad-autocal-pull-up/down-offset-1v8/3v3-timeout are for 
T186 onwards for driver strengths

Looks like dt binding doc need fix to clearly document these based on 
SoC or agree with Yaml we can conditionally specify pinctrl or dt 
properties based on SoC dependent.


>> Adding Sowjanya who wrote this code. Perhaps she can clarify why the
>> warnings were added. If these values /should/ be there on a subset of
>> Tegra, then I think we should keep them, or add them again, but perhaps
>> add a better way of identifying when they are necessary and when it is
>> safe to work without them.
>>
>> That said, looking at those checks I wonder if they are perhaps just
>> wrong. Or at the very least they seem redundant. It looks to me like
>> they can just be:
>>
>> 	if (tegra_host->pinctrl_state_XYZ == NULL) {
>> 		...
>> 	}
>>
>> That !IS_ERR(...) doesn't seem to do anything. But in that case, it's
>> also obvious why we're warning about them on platforms where these
>> properties don't exist in DT.

As drive strengths are through dt properties for T186 and later and thru 
pinctrl for T210 and prior, driver first checks for dt autocal timeout 
pull-up/down properties and if they are not found, it then checks for 
presence of pinctrl_state_xyx_drv only when valid pinctrl_state_xyz is 
present.

Driver expects either pinctrl or dt properties and shows warning when 
neither of them are present as its mandatory to use fixed driver 
strengths when auto calibration fails.

     err = device_property_read_u32(host->mmc->parent,
             "nvidia,pad-autocal-pull-down-offset-3v3-timeout",
             &autocal->pull_down_3v3_timeout);
     if (err) {
         if (!IS_ERR(tegra_host->pinctrl_state_3v3) &&
             (tegra_host->pinctrl_state_3v3_drv == NULL))
             pr_warn("%s: Missing autocal timeout 3v3-pad drvs\n",
                 mmc_hostname(host->mmc));
         autocal->pull_down_3v3_timeout = 0;
     }

>>
>> So I think we either need to add those values where appropriate so that
>> the warning doesn't show, or we need to narrow down where they are
>> really needed and add a corresponding condition.
>>
>> But again, perhaps Sowjanya can help clarify if these really are only
>> needed on Tegra210 and later or if these also apply to older chips.
> Either way will be cleaner to convert the DT binding to YAML rather than
> clutter the driver, IMO.
>





  reply	other threads:[~2020-05-19 18:34 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-16 15:43 [PATCH v1] sdhci: tegra: Remove warnings about missing device-tree properties Dmitry Osipenko
2020-05-19  7:28 ` Ulf Hansson
2020-05-19 14:05   ` Dmitry Osipenko
2020-05-19 15:29     ` Ulf Hansson
2020-05-19 16:24     ` Thierry Reding
2020-05-19 16:33       ` Dmitry Osipenko
2020-05-19 18:34         ` Sowjanya Komatineni [this message]
2020-05-19 18:41           ` Sowjanya Komatineni
2020-05-19 19:07             ` Sowjanya Komatineni
2020-05-19 20:44               ` Sowjanya Komatineni
2020-05-20  2:00                 ` Dmitry Osipenko
2020-05-20 11:26                   ` Ulf Hansson
2020-05-20 16:09                     ` Sowjanya Komatineni
2020-05-22 12:13                       ` Thierry Reding
2020-05-22 12:18                         ` Dmitry Osipenko
2020-05-22 12:34                           ` Thierry Reding
2020-05-22 15:22                             ` Sowjanya Komatineni
2020-05-22 15:26                               ` Thierry Reding
2020-05-22 15:57                                 ` Sowjanya Komatineni
2020-05-25  8:47                         ` Ulf Hansson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=11c93dac-f5ba-2193-6f44-63af27fdce09@nvidia.com \
    --to=skomatineni@nvidia.com \
    --cc=adrian.hunter@intel.com \
    --cc=digetx@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).