aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/mmc.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 9ffeeb2cba45..0242c6a21daf 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1550,6 +1550,12 @@ static void mmc_setup(struct mmc_host *host)
1550 */ 1550 */
1551void mmc_detect_change(struct mmc_host *host, unsigned long delay) 1551void mmc_detect_change(struct mmc_host *host, unsigned long delay)
1552{ 1552{
1553#ifdef CONFIG_MMC_DEBUG
1554 mmc_claim_host(host);
1555 BUG_ON(host->removed);
1556 mmc_release_host(host);
1557#endif
1558
1553 mmc_schedule_delayed_work(&host->detect, delay); 1559 mmc_schedule_delayed_work(&host->detect, delay);
1554} 1560}
1555 1561
@@ -1690,6 +1696,14 @@ void mmc_remove_host(struct mmc_host *host)
1690{ 1696{
1691 struct list_head *l, *n; 1697 struct list_head *l, *n;
1692 1698
1699#ifdef CONFIG_MMC_DEBUG
1700 mmc_claim_host(host);
1701 host->removed = 1;
1702 mmc_release_host(host);
1703#endif
1704
1705 mmc_flush_scheduled_work();
1706
1693 list_for_each_safe(l, n, &host->cards) { 1707 list_for_each_safe(l, n, &host->cards) {
1694 struct mmc_card *card = mmc_list_to_card(l); 1708 struct mmc_card *card = mmc_list_to_card(l);
1695 1709
@@ -1710,7 +1724,6 @@ EXPORT_SYMBOL(mmc_remove_host);
1710 */ 1724 */
1711void mmc_free_host(struct mmc_host *host) 1725void mmc_free_host(struct mmc_host *host)
1712{ 1726{
1713 mmc_flush_scheduled_work();
1714 mmc_free_host_sysfs(host); 1727 mmc_free_host_sysfs(host);
1715} 1728}
1716 1729