[PATCH] mmc: dw_mmc: update clock after ctrl reset in runtime resume

Shawn Lin shawn.lin at rock-chips.com
Mon Jan 2 22:59:03 PST 2017


Hi Ziyuan,

On 2017/1/3 14:46, Ziyuan Xu wrote:
> Immediately after reset, issue the command which sets
> update_clock_register_only bit, the card clock will restart.
>
> MMC_PM_KEEP_POWER is disabled for SD card and eMMC slots, so that they
> have no chance to invoke dw_mci_setup_bus for update clock behaviour.
> Let's consummate it.
>
> Fixes: e9ed883 ("mmc: dw_mmc: add runtime PM callback")
> Reported-by: Randy Li <randy.li at rock-chips.com>
> Signed-off-by: Ziyuan Xu <xzy.xu at rock-chips.com>
> ---
>  drivers/mmc/host/dw_mmc.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index b44306b..71715b4 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -3357,6 +3357,8 @@ int dw_mci_runtime_resume(struct device *dev)
>  		if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
>  			dw_mci_set_ios(slot->mmc, &slot->mmc->ios);
>  			dw_mci_setup_bus(slot, true);
> +		} else {
> +			mci_send_cmd(slot, SDMMC_CMD_UPD_CLK, 0);
>  		}
>  	}

Thanks for sending this, but I think the better fix we talked about
offlist may be...

--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -3324,7 +3324,7 @@ int dw_mci_runtime_resume(struct device *dev)
         if (ret)
                 goto err;

-       if (!dw_mci_ctrl_reset(host, SDMMC_CTRL_ALL_RESET_FLAGS)) {
+       if (!dw_mci_reset(host)) {
                 clk_disable_unprepare(host->ciu_clk);
                 ret = -ENODEV;
                 goto err;


otherwise there still some unhandled cases once the reset is failure.

>
>


-- 
Best Regards
Shawn Lin




More information about the Linux-rockchip mailing list