lkml.org 
[lkml]   [2013]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume
    Date
    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>
    ---
    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 7a5ce6a..be095b7 100644
    --- a/drivers/mmc/host/dw_mmc.c
    +++ b/drivers/mmc/host/dw_mmc.c
    @@ -2499,9 +2499,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


    \
     
     \ /
      Last update: 2013-07-10 23:44    [W:2.106 / U:22.880 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site