Doug, On Wed, Nov 19, 2014 at 10:51 AM, Doug Anderson <dianders@xxxxxxxxxxxx> wrote: > Since the dw_mmc driver was first added to Linux it's had a TODO in it > that we should turn off the card clock during suspend. I have no idea > for sure why it wasn't done originally, but if I had to guess I'd > guess it was related to the lack of a common clock framework. Let's > do it now. > > There is no reason for the card clock to be left on during suspend and > most systems will eventually turn it off anyway (when whole clock > trees are disabled). However, it's good to be explicit that it's > disabled at the time that the MMC subsystem is disabled. Should the bus clock (biu) be disabled as well? > This actually fixes a bug on Rockchip rk3288 where an SDIO card wakes > the system back up during suspend. > > Signed-off-by: Doug Anderson <dianders@xxxxxxxxxxxx> > --- > 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 5a37c33..c448159 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -2825,11 +2825,10 @@ EXPORT_SYMBOL(dw_mci_remove); > > > #ifdef CONFIG_PM_SLEEP > -/* > - * TODO: we should probably disable the clock to the card in the suspend path. > - */ > int dw_mci_suspend(struct dw_mci *host) > { > + clk_disable(host->ciu_clk); I think you need to check for IS_ERR(host->ciu_clk) since the clock is optional. Also, maybe disable_unprepare instead of just disable? > @@ -2838,6 +2837,8 @@ int dw_mci_resume(struct dw_mci *host) > { > int i, ret; > > + clk_enable(host->ciu_clk); Check return value? -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html