On Wed, Sep 16, 2020 at 09:01:20AM +0300, Adrian Hunter wrote: > On 15/09/20 9:03 am, AKASHI Takahiro wrote: > > Ben, Adrian, > > > > On Mon, Sep 14, 2020 at 11:08:14AM +0300, Adrian Hunter wrote: > >> On 14/09/20 9:40 am, AKASHI Takahiro wrote: > >>> Adrian, > >>> > >>> On Fri, Aug 21, 2020 at 05:09:01PM +0300, Adrian Hunter wrote: > >>>> 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 > >>> > >>> Do you mean that you want every platform driver who wants to support UHS-II > >>> to set NULL to start_signal_voltage_switch hook even if this hack is > >>> platform agnostic? > >> > >> No, I see UHS-II as a separate layer i.e. > >> > >> UHS-II host controller driver > >> | | > >> | v > >> | sdhci-uhs2 e.g. sdhci_uhs2_start_signal_voltage_switch > >> | | > >> v v > >> sdhci e.g. sdhci_start_signal_voltage_switch > >> > >> Most things should go through sdhci-uhs2 but not nessarily everything. > > > > What I meant by my previous comment is that we don't have to > > call any function, sdhci_uhs2_start_signal_voltage_switch in above example, > > for UHS-II cards in any case since it is always simply empty. > > Please treat the sdhci_uhs2_... host ops as functions for a UHS-II host > controller in either UHS-II or legacy mode. i.e. it is up to sdhci-uhs2.c to > call through to sdhci.c not the other way around. e.g. > > int sdhci_uhs2_start_signal_voltage_switch(blah) > { > if (sdhci_uhs2_mode(host)) > return 0; > return sdhci_start_signal_valtage_switch(blah); > } Okay, the remaining issue is to clarify the meaning of MMC_UHS2_SUPPORT. -Takhiro Akashi