Message ID | 1366106437-18004-2-git-send-email-ulf.hansson@stericsson.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Acked-by: Jaehoon Chung <jh80.chung@samsung.com> On 04/16/2013 07:00 PM, Ulf Hansson wrote: > From: Ulf Hansson <ulf.hansson@linaro.org> > > Move mmc suspend specific operations to be executed from the .suspend > callback in the mmc bus_ops. This simplifies the mmc_suspend_host > function which is supposed to handle nothing but common suspend tasks. > > Since eMMC can be considered non-removable there are no need to check > for ongoing bkops at PM_SUSPEND_PREPARE notification so remove it. > > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> > Cc: Maya Erez <merez@codeaurora.org> > Cc: Subhash Jadavani <subhashj@codeaurora.org> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: Kevin Liu <kliu5@marvell.com> > Cc: Adrian Hunter <adrian.hunter@intel.com> > Cc: Daniel Drake <dsd@laptop.org> > Cc: Ohad Ben-Cohen <ohad@wizery.com> > --- > drivers/mmc/core/core.c | 22 +--------------------- > drivers/mmc/core/mmc.c | 6 ++++++ > 2 files changed, 7 insertions(+), 21 deletions(-) > > diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c > index ad7decc..f001097 100644 > --- a/drivers/mmc/core/core.c > +++ b/drivers/mmc/core/core.c > @@ -2631,14 +2631,8 @@ int mmc_suspend_host(struct mmc_host *host) > > mmc_bus_get(host); > if (host->bus_ops && !host->bus_dead) { > - if (host->bus_ops->suspend) { > - if (mmc_card_doing_bkops(host->card)) { > - err = mmc_stop_bkops(host->card); > - if (err) > - goto out; > - } > + if (host->bus_ops->suspend) > err = host->bus_ops->suspend(host); > - } > > if (err == -ENOSYS || !host->bus_ops->resume) { > /* > @@ -2662,10 +2656,8 @@ int mmc_suspend_host(struct mmc_host *host) > if (!err && !mmc_card_keep_power(host)) > mmc_power_off(host); > > -out: > return err; > } > - > EXPORT_SYMBOL(mmc_suspend_host); > > /** > @@ -2720,22 +2712,10 @@ int mmc_pm_notify(struct notifier_block *notify_block, > struct mmc_host *host = container_of( > notify_block, struct mmc_host, pm_notify); > unsigned long flags; > - int err = 0; > > switch (mode) { > case PM_HIBERNATION_PREPARE: > case PM_SUSPEND_PREPARE: > - if (host->card && mmc_card_mmc(host->card) && > - mmc_card_doing_bkops(host->card)) { > - err = mmc_stop_bkops(host->card); > - if (err) { > - pr_err("%s: didn't stop bkops\n", > - mmc_hostname(host)); > - return err; > - } > - mmc_card_clr_doing_bkops(host->card); > - } > - > spin_lock_irqsave(&host->lock, flags); > host->rescan_disable = 1; > spin_unlock_irqrestore(&host->lock, flags); > diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c > index d584f7c..66a530e 100644 > --- a/drivers/mmc/core/mmc.c > +++ b/drivers/mmc/core/mmc.c > @@ -1411,6 +1411,12 @@ static int mmc_suspend(struct mmc_host *host) > > mmc_claim_host(host); > > + if (mmc_card_doing_bkops(host->card)) { > + err = mmc_stop_bkops(host->card); > + if (err) > + goto out; > + } > + > err = mmc_cache_ctrl(host, 0); > if (err) > goto out; > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index ad7decc..f001097 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -2631,14 +2631,8 @@ int mmc_suspend_host(struct mmc_host *host) mmc_bus_get(host); if (host->bus_ops && !host->bus_dead) { - if (host->bus_ops->suspend) { - if (mmc_card_doing_bkops(host->card)) { - err = mmc_stop_bkops(host->card); - if (err) - goto out; - } + if (host->bus_ops->suspend) err = host->bus_ops->suspend(host); - } if (err == -ENOSYS || !host->bus_ops->resume) { /* @@ -2662,10 +2656,8 @@ int mmc_suspend_host(struct mmc_host *host) if (!err && !mmc_card_keep_power(host)) mmc_power_off(host); -out: return err; } - EXPORT_SYMBOL(mmc_suspend_host); /** @@ -2720,22 +2712,10 @@ int mmc_pm_notify(struct notifier_block *notify_block, struct mmc_host *host = container_of( notify_block, struct mmc_host, pm_notify); unsigned long flags; - int err = 0; switch (mode) { case PM_HIBERNATION_PREPARE: case PM_SUSPEND_PREPARE: - if (host->card && mmc_card_mmc(host->card) && - mmc_card_doing_bkops(host->card)) { - err = mmc_stop_bkops(host->card); - if (err) { - pr_err("%s: didn't stop bkops\n", - mmc_hostname(host)); - return err; - } - mmc_card_clr_doing_bkops(host->card); - } - spin_lock_irqsave(&host->lock, flags); host->rescan_disable = 1; spin_unlock_irqrestore(&host->lock, flags); diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index d584f7c..66a530e 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -1411,6 +1411,12 @@ static int mmc_suspend(struct mmc_host *host) mmc_claim_host(host); + if (mmc_card_doing_bkops(host->card)) { + err = mmc_stop_bkops(host->card); + if (err) + goto out; + } + err = mmc_cache_ctrl(host, 0); if (err) goto out;