|
@@ -1192,7 +1192,7 @@ static void mmc_power_up(struct mmc_host *host)
|
|
mmc_host_clk_release(host);
|
|
mmc_host_clk_release(host);
|
|
}
|
|
}
|
|
|
|
|
|
-static void mmc_power_off(struct mmc_host *host)
|
|
|
|
|
|
+void mmc_power_off(struct mmc_host *host)
|
|
{
|
|
{
|
|
mmc_host_clk_hold(host);
|
|
mmc_host_clk_hold(host);
|
|
|
|
|
|
@@ -1289,8 +1289,7 @@ void mmc_attach_bus(struct mmc_host *host, const struct mmc_bus_ops *ops)
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
- * Remove the current bus handler from a host. Assumes that there are
|
|
|
|
- * no interesting cards left, so the bus is powered down.
|
|
|
|
|
|
+ * Remove the current bus handler from a host.
|
|
*/
|
|
*/
|
|
void mmc_detach_bus(struct mmc_host *host)
|
|
void mmc_detach_bus(struct mmc_host *host)
|
|
{
|
|
{
|
|
@@ -1307,8 +1306,6 @@ void mmc_detach_bus(struct mmc_host *host)
|
|
|
|
|
|
spin_unlock_irqrestore(&host->lock, flags);
|
|
spin_unlock_irqrestore(&host->lock, flags);
|
|
|
|
|
|
- mmc_power_off(host);
|
|
|
|
-
|
|
|
|
mmc_bus_put(host);
|
|
mmc_bus_put(host);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1893,6 +1890,7 @@ void mmc_stop_host(struct mmc_host *host)
|
|
|
|
|
|
mmc_claim_host(host);
|
|
mmc_claim_host(host);
|
|
mmc_detach_bus(host);
|
|
mmc_detach_bus(host);
|
|
|
|
+ mmc_power_off(host);
|
|
mmc_release_host(host);
|
|
mmc_release_host(host);
|
|
mmc_bus_put(host);
|
|
mmc_bus_put(host);
|
|
return;
|
|
return;
|
|
@@ -2022,6 +2020,7 @@ int mmc_suspend_host(struct mmc_host *host)
|
|
host->bus_ops->remove(host);
|
|
host->bus_ops->remove(host);
|
|
mmc_claim_host(host);
|
|
mmc_claim_host(host);
|
|
mmc_detach_bus(host);
|
|
mmc_detach_bus(host);
|
|
|
|
+ mmc_power_off(host);
|
|
mmc_release_host(host);
|
|
mmc_release_host(host);
|
|
host->pm_flags = 0;
|
|
host->pm_flags = 0;
|
|
err = 0;
|
|
err = 0;
|
|
@@ -2109,6 +2108,7 @@ int mmc_pm_notify(struct notifier_block *notify_block,
|
|
host->bus_ops->remove(host);
|
|
host->bus_ops->remove(host);
|
|
|
|
|
|
mmc_detach_bus(host);
|
|
mmc_detach_bus(host);
|
|
|
|
+ mmc_power_off(host);
|
|
mmc_release_host(host);
|
|
mmc_release_host(host);
|
|
host->pm_flags = 0;
|
|
host->pm_flags = 0;
|
|
break;
|
|
break;
|