Message ID | 1503089284-29101-1-git-send-email-zjwu@marvell.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, 18 Aug 2017 13:48:04 -0700 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@marvell.com> > --- > drivers/mmc/host/sdhci-xenon.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c > index edd4d915..e82dc01 100644 > --- a/drivers/mmc/host/sdhci-xenon.c > +++ b/drivers/mmc/host/sdhci-xenon.c > @@ -210,8 +210,28 @@ static void xenon_set_uhs_signaling(struct sdhci_host *host, > sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2); > } > > + remove this extra blank line. > +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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 08/20/2017 11:11 PM, Jisheng Zhang wrote: > On Fri, 18 Aug 2017 13:48:04 -0700 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@marvell.com> >> --- >> drivers/mmc/host/sdhci-xenon.c | 20 ++++++++++++++++++++ >> 1 file changed, 20 insertions(+) >> >> diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c >> index edd4d915..e82dc01 100644 >> --- a/drivers/mmc/host/sdhci-xenon.c >> +++ b/drivers/mmc/host/sdhci-xenon.c >> @@ -210,8 +210,28 @@ static void xenon_set_uhs_signaling(struct sdhci_host *host, >> sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2); >> } >> >> + > remove this extra blank line. Thanks, updated the patch. >> +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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c index edd4d915..e82dc01 100644 --- a/drivers/mmc/host/sdhci-xenon.c +++ b/drivers/mmc/host/sdhci-xenon.c @@ -210,8 +210,28 @@ 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,
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@marvell.com> --- drivers/mmc/host/sdhci-xenon.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)