From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jaehoon Chung Subject: Re: [PATCH V3 1/4] mmc: core: Stop bkops for eMMC only from mmc suspend Date: Thu, 18 Apr 2013 16:17:44 +0900 Message-ID: <516F9E18.2020300@samsung.com> References: <1366106437-18004-1-git-send-email-ulf.hansson@stericsson.com> <1366106437-18004-2-git-send-email-ulf.hansson@stericsson.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Received: from mailout4.samsung.com ([203.254.224.34]:36117 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752566Ab3DRHRv (ORCPT ); Thu, 18 Apr 2013 03:17:51 -0400 Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MLF0003UW98UE20@mailout4.samsung.com> for linux-mmc@vger.kernel.org; Thu, 18 Apr 2013 16:17:37 +0900 (KST) In-reply-to: <1366106437-18004-2-git-send-email-ulf.hansson@stericsson.com> Sender: linux-mmc-owner@vger.kernel.org List-Id: linux-mmc@vger.kernel.org To: Ulf Hansson Cc: linux-mmc@vger.kernel.org, Chris Ball , Ulf Hansson , Maya Erez , Subhash Jadavani , Arnd Bergmann , Kevin Liu , Adrian Hunter , Daniel Drake , Ohad Ben-Cohen Acked-by: Jaehoon Chung On 04/16/2013 07:00 PM, Ulf Hansson wrote: > From: Ulf Hansson > > 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 > Cc: Maya Erez > Cc: Subhash Jadavani > Cc: Arnd Bergmann > Cc: Kevin Liu > Cc: Adrian Hunter > Cc: Daniel Drake > Cc: Ohad Ben-Cohen > --- > 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; >