diff options
| -rw-r--r-- | drivers/mmc/host/tmio_mmc_pio.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c index 69772ab3ca22..e35e17992e38 100644 --- a/drivers/mmc/host/tmio_mmc_pio.c +++ b/drivers/mmc/host/tmio_mmc_pio.c | |||
| @@ -747,19 +747,18 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | |||
| 747 | tmio_mmc_set_clock(host, ios->clock); | 747 | tmio_mmc_set_clock(host, ios->clock); |
| 748 | 748 | ||
| 749 | /* Power sequence - OFF -> UP -> ON */ | 749 | /* Power sequence - OFF -> UP -> ON */ |
| 750 | switch (ios->power_mode) { | 750 | if (ios->power_mode == MMC_POWER_OFF || !ios->clock) { |
| 751 | case MMC_POWER_OFF: /* power down SD bus */ | 751 | /* power down SD bus */ |
| 752 | if (host->set_pwr) | 752 | if (ios->power_mode == MMC_POWER_OFF && host->set_pwr) |
| 753 | host->set_pwr(host->pdev, 0); | 753 | host->set_pwr(host->pdev, 0); |
| 754 | tmio_mmc_clk_stop(host); | 754 | tmio_mmc_clk_stop(host); |
| 755 | break; | 755 | } else if (ios->power_mode == MMC_POWER_UP) { |
| 756 | case MMC_POWER_ON: /* start bus clock */ | 756 | /* power up SD bus */ |
| 757 | tmio_mmc_clk_start(host); | ||
| 758 | break; | ||
| 759 | case MMC_POWER_UP: /* power up SD bus */ | ||
| 760 | if (host->set_pwr) | 757 | if (host->set_pwr) |
| 761 | host->set_pwr(host->pdev, 1); | 758 | host->set_pwr(host->pdev, 1); |
| 762 | break; | 759 | } else { |
| 760 | /* start bus clock */ | ||
| 761 | tmio_mmc_clk_start(host); | ||
| 763 | } | 762 | } |
| 764 | 763 | ||
| 765 | switch (ios->bus_width) { | 764 | switch (ios->bus_width) { |
