From: Adrian Hunter <adrian.hunter@intel.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Chris Ball <chris@printf.net>, linux-mmc <linux-mmc@vger.kernel.org>
Subject: Re: [PATCH 3/3] mmc: sdhci: Disable re-tuning for HS400
Date: Tue, 02 Dec 2014 14:28:04 +0200 [thread overview]
Message-ID: <547DB054.80907@intel.com> (raw)
In-Reply-To: <CAPDyKFq=TxzGmQws6RmtchfxN9FBqUryirA306AW0wANZzn0-g@mail.gmail.com>
On 02/12/14 13:20, Ulf Hansson wrote:
> On 2 December 2014 at 11:08, Adrian Hunter <adrian.hunter@intel.com> wrote:
>> On 02/12/14 11:35, Ulf Hansson wrote:
>>> On 1 December 2014 at 14:16, Adrian Hunter <adrian.hunter@intel.com> wrote:
>>>> Re-tuning for HS400 mode must be done in HS200
>>>> mode. Currently there is no support for that.
>>>> That needs to be reflected in the code.
>>>> Specifically, if tuning is executed in HS400 mode
>>>> then return an error, and if the re-tuning timer
>>>> is running when switching to HS400 mode, then
>>>> disable the timer.
>>>>
>>>> Note that periodic re-tuning is not expected
>>>> to be needed for HS400 but re-tuning is still
>>>> needed after the host controller has lost power.
>>>
>>> Why can't the old values be restored instead of trigger a re-tuning?
>>
>> The "values" (not sure what you mean by that) are not available to the
>> driver. Even if they were the operating conditions may have changed, (i.e.
>> temperature change) so the old "values" could still be wrong.
>
> The "values" I refer to is those which we "calculated" during the
> tuning process.
>
> What I had in mind, was that we should save these values at runtime PM
> suspend. And restore them at runtime PM resume. For some mmc
> controllers the "values" are typically just a some bits in a
> controller register, but that might not be true for all cases.
>
> Regarding the temperature change, etc. I think that is what the
> periodic retuning should be taken care off.
>
> Could you elaborate on why the "values" is not available to the driver?
The "optimal sampling point" has no corresponding register or value
in SDHCI.
>
>>
>> Jedec spec. says:
>>
>> It is recommended to perform tuning procedure while Device wakes
>> up, after sleep.
>>
>> SDHCI spec. says:
>>
>> If the Host System goes into power down mode, the Host Driver
>> should stop the re-tuning timer and set the expiration flag
>> to 1 when the Host System resumes from power down mode.
>
> I am not sure how to interpret this. Is the context about system PM or
> runtime PM?
I interpret it to mean any situation where the host controller loses power
and therefore loses its tuning.
>
>>
>>>
>>>> In the case of suspend/resume that is not necessary
>>>> because the card is fully re-initialised. That
>>>> just leaves runtime suspend/resume with no support
>>>> for HS400 re-tuning.
>>>>
>>>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>>>> ---
>>>> drivers/mmc/host/sdhci.c | 16 +++++++++++++++-
>>>> 1 file changed, 15 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>>>> index 2efa7fe..a7c9e67 100644
>>>> --- a/drivers/mmc/host/sdhci.c
>>>> +++ b/drivers/mmc/host/sdhci.c
>>>> @@ -1476,8 +1476,18 @@ void sdhci_set_uhs_signaling(struct sdhci_host *host, unsigned timing)
>>>> else if ((timing == MMC_TIMING_UHS_DDR50) ||
>>>> (timing == MMC_TIMING_MMC_DDR52))
>>>> ctrl_2 |= SDHCI_CTRL_UHS_DDR50;
>>>> - else if (timing == MMC_TIMING_MMC_HS400)
>>>> + else if (timing == MMC_TIMING_MMC_HS400) {
>>>> ctrl_2 |= SDHCI_CTRL_HS400; /* Non-standard */
>>>> + /*
>>>> + * Periodic re-tuning for HS400 is not expected to be needed, so
>>>> + * disable it here.
>>>
>>> Urgh, I don't like that the periodic tuning is handled by the host. We
>>> should never had merged that.
>>>
>>> How about trying to move the periodic tuning to be handled by the mmc
>>> core instead?
>>
>> I have patches for that. I hope to send them today.
>
> Great! Looking forward to review them!
>
> Kind regards
> Uffe
>
>
next prev parent reply other threads:[~2014-12-02 12:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-01 13:16 [PATCH 0/3] mmc: sdhci: Disable re-tuning for HS400 Adrian Hunter
2014-12-01 13:16 ` [PATCH 1/3] mmc: sdhci: Tuning should not change max_blk_count Adrian Hunter
2014-12-01 13:16 ` [PATCH 2/3] mmc: sdhci: Add out_unlock to sdhci_execute_tuning Adrian Hunter
2014-12-01 13:16 ` [PATCH 3/3] mmc: sdhci: Disable re-tuning for HS400 Adrian Hunter
2014-12-02 9:35 ` Ulf Hansson
2014-12-02 10:08 ` Adrian Hunter
2014-12-02 11:20 ` Ulf Hansson
2014-12-02 12:28 ` Adrian Hunter [this message]
2014-12-02 14:06 ` 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=547DB054.80907@intel.com \
--to=adrian.hunter@intel.com \
--cc=chris@printf.net \
--cc=linux-mmc@vger.kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.