aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMicky Ching <micky_ching@realsil.com.cn>2014-02-17 03:45:46 -0500
committerChris Ball <chris@printf.net>2014-02-22 13:33:38 -0500
commit640e09bc45f5d03622da5230d131c0bfd0d2da3f (patch)
treeb5f5d890f57eacb170bfef987978a8c56a6b7d85
parent9107ebbf9652c033eb5dd10a6ea34a132db3cde1 (diff)
mmc: rtsx: fix card poweroff bug
If the host driver removed while card in the slot, the host will not power off card power correctly. This bug is produced because host eject flag set before the last mmc_set_ios callback, we should set the eject flag after power off. Signed-off-by: Micky Ching <micky_ching@realsil.com.cn> Signed-off-by: Chris Ball <chris@printf.net>
-rw-r--r--drivers/mmc/host/rtsx_pci_sdmmc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
index c46feda07d56..cc80e3119d1d 100644
--- a/drivers/mmc/host/rtsx_pci_sdmmc.c
+++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
@@ -1297,7 +1297,6 @@ static int rtsx_pci_sdmmc_drv_remove(struct platform_device *pdev)
1297 pcr->slots[RTSX_SD_CARD].p_dev = NULL; 1297 pcr->slots[RTSX_SD_CARD].p_dev = NULL;
1298 pcr->slots[RTSX_SD_CARD].card_event = NULL; 1298 pcr->slots[RTSX_SD_CARD].card_event = NULL;
1299 mmc = host->mmc; 1299 mmc = host->mmc;
1300 host->eject = true;
1301 1300
1302 mutex_lock(&host->host_mutex); 1301 mutex_lock(&host->host_mutex);
1303 if (host->mrq) { 1302 if (host->mrq) {
@@ -1315,6 +1314,8 @@ static int rtsx_pci_sdmmc_drv_remove(struct platform_device *pdev)
1315 mutex_unlock(&host->host_mutex); 1314 mutex_unlock(&host->host_mutex);
1316 1315
1317 mmc_remove_host(mmc); 1316 mmc_remove_host(mmc);
1317 host->eject = true;
1318
1318 mmc_free_host(mmc); 1319 mmc_free_host(mmc);
1319 1320
1320 dev_dbg(&(pdev->dev), 1321 dev_dbg(&(pdev->dev),