summaryrefslogtreecommitdiff
path: root/arch/arm/mach-s3c2410/mach-h1940.c
diff options
context:
space:
mode:
authorVasily Khoruzhick <anarsoul@gmail.com>2010-09-27 01:27:41 +0400
committerBen Dooks <ben-linux@fluff.org>2010-09-27 03:24:15 +0400
commit48cd65a6a020292e1ab5d0f5ba96571c858964e6 (patch)
tree0f120d7ccadded8a2d204c9f36c846aa76991dcd /arch/arm/mach-s3c2410/mach-h1940.c
parent14477095abc661a9f195ca4733bb739c54794b32 (diff)
downloadlinux-48cd65a6a020292e1ab5d0f5ba96571c858964e6.tar.xz
ARM: h1940: Implement mmc_power function
This patch implements h1940-specific set_power callback for s3cmci driver, so card power can be disabled when card is not inserted or before suspend. Without this patch PDA consumes power in suspend when card is inserted. Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'arch/arm/mach-s3c2410/mach-h1940.c')
-rw-r--r--arch/arm/mach-s3c2410/mach-h1940.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c
index f0493bdbf0dc..cc8660ec8844 100644
--- a/arch/arm/mach-s3c2410/mach-h1940.c
+++ b/arch/arm/mach-s3c2410/mach-h1940.c
@@ -112,8 +112,7 @@ static unsigned int latch_state = H1940_LATCH_BIT(H1940_LATCH_LCD_P4) |
H1940_LATCH_BIT(H1940_LATCH_LCD_P1) |
H1940_LATCH_BIT(H1940_LATCH_LCD_P2) |
H1940_LATCH_BIT(H1940_LATCH_LCD_P3) |
- H1940_LATCH_BIT(H1940_LATCH_MAX1698_nSHUTDOWN) |
- H1940_LATCH_BIT(H1940_LATCH_CPUQ5);
+ H1940_LATCH_BIT(H1940_LATCH_MAX1698_nSHUTDOWN);
static void h1940_latch_control(unsigned int clear, unsigned int set)
{
@@ -247,10 +246,25 @@ static struct platform_device h1940_device_bluetooth = {
.id = -1,
};
+static void h1940_set_mmc_power(unsigned char power_mode, unsigned short vdd)
+{
+ switch (power_mode) {
+ case MMC_POWER_OFF:
+ gpio_set_value(H1940_LATCH_SD_POWER, 0);
+ break;
+ case MMC_POWER_UP:
+ case MMC_POWER_ON:
+ gpio_set_value(H1940_LATCH_SD_POWER, 1);
+ break;
+ default:
+ break;
+ };
+}
+
static struct s3c24xx_mci_pdata h1940_mmc_cfg __initdata = {
.gpio_detect = S3C2410_GPF(5),
.gpio_wprotect = S3C2410_GPH(8),
- .set_power = NULL,
+ .set_power = h1940_set_mmc_power,
.ocr_avail = MMC_VDD_32_33,
};
@@ -397,6 +411,9 @@ static void __init h1940_init(void)
gpio_request(H1940_LATCH_USB_DP, "USB pullup");
gpio_direction_output(H1940_LATCH_USB_DP, 0);
+ gpio_request(H1940_LATCH_SD_POWER, "SD power");
+ gpio_direction_output(H1940_LATCH_SD_POWER, 0);
+
platform_add_devices(h1940_devices, ARRAY_SIZE(h1940_devices));
}