|
@@ -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)
|
|
static void mmc_davinci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
|
{
|
|
{
|
|
struct mmc_davinci_host *host = mmc_priv(mmc);
|
|
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),
|
|
dev_dbg(mmc_dev(host->mmc),
|
|
"clock %dHz busmode %d powermode %d Vdd %04x\n",
|
|
"clock %dHz busmode %d powermode %d Vdd %04x\n",
|
|
ios->clock, ios->bus_mode, ios->power_mode,
|
|
ios->clock, ios->bus_mode, ios->power_mode,
|
|
ios->vdd);
|
|
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) {
|
|
switch (ios->bus_width) {
|
|
case MMC_BUS_WIDTH_8:
|
|
case MMC_BUS_WIDTH_8:
|
|
dev_dbg(mmc_dev(host->mmc), "Enabling 8 bit mode\n");
|
|
dev_dbg(mmc_dev(host->mmc), "Enabling 8 bit mode\n");
|