All of lore.kernel.org
 help / color / mirror / Atom feed
From: Doug Anderson <dianders@chromium.org>
To: Chris Ball <cjb@laptop.org>
Cc: Jaehoon Chung <jh80.chung@samsung.com>,
	Seungwon Jeon <tgih.jun@samsung.com>,
	James Hogan <james.hogan@imgtec.com>,
	Grant Grundler <grundler@chromium.org>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Abhilash Kesavan <a.kesavan@samsung.com>,
	Tomasz Figa <tomasz.figa@gmail.com>,
	Olof Johansson <olof@lixom.net>,
	Doug Anderson <dianders@chromium.org>,
	linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v5 3/4] mmc: dw_mmc: Always setup the bus after suspend/resume
Date: Fri,  9 Aug 2013 09:33:19 -0700	[thread overview]
Message-ID: <1376066000-5495-4-git-send-email-dianders@chromium.org> (raw)
In-Reply-To: <1376066000-5495-1-git-send-email-dianders@chromium.org>

After suspend/resume all of the dw_mmc registers are reset to
defaults.  We restore most of them, but specifically don't setup the
clock registers after resume unless we've got a powered card.  Things
still work because the core will eventually call set_ios() and we'll
set things up.

There doesn't seem to be any reason that I can see _not_ to set things
up after resume.  Restoring this state makes the code easier to reason
about and should help prevent bugs.  It also allows us to do a
register dump before and after suspend/resume to confirm that we've
set things up OK.

I examined the state of the dw_mmc instance before and after suspend
after this patch.  I had no card inserted in an SD card slot.

Before this patch, differences were:
* CLKDIV (0x08)
* CLKENA (0x10)
* TMOUT (0x14)
* CMD (0x2C) - difference is not important
* CLKSEL (0x9C - exynos specific)

After this patch, only TMOUT was different.  I have a separate patch
for that.

Signed-off-by: Doug Anderson <dianders@chromium.org>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
---
Changes in v5: None
Changes in v4: None
Changes in v3: None
Changes in v2: None

 drivers/mmc/host/dw_mmc.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index e614b03..3d1ee2d 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -2522,9 +2522,7 @@ int dw_mci_resume(struct dw_mci *host)
 		struct dw_mci_slot *slot = host->slot[i];
 		if (!slot)
 			continue;
-		if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
-			dw_mci_set_ios(slot->mmc, &slot->mmc->ios);
-		}
+		dw_mci_set_ios(slot->mmc, &slot->mmc->ios);
 
 		ret = mmc_resume_host(host->slot[i]->mmc);
 		if (ret < 0)
