On 10/07/20 2:11 pm, Ben Chuang wrote: > From: AKASHI Takahiro <takahiro.akashi@xxxxxxxxxx> > > sdhci_start_signal_voltage_switch() should be called only in UHS-I mode, > and not for UHS-II mode. > > Signed-off-by: Ben Chuang <ben.chuang@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: AKASHI Takahiro <takahiro.akashi@xxxxxxxxxx> > --- > drivers/mmc/host/sdhci.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index 5511649946b9..7f2537648a08 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -2623,8 +2623,13 @@ int sdhci_start_signal_voltage_switch(struct mmc_host *mmc, > /* > * Signal Voltage Switching is only applicable for Host Controllers > * v3.00 and above. > + * But for UHS2, the signal voltage is supplied by vdd2 which is > + * already 1.8v so no voltage switch required. > */ > - if (host->version < SDHCI_SPEC_300) > + if (host->version < SDHCI_SPEC_300 || > + (IS_ENABLED(CONFIG_MMC_SDHCI_UHS2) && > + host->version >= SDHCI_SPEC_400 && > + host->mmc->flags & MMC_UHS2_SUPPORT)) Please look at hooking ->start_signal_voltage_switch() instead > return 0; > > ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); >