lkml.org 
[lkml]   [2011]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 3/4] mmc_spi.c: factor out a mmc_spi_setpower() function
Date
Factor out a mmc_spi_setpower() function so to make changing it more
elegant without adding too much stuff to mmc_spi_set_ios().

Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
---
drivers/mmc/host/mmc_spi.c | 43 +++++++++++++++++++++++++++++++------------
1 files changed, 31 insertions(+), 12 deletions(-)
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index fe0fdc4..5e4b2c7 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -1221,6 +1221,26 @@ static void mmc_spi_shutdownsequence(struct mmc_spi_host *host)
}
}

+static inline int mmc_spi_setpower(struct mmc_spi_host *host,
+ unsigned char power_mode,
+ unsigned int vdd)
+{
+ /* switch power on/off if possible, accounting for
+ * max 250msec powerup time if needed.
+ */
+ if (mmc_spi_canpower(host)) {
+ switch (power_mode) {
+ case MMC_POWER_OFF:
+ case MMC_POWER_UP:
+ host->pdata->setpower(&host->spi->dev, vdd);
+ if (power_mode == MMC_POWER_UP)
+ msleep(host->powerup_msecs);
+ }
+ }
+
+ return 0;
+}
+
static char *mmc_powerstring(u8 power_mode)
{
switch (power_mode) {
@@ -1236,24 +1256,23 @@ static void mmc_spi_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
struct mmc_spi_host *host = mmc_priv(mmc);

if (host->power_mode != ios->power_mode) {
+ int ret;

dev_dbg(&host->spi->dev, "mmc_spi: power %s (%d)%s\n",
mmc_powerstring(ios->power_mode),
ios->vdd,
mmc_spi_canpower(host) ? ", can switch" : "");

- /* switch power on/off if possible, accounting for
- * max 250msec powerup time if needed.
- */
- if (mmc_spi_canpower(host)) {
- switch (ios->power_mode) {
- case MMC_POWER_OFF:
- case MMC_POWER_UP:
- host->pdata->setpower(&host->spi->dev,
- ios->vdd);
- if (ios->power_mode == MMC_POWER_UP)
- msleep(host->powerup_msecs);
- }
+ ret = mmc_spi_setpower(host, ios->power_mode, ios->vdd);
+ if (ret) {
+ dev_err(mmc_dev(mmc), "unable to set power\n");
+ /*
+ * The .set_ios() function in the mmc_host_ops
+ * struct return void, and failing to set the
+ * power should be rare so we print an error and
+ * return here.
+ */
+ return;
}

/* See 6.4.1 in the simplified SD card physical spec 2.0 */
--
1.7.4.1


\
 
 \ /
  Last update: 2011-03-21 19:49    [from the cache]
©2003-2011 Jasper Spaans