diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mmc/host/omap_hsmmc.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index e0808d4a7681..47adb161d3ad 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c | |||
@@ -244,6 +244,13 @@ static int omap_hsmmc_set_power(struct device *dev, int slot, int power_on, | |||
244 | */ | 244 | */ |
245 | if (!host->vcc) | 245 | if (!host->vcc) |
246 | return 0; | 246 | return 0; |
247 | /* | ||
248 | * With DT, never turn OFF the regulator. This is because | ||
249 | * the pbias cell programming support is still missing when | ||
250 | * booting with Device tree | ||
251 | */ | ||
252 | if (of_have_populated_dt() && !vdd) | ||
253 | return 0; | ||
247 | 254 | ||
248 | if (mmc_slot(host).before_set_reg) | 255 | if (mmc_slot(host).before_set_reg) |
249 | mmc_slot(host).before_set_reg(dev, slot, power_on, vdd); | 256 | mmc_slot(host).before_set_reg(dev, slot, power_on, vdd); |
@@ -1536,7 +1543,13 @@ static void omap_hsmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | |||
1536 | * of external transceiver; but they all handle 1.8V. | 1543 | * of external transceiver; but they all handle 1.8V. |
1537 | */ | 1544 | */ |
1538 | if ((OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET) && | 1545 | if ((OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET) && |
1539 | (ios->vdd == DUAL_VOLT_OCR_BIT)) { | 1546 | (ios->vdd == DUAL_VOLT_OCR_BIT) && |
1547 | /* | ||
1548 | * With pbias cell programming missing, this | ||
1549 | * can't be allowed when booting with device | ||
1550 | * tree. | ||
1551 | */ | ||
1552 | (!of_have_populated_dt())) { | ||
1540 | /* | 1553 | /* |
1541 | * The mmc_select_voltage fn of the core does | 1554 | * The mmc_select_voltage fn of the core does |
1542 | * not seem to set the power_mode to | 1555 | * not seem to set the power_mode to |