Skip to content

Commit

Permalink
omap_hsmmc: Allow for power saving without going off
Browse files Browse the repository at this point in the history
An eMMC may be always powered on, so that the lowest
power saving state possible is sleeping. Add a field
to the platform data to indicate that.

Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
  • Loading branch information
Adrian Hunter authored and Tony Lindgren committed Feb 15, 2010
1 parent ce6f001 commit 1df58db
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 0 deletions.
3 changes: 3 additions & 0 deletions arch/arm/mach-omap2/hsmmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
if (c->power_saving)
mmc->slots[0].power_saving = 1;

if (c->no_off)
mmc->slots[0].no_off = 1;

/* NOTE: MMC slots should have a Vcc regulator set up.
* This may be from a TWL4030-family chip, another
* controllable regulator, or a fixed supply.
Expand Down
1 change: 1 addition & 0 deletions arch/arm/mach-omap2/hsmmc.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ struct omap2_hsmmc_info {
bool cover_only; /* No card detect - just cover switch */
bool nonremovable; /* Nonremovable e.g. eMMC */
bool power_saving; /* Try to sleep or power off when possible */
bool no_off; /* power_saving and power is not to go off */
int gpio_cd; /* or -EINVAL */
int gpio_wp; /* or -EINVAL */
char *name; /* or NULL for default */
Expand Down
3 changes: 3 additions & 0 deletions arch/arm/plat-omap/include/plat/mmc.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ struct omap_mmc_platform_data {
/* Try to sleep or power off when possible */
unsigned power_saving:1;

/* If using power_saving and the MMC power is not to go off */
unsigned no_off:1;

int switch_pin; /* gpio (card detect) */
int gpio_wp; /* gpio (write protect) */

Expand Down
6 changes: 6 additions & 0 deletions drivers/mmc/host/omap_hsmmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1656,6 +1656,9 @@ static int omap_hsmmc_disabled_to_sleep(struct omap_hsmmc_host *host)
dev_dbg(mmc_dev(host->mmc), "DISABLED -> %s\n",
host->dpm_state == CARDSLEEP ? "CARDSLEEP" : "REGSLEEP");

if (mmc_slot(host).no_off)
return 0;

if ((host->mmc->caps & MMC_CAP_NONREMOVABLE) ||
mmc_slot(host).card_detect ||
(mmc_slot(host).get_cover_state &&
Expand All @@ -1671,6 +1674,9 @@ static int omap_hsmmc_sleep_to_off(struct omap_hsmmc_host *host)
if (!mmc_try_claim_host(host->mmc))
return 0;

if (mmc_slot(host).no_off)
return 0;

if (!((host->mmc->caps & MMC_CAP_NONREMOVABLE) ||
mmc_slot(host).card_detect ||
(mmc_slot(host).get_cover_state &&
Expand Down

0 comments on commit 1df58db

Please sign in to comment.