On 1 August 2014 08:08, Chuanxiao Dong <chuanxiao.dong@xxxxxxxxx> wrote: > Even eMMC card can support 3.3v to 1.2v vccq in DDR, but not all > host controller can support this, like some of the SDHCI host > which connect to an eMMC device. Some of these host controller > still needs to use 1.8v vccq for supporting DDR mode. > > If a host controller cannot support 3.3v for DDR, try 1.8v. > > Signed-off-by: Chuanxiao Dong <chuanxiao.dong@xxxxxxxxx> > Signed-off-by: Yunpeng Gao <yunpeng.gao@xxxxxxxxx> > --- > drivers/mmc/core/mmc.c | 19 +++++++++++++++++++ > include/linux/mmc/host.h | 1 + > 2 files changed, 20 insertions(+) > > diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c > index 793c6f7..13a5b24 100644 > --- a/drivers/mmc/core/mmc.c > +++ b/drivers/mmc/core/mmc.c > @@ -1000,6 +1000,25 @@ static int mmc_select_hs_ddr(struct mmc_card *card) > return err; > } > > + /* > + * Even eMMC card can support 3.3v to 1.2v vccq, but not all > + * host controller can support this, like some of the SDHCI > + * controller which connect to an eMMC device. Some of these > + * host controller still needs to use 1.8v vccq for supporting > + * DDR mode. > + * > + * If a host controller cannot support 3.3v for DDR, try 1.8v > + */ > + if (unlikely(host->caps2 & MMC_CAP2_NO_3_3V_DDR)) { > + if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200_1_8V) { > + err = __mmc_set_signal_voltage(host, > + MMC_SIGNAL_VOLTAGE_180); > + if (err) > + return err; > + } else > + return -EOPNOTSUPP; > + } I am wondering if we could try an another approach while changing signal voltage for (e)MMC. Simply start by trying with 1.2V, then 1.8V and then 3.3V. Obviously we shouldn't try with something that isn't supported, which card->mmc_avail_type tells us about. I realize that it will mean a change in behaviour and depending on how hosts are handling signal voltage, this is a bit uncertain if it would work. Still I feel it would be the right approach. Can we give at shot? Kind regards Uffe -- 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