From: Adrian Hunter <adrian.hunter@intel.com>
To: Ulf Hansson <ulf.hansson@linaro.org>, linux-mmc@vger.kernel.org
Subject: Re: [PATCH 7/8] mmc: sdhci: Remove redundant runtime PM calls
Date: Fri, 1 Apr 2016 10:46:01 +0300 [thread overview]
Message-ID: <56FE2739.2030100@intel.com> (raw)
In-Reply-To: <1459236673-5639-7-git-send-email-ulf.hansson@linaro.org>
On 29/03/16 10:31, Ulf Hansson wrote:
> Commit 9250aea76bfc ("mmc: core: Enable runtime PM management of host
> devices"), made some calls to the runtime PM API from the driver
> redundant. Especially those which deals with runtime PM reference
> counting, so let's remove them.
>
> Moreover as SDHCI have its own wrapper functions for runtime PM these
> becomes superfluous, so let's remove them as well.
>
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Looks good, but I have one comment below.
> ---
> drivers/mmc/host/sdhci.c | 56 ++++++------------------------------------------
> 1 file changed, 7 insertions(+), 49 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index 8670f16..4bb9bfd 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -56,19 +56,9 @@ static void sdhci_enable_preset_value(struct sdhci_host *host, bool enable);
> static int sdhci_do_get_cd(struct sdhci_host *host);
>
> #ifdef CONFIG_PM
> -static int sdhci_runtime_pm_get(struct sdhci_host *host);
> -static int sdhci_runtime_pm_put(struct sdhci_host *host);
> static void sdhci_runtime_pm_bus_on(struct sdhci_host *host);
> static void sdhci_runtime_pm_bus_off(struct sdhci_host *host);
> #else
> -static inline int sdhci_runtime_pm_get(struct sdhci_host *host)
> -{
> - return 0;
> -}
> -static inline int sdhci_runtime_pm_put(struct sdhci_host *host)
> -{
> - return 0;
> -}
> static void sdhci_runtime_pm_bus_on(struct sdhci_host *host)
> {
> }
> @@ -1298,8 +1288,6 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
>
> host = mmc_priv(mmc);
>
> - sdhci_runtime_pm_get(host);
> -
> /* Firstly check card presence */
> present = mmc->ops->get_cd(mmc);
>
> @@ -1546,9 +1534,7 @@ static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
> {
> struct sdhci_host *host = mmc_priv(mmc);
>
> - sdhci_runtime_pm_get(host);
> sdhci_do_set_ios(host, ios);
> - sdhci_runtime_pm_put(host);
> }
>
> static int sdhci_do_get_cd(struct sdhci_host *host)
> @@ -1580,12 +1566,8 @@ static int sdhci_do_get_cd(struct sdhci_host *host)
> static int sdhci_get_cd(struct mmc_host *mmc)
> {
> struct sdhci_host *host = mmc_priv(mmc);
> - int ret;
>
> - sdhci_runtime_pm_get(host);
> - ret = sdhci_do_get_cd(host);
> - sdhci_runtime_pm_put(host);
> - return ret;
> + return sdhci_do_get_cd(host);
> }
>
> static int sdhci_check_ro(struct sdhci_host *host)
> @@ -1641,12 +1623,8 @@ static void sdhci_hw_reset(struct mmc_host *mmc)
> static int sdhci_get_ro(struct mmc_host *mmc)
> {
> struct sdhci_host *host = mmc_priv(mmc);
> - int ret;
>
> - sdhci_runtime_pm_get(host);
> - ret = sdhci_do_get_ro(host);
> - sdhci_runtime_pm_put(host);
> - return ret;
> + return sdhci_do_get_ro(host);
> }
>
> static void sdhci_enable_sdio_irq_nolock(struct sdhci_host *host, int enable)
> @@ -1668,7 +1646,7 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
> struct sdhci_host *host = mmc_priv(mmc);
> unsigned long flags;
>
> - sdhci_runtime_pm_get(host);
> + pm_runtime_get_sync(mmc_dev(mmc));
Why can't this be moved into the core as well? At the least, there should
be a comment here and explanation in the commit message.
>
> spin_lock_irqsave(&host->lock, flags);
> if (enable)
> @@ -1679,7 +1657,8 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
> sdhci_enable_sdio_irq_nolock(host, enable);
> spin_unlock_irqrestore(&host->lock, flags);
>
> - sdhci_runtime_pm_put(host);
> + pm_runtime_mark_last_busy(mmc_dev(mmc));
> + pm_runtime_put_autosuspend(mmc_dev(mmc));
> }
>
> static int sdhci_do_start_signal_voltage_switch(struct sdhci_host *host,
> @@ -1777,14 +1756,11 @@ static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
> struct mmc_ios *ios)
> {
> struct sdhci_host *host = mmc_priv(mmc);
> - int err;
>
> if (host->version < SDHCI_SPEC_300)
> return 0;
> - sdhci_runtime_pm_get(host);
> - err = sdhci_do_start_signal_voltage_switch(host, ios);
> - sdhci_runtime_pm_put(host);
> - return err;
> +
> + return sdhci_do_start_signal_voltage_switch(host, ios);
> }
>
> static int sdhci_card_busy(struct mmc_host *mmc)
> @@ -1792,10 +1768,8 @@ static int sdhci_card_busy(struct mmc_host *mmc)
> struct sdhci_host *host = mmc_priv(mmc);
> u32 present_state;
>
> - sdhci_runtime_pm_get(host);
> /* Check whether DAT[3:0] is 0000 */
> present_state = sdhci_readl(host, SDHCI_PRESENT_STATE);
> - sdhci_runtime_pm_put(host);
>
> return !(present_state & SDHCI_DATA_LVL_MASK);
> }
> @@ -1822,7 +1796,6 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
> unsigned int tuning_count = 0;
> bool hs400_tuning;
>
> - sdhci_runtime_pm_get(host);
> spin_lock_irqsave(&host->lock, flags);
>
> hs400_tuning = host->flags & SDHCI_HS400_TUNING;
> @@ -1870,7 +1843,6 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
> if (host->ops->platform_execute_tuning) {
> spin_unlock_irqrestore(&host->lock, flags);
> err = host->ops->platform_execute_tuning(host, opcode);
> - sdhci_runtime_pm_put(host);
> return err;
> }
>
> @@ -2002,8 +1974,6 @@ out:
> sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
> out_unlock:
> spin_unlock_irqrestore(&host->lock, flags);
> - sdhci_runtime_pm_put(host);
> -
> return err;
> }
>
> @@ -2201,7 +2171,6 @@ static void sdhci_tasklet_finish(unsigned long param)
> spin_unlock_irqrestore(&host->lock, flags);
>
> mmc_request_done(host->mmc, mrq);
> - sdhci_runtime_pm_put(host);
> }
>
> static void sdhci_timeout_timer(unsigned long data)
> @@ -2682,17 +2651,6 @@ int sdhci_resume_host(struct sdhci_host *host)
>
> EXPORT_SYMBOL_GPL(sdhci_resume_host);
>
> -static int sdhci_runtime_pm_get(struct sdhci_host *host)
> -{
> - return pm_runtime_get_sync(host->mmc->parent);
> -}
> -
> -static int sdhci_runtime_pm_put(struct sdhci_host *host)
> -{
> - pm_runtime_mark_last_busy(host->mmc->parent);
> - return pm_runtime_put_autosuspend(host->mmc->parent);
> -}
> -
> static void sdhci_runtime_pm_bus_on(struct sdhci_host *host)
> {
> if (host->bus_on)
>
next prev parent reply other threads:[~2016-04-01 7:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-29 7:31 [PATCH 1/8] mmc: atmel-mci: Remove redundant runtime PM calls Ulf Hansson
2016-03-29 7:31 ` [PATCH 2/8] mmc: mmci: " Ulf Hansson
2016-03-29 7:31 ` [PATCH 3/8] mmc: mediatek: " Ulf Hansson
2016-03-29 7:31 ` [PATCH 4/8] mmc: omap_hsmmc: " Ulf Hansson
2016-03-29 7:31 ` [PATCH 5/8] mmc: sdhci-acpi: " Ulf Hansson
2016-03-29 7:31 ` [PATCH 6/8] mmc: sdhci-pci: " Ulf Hansson
2016-03-29 7:31 ` [PATCH 7/8] mmc: sdhci: " Ulf Hansson
2016-04-01 7:46 ` Adrian Hunter [this message]
2016-04-01 9:46 ` Ulf Hansson
2016-04-05 11:40 ` Adrian Hunter
2016-04-05 14:38 ` Ulf Hansson
2016-03-29 7:31 ` [PATCH 8/8] mmc: tmio: " Ulf Hansson
2016-03-29 15:03 ` [PATCH 1/8] mmc: atmel-mci: " Ludovic Desroches
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=56FE2739.2030100@intel.com \
--to=adrian.hunter@intel.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox