diff options
author | Denis Karpov <ext-denis.2.karpov@nokia.com> | 2009-09-22 19:44:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 10:39:35 -0400 |
commit | dd498effcfa6a196ba097adae3c5aa641115df88 (patch) | |
tree | f511fbd298255a97f690f5aaabb714719ef04c88 /arch | |
parent | 23d99bb923fc23aeb1086d60eb1c70602b4e2036 (diff) |
omap_hsmmc: support for deeper power saving states
Support for multi-level dynamic power saving states in omap_hsmmc
(ENABLED->DISABLED->OFF). In the "deepest" state (OFF) we switch off the
voltage regulators.
Signed-off-by: Denis Karpov <ext-denis.2.karpov@nokia.com>
Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com>
Acked-by: Matt Fleming <matt@console-pimps.org>
Cc: Ian Molton <ian@mnementh.co.uk>
Cc: "Roberto A. Foglietta" <roberto.foglietta@gmail.com>
Cc: Jarkko Lavinen <jarkko.lavinen@nokia.com>
Cc: Denis Karpov <ext-denis.2.karpov@nokia.com>
Cc: Pierre Ossman <pierre@ossman.eu>
Cc: Philip Langdale <philipl@overt.org>
Cc: "Madhusudhan" <madhu.cr@ti.com>
Cc: <linux-mmc@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/mmc-twl4030.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap2/mmc-twl4030.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/mmc.h | 3 |
3 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c index 56f07f26f753..cb1cbd7934ae 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.c +++ b/arch/arm/mach-omap2/mmc-twl4030.c | |||
@@ -418,6 +418,9 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers) | |||
418 | if (c->nonremovable) | 418 | if (c->nonremovable) |
419 | mmc->slots[0].nonremovable = 1; | 419 | mmc->slots[0].nonremovable = 1; |
420 | 420 | ||
421 | if (c->power_saving) | ||
422 | mmc->slots[0].power_saving = 1; | ||
423 | |||
421 | /* NOTE: MMC slots should have a Vcc regulator set up. | 424 | /* NOTE: MMC slots should have a Vcc regulator set up. |
422 | * This may be from a TWL4030-family chip, another | 425 | * This may be from a TWL4030-family chip, another |
423 | * controllable regulator, or a fixed supply. | 426 | * controllable regulator, or a fixed supply. |
diff --git a/arch/arm/mach-omap2/mmc-twl4030.h b/arch/arm/mach-omap2/mmc-twl4030.h index 75b0c645cb3d..a47e68563fb6 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.h +++ b/arch/arm/mach-omap2/mmc-twl4030.h | |||
@@ -13,6 +13,7 @@ struct twl4030_hsmmc_info { | |||
13 | bool ext_clock; /* use external pin for input clock */ | 13 | bool ext_clock; /* use external pin for input clock */ |
14 | bool cover_only; /* No card detect - just cover switch */ | 14 | bool cover_only; /* No card detect - just cover switch */ |
15 | bool nonremovable; /* Nonremovable e.g. eMMC */ | 15 | bool nonremovable; /* Nonremovable e.g. eMMC */ |
16 | bool power_saving; /* Try to sleep or power off when possible */ | ||
16 | int gpio_cd; /* or -EINVAL */ | 17 | int gpio_cd; /* or -EINVAL */ |
17 | int gpio_wp; /* or -EINVAL */ | 18 | int gpio_wp; /* or -EINVAL */ |
18 | char *name; /* or NULL for default */ | 19 | char *name; /* or NULL for default */ |
diff --git a/arch/arm/plat-omap/include/mach/mmc.h b/arch/arm/plat-omap/include/mach/mmc.h index bab486ce5185..82f1e29f5e53 100644 --- a/arch/arm/plat-omap/include/mach/mmc.h +++ b/arch/arm/plat-omap/include/mach/mmc.h | |||
@@ -86,6 +86,9 @@ struct omap_mmc_platform_data { | |||
86 | /* nonremovable e.g. eMMC */ | 86 | /* nonremovable e.g. eMMC */ |
87 | unsigned nonremovable:1; | 87 | unsigned nonremovable:1; |
88 | 88 | ||
89 | /* Try to sleep or power off when possible */ | ||
90 | unsigned power_saving:1; | ||
91 | |||
89 | int switch_pin; /* gpio (card detect) */ | 92 | int switch_pin; /* gpio (card detect) */ |
90 | int gpio_wp; /* gpio (write protect) */ | 93 | int gpio_wp; /* gpio (write protect) */ |
91 | 94 | ||