diff mbox

mmc: dw_mmc: Don't disable vmmc if keeping power in suspend

Message ID 1375846138-15839-1-git-send-email-dbasehore@chromium.org (mailing list archive)
State New, archived
Headers show

Commit Message

Derek Basehore Aug. 7, 2013, 3:28 a.m. UTC
If we keep power for suspend on a host for dw_mmc, don't disable vmmc-supply
regulator when suspending the host.

Signed-off-by: Derek Basehore <dbasehore@chromium.org>
Reviewed-by: Doug Anderson <dianders@chromium.org>
---
 drivers/mmc/host/dw_mmc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Seungwon Jeon Aug. 12, 2013, 10:33 a.m. UTC | #1
On Wed, August 07, 2013, Derek Basehore
> If we keep power for suspend on a host for dw_mmc, don't disable vmmc-supply
> regulator when suspending the host.

I have a trivial comment.
It would be better to add some macro for checking MMC_PM_KEEP_POWER.
And I just wonder how the problem is silent. Origin code has stood up somewhat long.
Did you see?

Acked-by: Seungwon Jeon <tgih.jun@samsung.com>

Thanks,
Seungwon Jeon

> 
> Signed-off-by: Derek Basehore <dbasehore@chromium.org>
> Reviewed-by: Doug Anderson <dianders@chromium.org>
> ---
>  drivers/mmc/host/dw_mmc.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index ee5f167..bf82d7c 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -2474,7 +2474,7 @@ int dw_mci_suspend(struct dw_mci *host)
>  		}
>  	}
> 
> -	if (host->vmmc)
> +	if (host->vmmc && !(host->pdata->pm_caps & MMC_PM_KEEP_POWER))
>  		regulator_disable(host->vmmc);
> 
>  	return 0;
> @@ -2485,7 +2485,7 @@ int dw_mci_resume(struct dw_mci *host)
>  {
>  	int i, ret;
> 
> -	if (host->vmmc) {
> +	if (host->vmmc && !(host->pdata->pm_caps & MMC_PM_KEEP_POWER)) {
>  		ret = regulator_enable(host->vmmc);
>  		if (ret) {
>  			dev_err(host->dev,
> --
> 1.8.3
> 
> --
> 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

--
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
Doug Anderson Aug. 12, 2013, 5:31 p.m. UTC | #2
Seungwon and Derek,

On Mon, Aug 12, 2013 at 3:33 AM, Seungwon Jeon <tgih.jun@samsung.com> wrote:
> On Wed, August 07, 2013, Derek Basehore
>> If we keep power for suspend on a host for dw_mmc, don't disable vmmc-supply
>> regulator when suspending the host.
>
> I have a trivial comment.
> It would be better to add some macro for checking MMC_PM_KEEP_POWER.
> And I just wonder how the problem is silent. Origin code has stood up somewhat long.
> Did you see?
>
> Acked-by: Seungwon Jeon <tgih.jun@samsung.com>
>
> Thanks,
> Seungwon Jeon
>
>>
>> Signed-off-by: Derek Basehore <dbasehore@chromium.org>
>> Reviewed-by: Doug Anderson <dianders@chromium.org>
>> ---
>>  drivers/mmc/host/dw_mmc.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)

Though I reviewed this originally, I'd actually propose not landing it.

I've spent more time with the regulator code in dw_mmc and currently
believe that the regulators should be enabled / disabled in
MMC_POWER_UP / MMC_POWER_OFF.  When we do that then the mmc core will
handle MMC_PM_KEEP_POWER.  You can see my current thoughts on this in
<https://gerrit.chromium.org/gerrit/#/c/65263/>.  I will try to post
that upstream before too long, but feel free to let me know any
comments.

-Doug
--
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 mbox

Patch

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index ee5f167..bf82d7c 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -2474,7 +2474,7 @@  int dw_mci_suspend(struct dw_mci *host)
 		}
 	}
 
-	if (host->vmmc)
+	if (host->vmmc && !(host->pdata->pm_caps & MMC_PM_KEEP_POWER))
 		regulator_disable(host->vmmc);
 
 	return 0;
@@ -2485,7 +2485,7 @@  int dw_mci_resume(struct dw_mci *host)
 {
 	int i, ret;
 
-	if (host->vmmc) {
+	if (host->vmmc && !(host->pdata->pm_caps & MMC_PM_KEEP_POWER)) {
 		ret = regulator_enable(host->vmmc);
 		if (ret) {
 			dev_err(host->dev,