On 21/08/17 21:02, Zhoujie Wu wrote: > Xenon sdh controller requests proper SD bus voltage select > bits programmed even with vmmc power supply. Any reserved > value(100b-000b) programmed in this field will lead to controller > ignore SD bus power bit and keep its value at zero. > Add set_power callback to handle this. > > Signed-off-by: Zhoujie Wu <zjwu@xxxxxxxxxxx> Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > Updated according to Jisheng Zhang's comment. > drivers/mmc/host/sdhci-xenon.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c > index edd4d915..a4be2fd 100644 > --- a/drivers/mmc/host/sdhci-xenon.c > +++ b/drivers/mmc/host/sdhci-xenon.c > @@ -210,8 +210,27 @@ static void xenon_set_uhs_signaling(struct sdhci_host *host, > sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2); > } > > +static void xenon_set_power(struct sdhci_host *host, unsigned char mode, > + unsigned short vdd) > +{ > + struct mmc_host *mmc = host->mmc; > + u8 pwr = host->pwr; > + > + sdhci_set_power_noreg(host, mode, vdd); > + > + if (host->pwr == pwr) > + return; > + > + if (host->pwr == 0) > + vdd = 0; > + > + if (!IS_ERR(mmc->supply.vmmc)) > + mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); > +} > + > static const struct sdhci_ops sdhci_xenon_ops = { > .set_clock = sdhci_set_clock, > + .set_power = xenon_set_power, > .set_bus_width = sdhci_set_bus_width, > .reset = xenon_reset, > .set_uhs_signaling = xenon_set_uhs_signaling, > -- 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