From 5514b1c3ec9364c50b67a136497201d2a3c49c88 Mon Sep 17 00:00:00 2001 From: Ido Yariv Date: Thu, 28 Jul 2011 20:49:09 +0000 Subject: [PATCH] --- yaml --- r: 272859 b: refs/heads/master c: 4a9de8ad2cea3c952e8b1cff8aa9289cd9d66c62 h: refs/heads/master i: 272857: 16610a722c577e802252dd0d9ffa02d9ace2cede 272855: 4b7e2052eed816c9336989a2c9cdd7c54331bc59 v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-davinci/include/mach/mmc.h | 3 +++ trunk/drivers/mmc/host/davinci_mmc.c | 13 +++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 02974a7392d2..76265ba86ac9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6836989c35b285b566b932fdbb8402edf8fcc887 +refs/heads/master: 4a9de8ad2cea3c952e8b1cff8aa9289cd9d66c62 diff --git a/trunk/arch/arm/mach-davinci/include/mach/mmc.h b/trunk/arch/arm/mach-davinci/include/mach/mmc.h index d4f1e9675069..5ba6b22ce338 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/mmc.h +++ b/trunk/arch/arm/mach-davinci/include/mach/mmc.h @@ -12,6 +12,9 @@ struct davinci_mmc_config { /* get_cd()/get_wp() may sleep */ int (*get_cd)(int module); int (*get_ro)(int module); + + void (*set_power)(int module, bool on); + /* wires == 0 is equivalent to wires == 4 (4-bit parallel) */ u8 wires; diff --git a/trunk/drivers/mmc/host/davinci_mmc.c b/trunk/drivers/mmc/host/davinci_mmc.c index 0076c7448fe6..64a8325a4a8a 100644 --- a/trunk/drivers/mmc/host/davinci_mmc.c +++ b/trunk/drivers/mmc/host/davinci_mmc.c @@ -807,12 +807,25 @@ static void calculate_clk_divider(struct mmc_host *mmc, struct mmc_ios *ios) static void mmc_davinci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) { struct mmc_davinci_host *host = mmc_priv(mmc); + struct platform_device *pdev = to_platform_device(mmc->parent); + struct davinci_mmc_config *config = pdev->dev.platform_data; dev_dbg(mmc_dev(host->mmc), "clock %dHz busmode %d powermode %d Vdd %04x\n", ios->clock, ios->bus_mode, ios->power_mode, ios->vdd); + switch (ios->power_mode) { + case MMC_POWER_OFF: + if (config && config->set_power) + config->set_power(pdev->id, false); + break; + case MMC_POWER_UP: + if (config && config->set_power) + config->set_power(pdev->id, true); + break; + } + switch (ios->bus_width) { case MMC_BUS_WIDTH_8: dev_dbg(mmc_dev(host->mmc), "Enabling 8 bit mode\n");