[PATCH v5 2/2] mmc: dw_mmc: force setup bus if active slots exist

Eddie Cai eddie.cai.linux at gmail.com
Sun Feb 12 22:32:36 PST 2017


Hi Heiko

I guess you may lost this patch. We need it to prevent crash when boot
up RK3288.

2017-01-13 10:59 GMT+08:00 Shawn Lin <shawn.lin at rock-chips.com>:
> From: Ziyuan Xu <xzy.xu at rock-chips.com>
>
> 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")
> Fixes: df9bcc2bc0a1 ("mmc: dw_mmc: add missing codes for runtime resume")
> cc: <stable at vger.kernel.org>
> Reported-by: Randy Li <randy.li at rock-chips.com>
> Reported-by: S. Gilles <sgilles at math.umd.edu>
> Signed-off-by: Ziyuan Xu <xzy.xu at rock-chips.com>
> Signed-off-by: Shawn Lin <shawn.lin at rock-chips.com>
>
> ---
>
> Changes in v5:
> - rebase in order to skip spamming log
>
> 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 | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index dc58ec3..0914d53 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -3367,10 +3367,11 @@ 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, true);
> -               }
> +
> +               /* Force setup bus to guarantee available clock output */
> +               dw_mci_setup_bus(slot, true, true);
>         }
>
>         /* Now that slots are all setup, we can enable card detect */
> --
> 1.9.1
>
>
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip



More information about the Linux-rockchip mailing list