-- 
1.8.3


  parent reply	other threads:[~2013-08-09 16:33 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-09 17:31 [PATCH 0/5] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-07-09 17:31 ` Doug Anderson
2013-07-09 17:31 ` [PATCH 1/5] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-07-09 17:31 ` [PATCH 2/5] mmc: dw_mmc: Add suspend/resume callbacks; disable irq during suspend Doug Anderson
2013-07-09 21:17   ` James Hogan
2013-07-09 21:31     ` Doug Anderson
2013-07-09 17:31 ` [PATCH 3/5] mmc: dw_mmc: Add exynos resume callback to clear WAKEUP_INT Doug Anderson
2013-07-09 17:31   ` Doug Anderson
2013-07-09 17:31   ` Doug Anderson
2013-07-09 19:09   ` Doug Anderson
2013-07-09 19:09     ` Doug Anderson
2013-07-09 19:09     ` Doug Anderson
2013-07-11  0:43     ` Grant Grundler
2013-07-11  0:43       ` Grant Grundler
2013-07-11  0:43       ` Grant Grundler
2013-07-09 17:31 ` [PATCH 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-07-09 17:31 ` [PATCH 5/5] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-07-09 23:19 ` [PATCH v2 0/5] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-07-09 23:19   ` Doug Anderson
2013-07-09 23:19   ` [PATCH v2 1/5] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-07-09 23:19   ` [PATCH v2 2/5] mmc: dw_mmc: Add suspend_noirq/resume_noirq callbacks for dw_mmc-pltfm Doug Anderson
2013-07-10  8:37     ` James Hogan
2013-07-10  8:37       ` James Hogan
2013-07-10 15:08       ` Doug Anderson
2013-07-09 23:19   ` [PATCH v2 3/5] mmc: dw_mmc: Add exynos resume_noirq callback to clear WAKEUP_INT Doug Anderson
2013-07-09 23:19     ` Doug Anderson
2013-07-10 14:54     ` Seungwon Jeon
2013-07-10 14:54       ` Seungwon Jeon
2013-07-10 15:05       ` Doug Anderson
2013-07-10 15:05         ` Doug Anderson
2013-07-10 15:05         ` Doug Anderson
2013-07-15 12:09         ` Seungwon Jeon
2013-07-15 12:09           ` Seungwon Jeon
2013-07-31 16:18           ` Doug Anderson
2013-07-31 16:18             ` Doug Anderson
2013-07-31 16:18             ` Doug Anderson
2013-08-06 21:36             ` Doug Anderson
2013-08-06 21:36               ` Doug Anderson
2013-08-06 21:36               ` Doug Anderson
2013-07-09 23:19   ` [PATCH v2 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-07-09 23:19   ` [PATCH v2 5/5] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-07-10 14:54     ` Seungwon Jeon
2013-07-10 15:42   ` [PATCH v3 0/5] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-07-10 15:42     ` Doug Anderson
2013-07-10 15:42     ` [PATCH v3 1/5] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-07-10 15:42     ` [PATCH v3 2/5] mmc: dw_mmc: Add suspend_noirq/resume_noirq callbacks for dw_mmc-pltfm Doug Anderson
2013-07-15 12:09       ` Seungwon Jeon
2013-08-06 21:32         ` Doug Anderson
2013-07-10 15:42     ` [PATCH v3 3/5] mmc: dw_mmc: Add exynos resume_noirq callback to clear WAKEUP_INT Doug Anderson
2013-07-10 15:42       ` Doug Anderson
2013-07-16  1:36       ` Jaehoon Chung
2013-07-16  1:36         ` Jaehoon Chung
2013-07-10 15:42     ` [PATCH v3 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-07-10 15:42     ` [PATCH v3 5/5] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-08-06 21:37     ` [PATCH v4 0/4] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-08-06 21:37       ` Doug Anderson
2013-08-06 21:37       ` [PATCH v4 1/4] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-08-06 21:58         ` Tomasz Figa
2013-08-08  5:14         ` Jaehoon Chung
2013-08-09 13:32         ` Seungwon Jeon
2013-08-09 15:22           ` Doug Anderson
2013-08-12  7:14             ` Seungwon Jeon
2013-08-22  0:54               ` Doug Anderson
2013-08-22 16:25                 ` Doug Anderson
2013-08-06 21:37       ` [PATCH v4 2/4] mmc: dw_mmc: Add exynos resume_noirq callback to clear WAKEUP_INT Doug Anderson
2013-08-06 21:37         ` Doug Anderson
2013-08-06 21:58         ` Tomasz Figa
2013-08-06 21:58           ` Tomasz Figa
2013-08-06 22:09           ` Doug Anderson
2013-08-06 22:09             ` Doug Anderson
2013-08-06 22:09             ` Doug Anderson
2013-08-06 22:20             ` Tomasz Figa
2013-08-06 22:20               ` Tomasz Figa
2013-08-06 22:20               ` Tomasz Figa
2013-08-09 13:33         ` Seungwon Jeon
2013-08-09 13:33           ` Seungwon Jeon
2013-08-09 15:05           ` Doug Anderson
2013-08-09 15:05             ` Doug Anderson
2013-08-09 15:05             ` Doug Anderson
2013-08-06 21:37       ` [PATCH v4 3/4] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
2013-08-06 22:01         ` Tomasz Figa
2013-08-09 13:35         ` Seungwon Jeon
2013-08-09 15:43           ` Doug Anderson
2013-08-12  7:20             ` Seungwon Jeon
2013-08-06 21:37       ` [PATCH v4 4/4] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-08-06 22:02         ` Tomasz Figa
2013-08-09 16:33       ` [PATCH v5 0/4] mmc: dw_mmc: fixes for suspend/resume on exynos Doug Anderson
2013-08-09 16:33         ` Doug Anderson
2013-08-09 16:33         ` [PATCH v5 1/4] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume Doug Anderson
2013-08-09 16:33         ` [PATCH v5 2/4] mmc: dw_mmc: Add exynos resume_noirq callback to clear WAKEUP_INT Doug Anderson
2013-08-09 16:33           ` Doug Anderson
2013-08-09 16:41           ` Fabio Estevam
2013-08-09 16:41             ` Fabio Estevam
2013-08-09 16:48             ` Doug Anderson
2013-08-09 16:48               ` Doug Anderson
2013-08-09 16:48               ` Doug Anderson
2013-08-12  7:21           ` Seungwon Jeon
2013-08-12  7:21             ` Seungwon Jeon
2013-08-09 16:33         ` Doug Anderson [this message]
2013-08-09 16:33         ` [PATCH v5 4/4] mmc: dw_mmc: Set timeout to max upon resume Doug Anderson
2013-08-21 11:48         ` [PATCH v5 0/4] mmc: dw_mmc: fixes for suspend/resume on exynos Seungwon Jeon
2013-08-21 11:48           ` Seungwon Jeon
2013-08-21 15:13           ` Doug Anderson
2013-08-21 15:13             ` Doug Anderson
2013-08-21 15:13             ` Doug Anderson

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=1376066000-5495-4-git-send-email-dianders@chromium.org \
    --to=dianders@chromium.org \
    --cc=a.kesavan@samsung.com \
    --cc=alim.akhtar@samsung.com \
    --cc=cjb@laptop.org \
    --cc=grundler@chromium.org \
    --cc=james.hogan@imgtec.com \
    --cc=jh80.chung@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=olof@lixom.net \
    --cc=tgih.jun@samsung.com \
    --cc=tomasz.figa@gmail.com \
    /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.