Merge branch 'upstream/jump-label-noearly' of git://git.kernel.org/pub/scm/linux...
[pandora-kernel.git] / drivers / mmc / host / davinci_mmc.c
index 0076c74..64a8325 100644 (file)
@@ -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");