All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: linux-mmc <linux-mmc@vger.kernel.org>,
	Aaron Lu <aaron.lu@intel.com>, Philip Rakity <prakity@nvidia.com>,
	Al Cooper <alcooperx@gmail.com>,
	Arend van Spriel <arend@broadcom.com>
Subject: Re: [PATCH V5 02/15] mmc: core: Enable / disable re-tuning
Date: Thu, 16 Apr 2015 16:24:45 +0300	[thread overview]
Message-ID: <552FB81D.9060709@intel.com> (raw)
In-Reply-To: <CAPDyKFr_7giwZt76z3TnoqqJbQPBUJqRj1cepFR888FiseraGg@mail.gmail.com>

On 16/04/15 15:00, Ulf Hansson wrote:
> On 16 April 2015 at 11:26, Adrian Hunter <adrian.hunter@intel.com> wrote:
>> On 16/04/15 11:57, Ulf Hansson wrote:
>>> On 14 April 2015 at 15:12, Adrian Hunter <adrian.hunter@intel.com> wrote:
>>>> Enable re-tuning when tuning is executed and
>>>> disable re-tuning when card is no longer initialized.
>>>>
>>>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>>>> ---
>>>>  drivers/mmc/core/core.c | 4 ++++
>>>>  1 file changed, 4 insertions(+)
>>>>
>>>> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
>>>> index c296bc0..dd43f9b 100644
>>>> --- a/drivers/mmc/core/core.c
>>>> +++ b/drivers/mmc/core/core.c
>>>> @@ -1109,6 +1109,8 @@ int mmc_execute_tuning(struct mmc_card *card)
>>>>
>>>>         if (err)
>>>>                 pr_err("%s: tuning execution failed\n", mmc_hostname(host));
>>>> +       else
>>>> +               mmc_retune_enable(host);
>>>>
>>>>         return err;
>>>>  }
>>>> @@ -1140,6 +1142,8 @@ void mmc_set_bus_width(struct mmc_host *host, unsigned int width)
>>>>   */
>>>>  void mmc_set_initial_state(struct mmc_host *host)
>>>>  {
>>>> +       mmc_retune_disable(host);
>>>> +
>>>>         if (mmc_host_is_spi(host))
>>>>                 host->ios.chip_select = MMC_CS_HIGH;
>>>>         else
>>>> --
>>>> 1.9.1
>>>
>>> I don't think you have fully considered these cases for the mmc/sd/sdio cards.
>>
>> Thanks for look at this, but I don't see a problem - see below.
>>
>>>
>>> 1) Card removal/detect (hold/release?)
>>
>> Re-tuning will be done if needed before detect (because it is done before a
>> request), which is necessary because detect can fail if tuning is needed.
>>
>> Re-tuning is done before a request. Requests aren't started if the card has
>> been removed i.e. mmc_start_request() calls mmc_card_removed()
>>
>> If tuning is executed while a card is being removed, then the tuning will
>> fail and the request will be errored out.
> 
> So you are saying that we instead of relying on the CMD13 (for SD/MMC)
> to check whether the card is still alive, it's fine to trigger a
> re-tuning instead.

(Oops forgot to answer this one, sorry)

Yes, why not?

> 
> I don't think that is an effective way to remove a card.

Generally we know the card is removed from card-detect so no commands are
sent in either case.

> 
> Moreover, I find it quite unreasonable to say the check for an alive
> card, would fail because of that a re-tuning is needed. That would in
> principle mean that we never should be able to hold re-tune for any
> commands sequences.

Re-tuning must work if the card is alive. CMD13 might get a CRC error if
re-tuning is needed.

> 
>>
>>> 2) system PM (disable?)
>>
>> System pm does mmc_power_off() which calls mmc_set_initial_state()
> 
> At System PM other commands will be sent to put the card into sleep
> state. For example CMD5. These commands are invoked prior
> mmc_power_off() is called.
> 
> In the SDIO case, mmc_power_off() might not even be called at all,
> since SDIO func drivers might have enabled MMC_PM_KEEP_POWER.
> 
>>
>>> 3) runtime PM (disable?)
>>
>> If the card powers off then mmc_set_initial_state() will called.
> 
> Again that's too late, since for example the CMD5 might have been sent
> before this.
> 
>>
>> For anything else the card might be doing, the mmc_retune_hold() /
>> mmc_retune_release() functions are used.
>>
>>> 4) reset (?)
>>
>> Reset goes through mmc_set_initial_state()
> 
> In the mmc case, CMD13 is sent prior that. Shouldn't we hold re-tune
> during that period?
> 
>>
>>
> 
> Kind regards
> Uffe
> 
> 


  parent reply	other threads:[~2015-04-16 13:26 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-14 13:12 [PATCH V5 00/15] mmc: host: Add facility to support re-tuning Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 01/15] " Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 02/15] mmc: core: Enable / disable re-tuning Adrian Hunter
2015-04-16  8:57   ` Ulf Hansson
2015-04-16  9:26     ` Adrian Hunter
2015-04-16 12:00       ` Ulf Hansson
2015-04-16 13:14         ` Adrian Hunter
2015-04-16 13:57           ` Ulf Hansson
2015-04-17  6:53             ` Adrian Hunter
2015-04-16 13:24         ` Adrian Hunter [this message]
2015-04-16 15:19           ` Ulf Hansson
2015-04-17  7:06             ` Adrian Hunter
2015-04-17  8:56               ` Ulf Hansson
2015-04-17 11:52                 ` Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 03/15] mmc: core: Add support for re-tuning before each request Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 04/15] mmc: core: Check re-tuning before retrying Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 05/15] mmc: core: Hold re-tuning during switch commands Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 06/15] mmc: core: Hold re-tuning during erase commands Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 07/15] mmc: core: Hold re-tuning while bkops ongoing Adrian Hunter
2015-04-16  9:27   ` Ulf Hansson
2015-04-16 11:54     ` [PATCH V6 " Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 08/15] mmc: mmc: Comment that callers need to hold re-tuning if the card is put to sleep Adrian Hunter
2015-04-16  9:01   ` Ulf Hansson
2015-04-16  9:30     ` Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 09/15] mmc: core: Separate out the mmc_switch status check so it can be re-used Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 10/15] mmc: core: Add support for HS400 re-tuning Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 11/15] mmc: sdhci: Change to new way of doing re-tuning Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 12/15] mmc: sdhci: Flag re-tuning is needed on CRC or End-Bit errors Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 13/15] mmc: block: Check re-tuning in the recovery path Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 14/15] mmc: block: Retry errored data requests when re-tuning is needed Adrian Hunter
2015-04-14 13:12 ` [PATCH V5 15/15] mmc: core: Don't print reset warning if reset is not supported Adrian Hunter

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=552FB81D.9060709@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=aaron.lu@intel.com \
    --cc=alcooperx@gmail.com \
    --cc=arend@broadcom.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=prakity@nvidia.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 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.