Linux-mmc Archive on lore.kernel.org
 help / color / Atom feed
From: Sowjanya Komatineni <skomatineni@nvidia.com>
To: Thierry Reding <thierry.reding@gmail.com>,
	Dmitry Osipenko <digetx@gmail.com>
Cc: <adrian.hunter@intel.com>, <ulf.hansson@linaro.org>,
	<jonathanh@nvidia.com>, <linux-tegra@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-mmc@vger.kernel.org>
Subject: Re: [PATCH] sdhci: tegra: Avoid reading autocal timeout values when not applicable
Date: Fri, 22 May 2020 08:11:43 -0700
Message-ID: <e574c225-aa2a-7431-6ea8-2d2f1e7dd384@nvidia.com> (raw)
In-Reply-To: <20200522125230.GH2163848@ulmo>


On 5/22/20 5:52 AM, Thierry Reding wrote:
> On Fri, May 22, 2020 at 03:42:18PM +0300, Dmitry Osipenko wrote:
>> 22.05.2020 15:26, Thierry Reding пишет:
>>> On Wed, May 20, 2020 at 01:08:57PM -0700, Sowjanya Komatineni wrote:
>>>> When auto calibration timeouts, calibration is disabled and fail-safe
>>>> drive strength values are programmed based on the signal voltage.
>>>>
>>>> Different fail-safe drive strength values based on voltage are
>>>> applicable only for SoCs supporting 3V3 and 1V8 pad controls.
>>>>
>>>> So, this patch avoids reading these properties from the device tree
>>>> for SoCs not using pad controls and the warning of missing properties
>>>> will not show up on these SoC platforms.
>>>>
>>>> Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
>>>> ---
>>>>   drivers/mmc/host/sdhci-tegra.c | 57 ++++++++++++++++++++++++------------------
>>>>   1 file changed, 33 insertions(+), 24 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
>>>> index 3e2c510..141b49b 100644
>>>> --- a/drivers/mmc/host/sdhci-tegra.c
>>>> +++ b/drivers/mmc/host/sdhci-tegra.c
>>>> @@ -605,6 +605,39 @@ static void tegra_sdhci_parse_pad_autocal_dt(struct sdhci_host *host)
>>>>   		autocal->pull_down_1v8 = 0;
>>>>   
>>>>   	err = device_property_read_u32(host->mmc->parent,
>>>> +			"nvidia,pad-autocal-pull-up-offset-sdr104",
>>>> +			&autocal->pull_up_sdr104);
>>>> +	if (err)
>>>> +		autocal->pull_up_sdr104 = autocal->pull_up_1v8;
>>>> +
>>>> +	err = device_property_read_u32(host->mmc->parent,
>>>> +			"nvidia,pad-autocal-pull-down-offset-sdr104",
>>>> +			&autocal->pull_down_sdr104);
>>>> +	if (err)
>>>> +		autocal->pull_down_sdr104 = autocal->pull_down_1v8;
>>>> +
>>>> +	err = device_property_read_u32(host->mmc->parent,
>>>> +			"nvidia,pad-autocal-pull-up-offset-hs400",
>>>> +			&autocal->pull_up_hs400);
>>>> +	if (err)
>>>> +		autocal->pull_up_hs400 = autocal->pull_up_1v8;
>>>> +
>>>> +	err = device_property_read_u32(host->mmc->parent,
>>>> +			"nvidia,pad-autocal-pull-down-offset-hs400",
>>>> +			&autocal->pull_down_hs400);
>>>> +	if (err)
>>>> +		autocal->pull_down_hs400 = autocal->pull_down_1v8;
>>>> +
>>>> +	/*
>>>> +	 * Different fail-safe drive strength values based on the signaling
>>>> +	 * voltage are applicable for SoCs supporting 3V3 and 1V8 pad controls.
>>>> +	 * So, avoid reading below device tree properies for SoCs that don't
>>>> +	 * have NVQUIRK_NEEDS_PAD_CONTROL.
>>>> +	 */
>>>> +	if (!(tegra_host->soc_data->nvquirks & NVQUIRK_NEEDS_PAD_CONTROL))
>>>> +		return;
>>> Hm... so what exactly is the difference between NVQUIRK_HAS_PADCALIB? I
>>> think Tegra30 will also end up calling tegra_sdhci_set_padctrl(), but it
>>> will then write the default (0) value for these drive strength. Is that
>>> okay?

Yes separate 3v3 and 1v8 drive strengths are for Tegra210/184/194 where 
they have separate pad controls.

T30 also has auto calibration enabled but don't need to use these 
properties as they don't have separate default drive strengths based on 
signaling.

Same default drive strengths set by boot loader/default pinmux will hold 
good.

>> It won't write 0, but skip the writing if values are 0. Technically T30+
>> supports the customized strengths, but I'm not sure whether it was ever
>> tested and whether it's really needed. I think Sowjanya said before that
>> the default values are always okay for older SoCs.
> Alright then, in that case:
>
> Acked-by: Thierry Reding <treding@nvidia.com>

  reply index

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-20 20:08 Sowjanya Komatineni
2020-05-21 12:40 ` Dmitry Osipenko
2020-05-22 12:26 ` Thierry Reding
2020-05-22 12:42   ` Dmitry Osipenko
2020-05-22 12:52     ` Thierry Reding
2020-05-22 15:11       ` Sowjanya Komatineni [this message]
2020-05-22 12:28 ` Dmitry Osipenko
2020-05-24 15:33 ` Adrian Hunter
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=e574c225-aa2a-7431-6ea8-2d2f1e7dd384@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

Linux-mmc Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-mmc/0 linux-mmc/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-mmc linux-mmc/ https://lore.kernel.org/linux-mmc \
		linux-mmc@vger.kernel.org
	public-inbox-index linux-mmc

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-mmc


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git