Re: [PATCH v2] mmc: sdhci: add signal voltage switch in sdhci_resume_host
From: Ulf Hansson
Date: Fri May 29 2026 - 11:09:25 EST
On Sun, May 24, 2026 at 4:34 AM Jisheng Zhang <jszhang@xxxxxxxxxx> wrote:
>
> I met one suspend/resume issue with sdr104 capable sdio wifi card (with
> "keep-power-in-suspend" set in DT property):
> After resuming from suspend to ram, the sdio wifi card stops working.
> Further debug shows that although ios shows the sdio card is at sdr104
> mode, the voltage is still at 3V3. This is due to missing the calling
> of ->start_signal_voltage_switch() in sdhci_resume_host().
>
> Fix this issue by adding ->start_signal_voltage_switch() in
> sdhci_resume_host(). This also matches what we do for
> sdhci_runtime_resume_host().
>
> Then the question is: why this issue hasn't reported and fixed for so
> long time. IMHO, several reasons: Some host controllers just kick off
> the runtime resume for system resume, so they benefit from the well
> supported runtime pm code; Some platforms just use the old sdio wifi
> card which doesn't need signal voltage switch at all, the default
> voltage is 3v3 after resuming.
>
> Fixes: 6308d2905bd3 ("mmc: sdhci: add quirk for keeping card power during suspend")
> Signed-off-by: Jisheng Zhang <jszhang@xxxxxxxxxx>
> Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
Applied for fixes and by adding a stable tag, thanks!
Kind regards
Uffe
> ---
>
> since v1:
> - add Adrian's Acked-by
> - add Fixes tag
>
> drivers/mmc/host/sdhci.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index 605be55f8d2d..e3bf901b10aa 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -3836,6 +3836,7 @@ int sdhci_resume_host(struct sdhci_host *host)
> host->pwr = 0;
> host->clock = 0;
> host->reinit_uhs = true;
> + mmc->ops->start_signal_voltage_switch(mmc, &mmc->ios);
> mmc->ops->set_ios(mmc, &mmc->ios);
> } else {
> sdhci_init(host, (mmc->pm_flags & MMC_PM_KEEP_POWER));
> --
> 2.53.0