All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ulf Hansson <ulf.hansson@linaro.org>
To: Eliad Peller <eliad@wizery.com>
Cc: linux-mmc <linux-mmc@vger.kernel.org>, Ido Yariv <ido@wizery.com>
Subject: Re: [PATCH] mmc: core: don't call bus_ops->power_restore if already on
Date: Mon, 11 May 2015 13:47:25 +0200	[thread overview]
Message-ID: <CAPDyKFoOKeBxUFcKVR0ueiO5nP4A_X5LhMDN_dOgVh=3xc5u7A@mail.gmail.com> (raw)
In-Reply-To: <CAB3XZEe_SjhHU-mRbG-X_7PNQHCaVGHfmx66dEUhdZsexYciyQ@mail.gmail.com>

On 11 May 2015 at 13:07, Eliad Peller <eliad@wizery.com> wrote:
> On Mon, May 11, 2015 at 11:48 AM, Ulf Hansson <ulf.hansson@linaro.org> wrote:
>> On 5 May 2015 at 18:03, Eliad Peller <eliad@wizery.com> wrote:
>>> mmc_power_restore_host() calls mmc_power_up(), which
>>> returns immediately if power is already on.
>>>
>>> However, it still calls host->bus_ops->power_restore,
>>> which might result in various errors if the bus_ops
>>> doesn't handle it well (e.g. failing to run init
>>> sequence twice)
>>>
>>> Simply bail out in this case, without further calling
>>> bus_ops->power_restore.
>>>
>>> Specifically, this solves issue with wl18xx sdio card,
>>> where the mmc core powers on the card on resume (while
>>> MMC_PM_KEEP_POWER is not set), and the wl18xx device
>>> driver calls mmc_power_restore_host() once more.
>>
>> Could you elaborate on why that driver calls mmc_power_restore_host()
>> after the system PM suspend sequence? I am trying to understand the
>> use case.
>>
> The driver assumes control over the mmc power, in order to save power
> when no interface is up.

Makes sense!

> It basically uses runtime_pm for it, but calls the power functions
> explicitly if pm_runtime returned non-zero (this is needed for some
> corner cases, e.g. runtime pm is disabled).

I have some ideas about changing the way runtime PM shall be used for
SDIO func drivers. Instead of using it to control power to the SDIO
card, it should be used to deal with "idle operations".

That would mean SDIO func drivers would use only
mmc_power_save|restore_host() APIs, to control the power to the SDIO
card.

Do you see any issues with such an approach?

>
> On suspend (if wowlan is not configured), all the wlan interfaces are
> taken down, and the driver powers off the device.
> On resume, the interfaces are taken up again, and the driver powers on
> the device, by calling mmc_power_restore_host().

That raises the following question.

When mmc_power_save_host() has been called for an SDIO card, should
really the mmc core restore power to that card during system PM
resume? Isn't it better to leave that to the SDIO func driver?

Kind regards
Uffe

  reply	other threads:[~2015-05-11 11:47 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-05 16:03 [PATCH] mmc: core: don't call bus_ops->power_restore if already on Eliad Peller
2015-05-11  8:48 ` Ulf Hansson
2015-05-11 11:07   ` Eliad Peller
2015-05-11 11:47     ` Ulf Hansson [this message]
2015-05-11 12:02       ` Eliad Peller
2015-05-11 13:50         ` Ulf Hansson
2015-05-11 14:04           ` Eliad Peller

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='CAPDyKFoOKeBxUFcKVR0ueiO5nP4A_X5LhMDN_dOgVh=3xc5u7A@mail.gmail.com' \
    --to=ulf.hansson@linaro.org \
    --cc=eliad@wizery.com \
    --cc=ido@wizery.com \
    --cc=linux-mmc@vger.kernel.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.