Hi Ulf I have still a small question because I'm changing this driver: We have in sdhci_pxav3_runtime_suspend ret = sdhci_runtime_suspend_host(host); if (ret) return ret; clk_disable_unprepare(pxa->clk_io); if (!IS_ERR(pxa->clk_core)) clk_disable_unprepare(pxa->clk_core); and in the other driver like this one ret = sdhci_runtime_suspend_host(host); if (!sdhci_sdio_irq_enabled(host)) { imx_data->actual_clock = host->mmc->actual_clock; esdhc_pltfm_set_clock(host, 0); clk_disable_unprepare(imx_data->clk_per); clk_disable_unprepare(imx_data->clk_ipg); } clk_disable_unprepare(imx_data->clk_ahb); Now to be more funny we have int sdhci_runtime_suspend_host(struct sdhci_host *host) { unsigned long flags; mmc_retune_timer_stop(host->mmc); if (host->tuning_mode != SDHCI_TUNING_MODE_3) mmc_retune_needed(host->mmc); spin_lock_irqsave(&host->lock, flags); host->ier &= SDHCI_INT_CARD_INT; sdhci_writel(host, host->ier, SDHCI_INT_ENABLE); sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE); spin_unlock_irqrestore(&host->lock, flags); synchronize_hardirq(host->irq); spin_lock_irqsave(&host->lock, flags); host->runtime_suspended = true; spin_unlock_irqrestore(&host->lock, flags); return 0; } Anyway. What we need to do with the clock in general if we have a fail before? Michael On Wed, Jan 3, 2018 at 5:58 PM, Michael Nazzareno Trimarchi <michael@xxxxxxxxxxxxxxxxxxxx> wrote: > Hi > > On Wed, Jan 3, 2018 at 5:56 PM, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote: >> On 3 January 2018 at 17:38, Michael Nazzareno Trimarchi >> <michael@xxxxxxxxxxxxxxxxxxxx> wrote: >>> Hi >>> >>> On Wed, Jan 3, 2018 at 5:26 PM, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote: >>>> On 21 December 2017 at 14:22, Michael Trimarchi >>>> <michael@xxxxxxxxxxxxxxxxxxxx> wrote: >>>>> mmc clock can be stopped during runtime suspend and restart during runtime >>>>> resume. This let us know to not have any clock running and this reduce >>>>> the EMI of the device when the bus is not in use >>>>> >>>>> Signed-off-by: Michael Trimarchi <michael@xxxxxxxxxxxxxxxxxxxx> >>>>> --- >>>>> drivers/mmc/host/sdhci-esdhc-imx.c | 5 +++++ >>>>> 1 file changed, 5 insertions(+) >>>>> >>>>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c >>>>> index 7123ef9..9a5e96f 100644 >>>>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c >>>>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c >>>>> @@ -196,6 +196,7 @@ struct pltfm_imx_data { >>>>> struct clk *clk_ipg; >>>>> struct clk *clk_ahb; >>>>> struct clk *clk_per; >>>>> + unsigned int actual_clock; >>>>> enum { >>>>> NO_CMD_PENDING, /* no multiblock command pending*/ >>>>> MULTIBLK_IN_PROCESS, /* exact multiblock cmd in process */ >>>>> @@ -1346,6 +1347,9 @@ static int sdhci_esdhc_runtime_suspend(struct device *dev) >>>>> >>>>> ret = sdhci_runtime_suspend_host(host); >>>>> >>>>> + imx_data->actual_clock = host->mmc->actual_clock; >>>>> + esdhc_pltfm_set_clock(host, 0); >>>> >>>> I guess want the clock to stay on "if sdhci_sdio_irq_enabled(host)". >>>> So you should probably move the above inside the below if statement. >>>> >>> >>> Well I'm not quite sure about it. Some wifi chipset has the wakeup >>> interrupt on external gpio >>> and someone wakeup from DAT1. Why clock should be required? >> >> The clock should not be needed when using external GPIO (also >> described as an out-band IRQ/wakeup), but from DAT1. >> > > Ok, I will re-post new patches > >> When sdhci_sdio_irq_enabled() returns true, that *should* indicate >> that DAT1 is used. Although, there may be reasons to re-visit this >> later, because the hole SDIO irq thing around wakeups for sdhci, is >> being reworked by Adrian [1]. > > I will take a look on this post > > Regards > > Michael > >> >>> >>> Anyway I should even rebalance resume. >> >> Yes. >> >> [...] >> >> Kind regards >> Uffe >> >> [1] >> https://www.spinics.net/lists/linux-mmc/msg47512.html -- | Michael Nazzareno Trimarchi Amarula Solutions BV | | COO - Founder Cruquiuskade 47 | | +31(0)851119172 Amsterdam 1018 AM NL | | [`as] http://www.amarulasolutions.com | -- 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