diff options
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/omap_hsmmc.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index d2fad587f371..af374771bed0 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c | |||
@@ -347,7 +347,14 @@ static int omap_hsmmc_23_set_sleep(struct device *dev, int slot, int sleep, | |||
347 | err = regulator_set_mode(host->vcc, mode); | 347 | err = regulator_set_mode(host->vcc, mode); |
348 | if (err) | 348 | if (err) |
349 | return err; | 349 | return err; |
350 | return regulator_set_mode(host->vcc_aux, mode); | 350 | |
351 | if (!mmc_slot(host).vcc_aux_disable_is_sleep) | ||
352 | return regulator_set_mode(host->vcc_aux, mode); | ||
353 | |||
354 | if (sleep) | ||
355 | return regulator_disable(host->vcc_aux); | ||
356 | else | ||
357 | return regulator_enable(host->vcc_aux); | ||
351 | } | 358 | } |
352 | 359 | ||
353 | static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata) | 360 | static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata) |
@@ -1982,6 +1989,13 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) | |||
1982 | else | 1989 | else |
1983 | mmc->ops = &omap_hsmmc_ops; | 1990 | mmc->ops = &omap_hsmmc_ops; |
1984 | 1991 | ||
1992 | /* | ||
1993 | * If regulator_disable can only put vcc_aux to sleep then there is | ||
1994 | * no off state. | ||
1995 | */ | ||
1996 | if (mmc_slot(host).vcc_aux_disable_is_sleep) | ||
1997 | mmc_slot(host).no_off = 1; | ||
1998 | |||
1985 | mmc->f_min = 400000; | 1999 | mmc->f_min = 400000; |
1986 | mmc->f_max = 52000000; | 2000 | mmc->f_max = 52000000; |
1987 | 2001 | ||