diff options
| -rw-r--r-- | drivers/mmc/host/tmio_mmc.h | 1 | ||||
| -rw-r--r-- | drivers/mmc/host/tmio_mmc_pio.c | 12 |
2 files changed, 7 insertions, 6 deletions
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h index f96c536d130a..8531d8d44fc1 100644 --- a/drivers/mmc/host/tmio_mmc.h +++ b/drivers/mmc/host/tmio_mmc.h | |||
| @@ -86,6 +86,7 @@ struct tmio_mmc_host { | |||
| 86 | spinlock_t lock; /* protect host private data */ | 86 | spinlock_t lock; /* protect host private data */ |
| 87 | unsigned long last_req_ts; | 87 | unsigned long last_req_ts; |
| 88 | struct mutex ios_lock; /* protect set_ios() context */ | 88 | struct mutex ios_lock; /* protect set_ios() context */ |
| 89 | bool native_hotplug; | ||
| 89 | }; | 90 | }; |
| 90 | 91 | ||
| 91 | int tmio_mmc_host_probe(struct tmio_mmc_host **host, | 92 | int tmio_mmc_host_probe(struct tmio_mmc_host **host, |
diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c index 5444d533322c..49f7f218cee1 100644 --- a/drivers/mmc/host/tmio_mmc_pio.c +++ b/drivers/mmc/host/tmio_mmc_pio.c | |||
| @@ -916,6 +916,10 @@ int __devinit tmio_mmc_host_probe(struct tmio_mmc_host **host, | |||
| 916 | else | 916 | else |
| 917 | mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; | 917 | mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; |
| 918 | 918 | ||
| 919 | _host->native_hotplug = !(pdata->flags & TMIO_MMC_HAS_COLD_CD || | ||
| 920 | mmc->caps & MMC_CAP_NEEDS_POLL || | ||
| 921 | mmc->caps & MMC_CAP_NONREMOVABLE); | ||
| 922 | |||
| 919 | pdata->power = false; | 923 | pdata->power = false; |
| 920 | pm_runtime_enable(&pdev->dev); | 924 | pm_runtime_enable(&pdev->dev); |
| 921 | ret = pm_runtime_resume(&pdev->dev); | 925 | ret = pm_runtime_resume(&pdev->dev); |
| @@ -934,9 +938,7 @@ int __devinit tmio_mmc_host_probe(struct tmio_mmc_host **host, | |||
| 934 | * additionally ensure that in case 2) the tmio mmc hardware stays | 938 | * additionally ensure that in case 2) the tmio mmc hardware stays |
| 935 | * powered on during runtime for the card detection to work. | 939 | * powered on during runtime for the card detection to work. |
| 936 | */ | 940 | */ |
| 937 | if (!(pdata->flags & TMIO_MMC_HAS_COLD_CD | 941 | if (_host->native_hotplug) |
| 938 | || mmc->caps & MMC_CAP_NEEDS_POLL | ||
| 939 | || mmc->caps & MMC_CAP_NONREMOVABLE)) | ||
| 940 | pm_runtime_get_noresume(&pdev->dev); | 942 | pm_runtime_get_noresume(&pdev->dev); |
| 941 | 943 | ||
| 942 | tmio_mmc_clk_stop(_host); | 944 | tmio_mmc_clk_stop(_host); |
| @@ -996,9 +998,7 @@ void tmio_mmc_host_remove(struct tmio_mmc_host *host) | |||
| 996 | * the controller, the runtime PM is suspended and pdata->power == false, | 998 | * the controller, the runtime PM is suspended and pdata->power == false, |
| 997 | * so, our .runtime_resume() will not try to detect a card in the slot. | 999 | * so, our .runtime_resume() will not try to detect a card in the slot. |
| 998 | */ | 1000 | */ |
| 999 | if (host->pdata->flags & TMIO_MMC_HAS_COLD_CD | 1001 | if (!host->native_hotplug) |
| 1000 | || host->mmc->caps & MMC_CAP_NEEDS_POLL | ||
| 1001 | || host->mmc->caps & MMC_CAP_NONREMOVABLE) | ||
| 1002 | pm_runtime_get_sync(&pdev->dev); | 1002 | pm_runtime_get_sync(&pdev->dev); |
| 1003 | 1003 | ||
| 1004 | dev_pm_qos_hide_latency_limit(&pdev->dev); | 1004 | dev_pm_qos_hide_latency_limit(&pdev->dev); |
