aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Rudholm <johan.rudholm@stericsson.com>2013-01-28 09:08:25 -0500
committerChris Ball <cjb@laptop.org>2013-02-24 14:37:06 -0500
commit276e090f9217b69e46d8255132d2667ac5eec51b (patch)
tree88bdee868736daed897cde6b498e2d51abd28091
parent3f8a7fabd60e83eb2fb7add00d353d455c0e7a78 (diff)
mmc: core: Add mmc_power_cycle
Add mmc_power_cycle which can be used to power cycle for instance SD-cards. Signed-off-by: Johan Rudholm <johan.rudholm@stericsson.com> Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Tested-by: Wei WANG <wei_wang@realsil.com.cn> Signed-off-by: Chris Ball <cjb@laptop.org>
-rw-r--r--drivers/mmc/core/core.c8
-rw-r--r--drivers/mmc/core/core.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 39f28af34cb6..789056fbfc93 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1470,6 +1470,14 @@ void mmc_power_off(struct mmc_host *host)
1470 mmc_host_clk_release(host); 1470 mmc_host_clk_release(host);
1471} 1471}
1472 1472
1473void mmc_power_cycle(struct mmc_host *host)
1474{
1475 mmc_power_off(host);
1476 /* Wait at least 1 ms according to SD spec */
1477 mmc_delay(1);
1478 mmc_power_up(host);
1479}
1480
1473/* 1481/*
1474 * Cleanup when the last reference to the bus operator is dropped. 1482 * Cleanup when the last reference to the bus operator is dropped.
1475 */ 1483 */
diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
index 0272b3284b5e..9007de74d8a9 100644
--- a/drivers/mmc/core/core.h
+++ b/drivers/mmc/core/core.h
@@ -45,6 +45,7 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage,
45void mmc_set_timing(struct mmc_host *host, unsigned int timing); 45void mmc_set_timing(struct mmc_host *host, unsigned int timing);
46void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type); 46void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
47void mmc_power_off(struct mmc_host *host); 47void mmc_power_off(struct mmc_host *host);
48void mmc_power_cycle(struct mmc_host *host);
48 49
49static inline void mmc_delay(unsigned int ms) 50static inline void mmc_delay(unsigned int ms)
50{ 51{