All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomasz Figa <tomasz.figa@gmail.com>
To: Doug Anderson <dianders@chromium.org>
Cc: Chris Ball <cjb@laptop.org>, Olof Johansson <olof@lixom.net>,
	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>,
	linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 1/4] mmc: dw_mmc: Invalidate cache of current_speed after suspend/resume
Date: Tue, 06 Aug 2013 23:58:49 +0200	[thread overview]
Message-ID: <4496642.gd8AClQe6R@flatron> (raw)
In-Reply-To: <1375825071-20922-2-git-send-email-dianders@chromium.org>

On Tuesday 06 of August 2013 14:37:48 Doug Anderson wrote:
> The dw_mmc driver keeps a cache of the current slot->clock in order to
> avoid doing a whole lot of work every time set_ios() is called.
> However, after suspend/resume the register values are bogus so we need
> to ensure that the cached value is invalidated.
> 
> In many cases we got by without this since the core mmc code fiddles
> with the clock a lot.  If we've got a card present we're probably
> running it at something like 50MHz and the core will temporarily
> switch us to 400kHz after resume.  One case that didn't work (for me)
> is the case of having no card in the slot.  The slot is initted to
> 400kHz at boot time.  After suspend/resume the slot thinks it's still
> at 400kHz (due to the cache) so doesn't adjust timing.  When it tries
> to send the command at probe time it just times out and gets left in a
> bad state.
> 
> Invalidating the current_speed also means that we don't need to call:
>   dw_mci_setup_bus(slot, true);
> ...to force an update of the clock in the case when the slot was left
> powered.
> 
> Signed-off-by: Doug Anderson <dianders@chromium.org>
> ---
> Changes in v4: None
> Changes in v3: None
> Changes in v2:
> - Fix typo (some -> come)
> - Use ~0 instead of 0xFFFFFFFF; add comment about value
> 
>  drivers/mmc/host/dw_mmc.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index ee5f167..13a363c 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -2511,13 +2511,19 @@ int dw_mci_resume(struct dw_mci *host)
>  		   DW_MCI_ERROR_FLAGS | SDMMC_INT_CD);
>  	mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE);
> 
> +	/*
> +	 * Invalidate the 'current_speed' value since CLKDIV has come up 
in
> +	 * default state and our cache is incorrect; set to something we 
know
> +	 * slot->clock won't be.
> +	 */
> +	host->current_speed = ~0;
> +
>  	for (i = 0; i < host->num_slots; i++) {
>  		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_setup_bus(slot, true);
>  		}
> 
>  		ret = mmc_resume_host(host->slot[i]->mmc);

Reviewed-by: Tomasz Figa <t.figa@samsung.com>

Best regards,
Tomasz


  reply	other threads:[~2013-08-06 21:58 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 [this message]
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         ` [PATCH v5 3/4] mmc: dw_mmc: Always setup the bus after suspend/resume Doug Anderson
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=4496642.gd8AClQe6R@flatron \
    --to=tomasz.figa@gmail.com \
    --cc=a.kesavan@samsung.com \
    --cc=alim.akhtar@samsung.com \
    --cc=cjb@laptop.org \
    --cc=dianders@chromium.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 \
    /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.