Re: [PATCH] mmc: sdhci: add signal voltage switch in sdhci_resume_host

From: Adrian Hunter

Date: Fri May 22 2026 - 03:15:59 EST


On 20/05/2026 16:37, Jisheng Zhang 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 kicks off
> the runtime resume for system resume, so it benefits 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.
>
> Signed-off-by: Jisheng Zhang <jszhang@xxxxxxxxxx>

Needs a fixes tag, otherwise:

Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>


> ---
> 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));