[U-Boot] [PATCH 0/2] Update pbias and IO voltage in dra7 and am57 devices

The following patches update pbias and IO voltages in TI's dra7 and am57 devices.
Tested on: dra71x-evm, dra72x-evm, dra7xx-evm, dra76x-evm, am57xx-evm, am571-idk, am572-idk, am574-idk, am335x-evm.
Faiz Abbas (2): ARM: dts: dra7: Change pbias voltage to 3.3V mmc: omap_hsmmc: Set 3.3V for IO voltage
arch/arm/dts/dra7.dtsi | 2 +- drivers/mmc/omap_hsmmc.c | 21 ++++++++++----------- drivers/power/regulator/pbias_regulator.c | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-)

As per recent TRM[1], PBIAS cell on dra7 devices supports 3.3v and not 3.0v as documented earlier.
Update PBIAS regulator max voltage and the voltage written in the driver to reflect this.
[1] http://www.ti.com/lit/pdf/sprui30
Signed-off-by: Faiz Abbas faiz_abbas@ti.com --- arch/arm/dts/dra7.dtsi | 2 +- drivers/power/regulator/pbias_regulator.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/dts/dra7.dtsi b/arch/arm/dts/dra7.dtsi index 0f982d8b44..fd1aea0b1b 100644 --- a/arch/arm/dts/dra7.dtsi +++ b/arch/arm/dts/dra7.dtsi @@ -170,7 +170,7 @@ pbias_mmc_reg: pbias_mmc_omap5 { regulator-name = "pbias_mmc_omap5"; regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3000000>; + regulator-max-microvolt = <3300000>; }; };
diff --git a/drivers/power/regulator/pbias_regulator.c b/drivers/power/regulator/pbias_regulator.c index 4ed3c94e03..88dc9f273a 100644 --- a/drivers/power/regulator/pbias_regulator.c +++ b/drivers/power/regulator/pbias_regulator.c @@ -238,7 +238,7 @@ static int pbias_regulator_set_value(struct udevice *dev, int uV) if (rc) return rc;
- if (uV == 3000000) + if (uV == 3300000) reg |= p->vmode; else if (uV == 1800000) reg &= ~p->vmode;

Pbias voltage should match the IO voltage set for the SD card. With the latest pbias change to 3.3V, update the capabilities and IO voltages settings to 3.3V.
Signed-off-by: Faiz Abbas faiz_abbas@ti.com --- drivers/mmc/omap_hsmmc.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c index 826a39fad7..133cdc1352 100644 --- a/drivers/mmc/omap_hsmmc.c +++ b/drivers/mmc/omap_hsmmc.c @@ -264,7 +264,7 @@ static unsigned char mmc_board_init(struct mmc *mmc) !CONFIG_IS_ENABLED(DM_REGULATOR) /* PBIAS config needed for MMC1 only */ if (mmc_get_blk_desc(mmc)->devnum == 0) - vmmc_pbias_config(LDO_VOLT_3V0); + vmmc_pbias_config(LDO_VOLT_3V3); #endif
return 0; @@ -418,7 +418,7 @@ static void omap_hsmmc_conf_bus_power(struct mmc *mmc, uint signal_voltage)
switch (signal_voltage) { case MMC_SIGNAL_VOLTAGE_330: - hctl |= SDVS_3V0; + hctl |= SDVS_3V3; break; case MMC_SIGNAL_VOLTAGE_180: hctl |= SDVS_1V8; @@ -514,10 +514,9 @@ static int omap_hsmmc_set_signal_voltage(struct mmc *mmc) return -EINVAL;
if (mmc->signal_voltage == MMC_SIGNAL_VOLTAGE_330) { - /* Use 3.0V rather than 3.3V */ - mv = 3000; - capa_mask = VS30_3V0SUP; - palmas_ldo_volt = LDO_VOLT_3V0; + mv = 3300; + capa_mask = VS33_3V3SUP; + palmas_ldo_volt = LDO_VOLT_3V3; } else if (mmc->signal_voltage == MMC_SIGNAL_VOLTAGE_180) { capa_mask = VS18_1V8SUP; palmas_ldo_volt = LDO_VOLT_1V8; @@ -556,13 +555,13 @@ static uint32_t omap_hsmmc_set_capabilities(struct mmc *mmc) val = readl(&mmc_base->capa);
if (priv->controller_flags & OMAP_HSMMC_SUPPORTS_DUAL_VOLT) { - val |= (VS30_3V0SUP | VS18_1V8SUP); + val |= (VS33_3V3SUP | VS18_1V8SUP); } else if (priv->controller_flags & OMAP_HSMMC_NO_1_8_V) { - val |= VS30_3V0SUP; + val |= VS33_3V3SUP; val &= ~VS18_1V8SUP; } else { val |= VS18_1V8SUP; - val &= ~VS30_3V0SUP; + val &= ~VS33_3V3SUP; }
writel(val, &mmc_base->capa); @@ -842,11 +841,11 @@ static int omap_hsmmc_init_setup(struct mmc *mmc)
#if CONFIG_IS_ENABLED(DM_MMC) reg_val = omap_hsmmc_set_capabilities(mmc); - omap_hsmmc_conf_bus_power(mmc, (reg_val & VS30_3V0SUP) ? + omap_hsmmc_conf_bus_power(mmc, (reg_val & VS33_3V3SUP) ? MMC_SIGNAL_VOLTAGE_330 : MMC_SIGNAL_VOLTAGE_180); #else writel(DTW_1_BITMODE | SDBP_PWROFF | SDVS_3V0, &mmc_base->hctl); - writel(readl(&mmc_base->capa) | VS30_3V0SUP | VS18_1V8SUP, + writel(readl(&mmc_base->capa) | VS33_3V3SUP | VS18_1V8SUP, &mmc_base->capa); #endif

Hi,
On 28/03/19 2:47 PM, Faiz Abbas wrote:
The following patches update pbias and IO voltages in TI's dra7 and am57 devices.
Tested on: dra71x-evm,
One more patch is required for dra71-evm. Will send as part of v2.
dra72x-evm, dra7xx-evm, dra76x-evm, am57xx-evm,
am571-idk, am572-idk, am574-idk, am335x-evm.
Faiz Abbas (2): ARM: dts: dra7: Change pbias voltage to 3.3V mmc: omap_hsmmc: Set 3.3V for IO voltage
arch/arm/dts/dra7.dtsi | 2 +- drivers/mmc/omap_hsmmc.c | 21 ++++++++++----------- drivers/power/regulator/pbias_regulator.c | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-)
Thanks, Faiz
participants (1)
-
Faiz Abbas