lkml.org 
[lkml]   [2017]   [Jan]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v4] mmc: dw_mmc: force setup bus if active slots exist
    From
    Date
    On 2017/1/5 15:23, Ziyuan Xu wrote:
    > It's necessary to setup bus if any slots are present.
    > - update clock after ctrl reset
    > - if the host has genpd node, we can guarantee the clock is available
    > before starting request. Otherwies, the clock register is reset once
    > power off the pd, and host can't output the active clock during
    > communication.
    >
    > fixes: e9ed8835e990 ("mmc: dw_mmc: add runtime PM callback")
    > Reported-by: Randy Li <randy.li@rock-chips.com>
    > Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
    >
    > ---
    > Hi guys,
    >
    > I found a similar issue on rk3399 platform, which has a genpd node for
    > SD card host. Power off-on pd will reset the registers to a default
    > value (ie. CLKENA), so that the host can't output the active clock
    > during communication.
    >

    Indeed, Caesar recently introduced all the genpd for rk3399 platform,
    so we need to restore them.

    > So we need to setup bus in rpm resume. It also wraps the update clock
    > behaviour which I did in V3.
    >
    > Thanks,
    > Ziyuan Xu
    >
    >
    > Changes in v4:
    > - update commit message
    > - fix SD host rpm resume can't work
    >
    > Changes in v3:
    > - only reset host with active slot.
    >
    > Changes in v2:
    > - update the commit message
    > - use dw_mci_reset instead of dw_mci_ctrl_reset
    >
    > drivers/mmc/host/dw_mmc.c | 6 +++---
    > 1 file changed, 3 insertions(+), 3 deletions(-)
    >
    > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
    > index b44306b..b6053b3 100644
    > --- a/drivers/mmc/host/dw_mmc.c
    > +++ b/drivers/mmc/host/dw_mmc.c
    > @@ -3354,10 +3354,10 @@ int dw_mci_runtime_resume(struct device *dev)
    >
    > if (!slot)
    > continue;
    > - if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
    > + if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER)
    > dw_mci_set_ios(slot->mmc, &slot->mmc->ios);
    > - dw_mci_setup_bus(slot, true);
    > - }
    > + /* Force setup bus to guarantee available clock output */
    > + dw_mci_setup_bus(slot, true);

    So the spamming message about

    "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n"

    will always be there, right? So you could append a new patch to shut
    up it as I think it's useless no matter for system pm or rpm to print
    it. How about?

    > }
    >
    > /* Now that slots are all setup, we can enable card detect */
    >


    --
    Best Regards
    Shawn Lin

    \
     
     \ /
      Last update: 2017-01-05 08:48    [W:2.655 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site