diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2009-10-17 00:58:01 +0200 |
---|---|---|
committer | Lars-Peter Clausen <lars@metafoo.de> | 2009-12-06 08:46:44 +0100 |
commit | 8a04ffdf4d66d66ed8c80250efce65b48053bc5e (patch) | |
tree | 735b8966ce97e6aecf08270cf85a7d0affb09fbd /drivers/mfd | |
parent | ac5c539d2543ec5145abf5f020f912b83a4fd089 (diff) |
glamo-mci: Fix regulator error check
regulator_get returns a ERR_PTR in case of an error and not a NULL pointer.
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/glamo/glamo-mci.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/drivers/mfd/glamo/glamo-mci.c b/drivers/mfd/glamo/glamo-mci.c index 948e380700c..e8ee4fd1021 100644 --- a/drivers/mfd/glamo/glamo-mci.c +++ b/drivers/mfd/glamo/glamo-mci.c @@ -24,6 +24,7 @@ #include <linux/scatterlist.h> #include <linux/io.h> #include <linux/regulator/consumer.h> +#include <linux/err.h> #include <linux/mfd/glamo.h> #include "glamo-core.h" @@ -158,20 +159,14 @@ static void glamo_mci_reset(struct glamo_mci_host *host) static void glamo_mci_clock_disable(struct glamo_mci_host *host) { - if (host->clk_enabled) { - glamo_engine_suspend(host->core, GLAMO_ENGINE_MMC); - host->clk_enabled = 0; - } + glamo_engine_suspend(host->core, GLAMO_ENGINE_MMC); } static void glamo_mci_clock_enable(struct glamo_mci_host *host) { del_timer_sync(&host->disable_timer); - if (!host->clk_enabled) { - glamo_engine_enable(host->core, GLAMO_ENGINE_MMC); - host->clk_enabled = 1; - } + glamo_engine_enable(host->core, GLAMO_ENGINE_MMC); } static void glamo_mci_disable_timer(unsigned long data) @@ -256,6 +251,7 @@ static int glamo_mci_wait_idle(struct glamo_mci_host *host, static void glamo_mci_request_done(struct glamo_mci_host *host, struct mmc_request *mrq) { + printk("request_done: %d\n", mrq->cmd->error); mod_timer(&host->disable_timer, jiffies + HZ / 16); mmc_request_done(host->mmc, mrq); } @@ -268,7 +264,6 @@ static void glamo_mci_irq_worker(struct work_struct *work) struct mmc_request *mrq; struct mmc_command *cmd; uint16_t status; - int res; if (!host->mrq || !host->mrq->cmd) return; @@ -689,6 +684,7 @@ static void glamo_mci_set_power_mode(struct glamo_mci_host *host, switch (power_mode) { case MMC_POWER_UP: if (host->power_mode == MMC_POWER_OFF) { + printk("ENABLE\n"); ret = regulator_enable(host->regulator); if (ret) dev_err(&host->pdev->dev, @@ -700,6 +696,7 @@ static void glamo_mci_set_power_mode(struct glamo_mci_host *host, break; case MMC_POWER_OFF: default: + printk("DISABLE\n"); glamo_engine_disable(host->core, GLAMO_ENGINE_MMC); ret = regulator_disable(host->regulator); @@ -801,9 +798,9 @@ static int glamo_mci_probe(struct platform_device *pdev) INIT_WORK(&host->read_work, glamo_mci_read_worker); host->regulator = regulator_get(pdev->dev.parent, "SD_3V3"); - if (!host->regulator) { + if (IS_ERR(host->regulator)) { dev_err(&pdev->dev, "Cannot proceed without regulator.\n"); - ret = -ENODEV; + ret = PTR_ERR(host->regulator); goto probe_free_host; } @@ -968,8 +965,6 @@ static int glamo_mci_suspend(struct device *dev) ret = mmc_suspend_host(mmc, PMSG_SUSPEND); - glamo_engine_disable(host->core, GLAMO_ENGINE_MMC); - return ret; } @@ -980,13 +975,11 @@ static int glamo_mci_resume(struct device *dev) int ret; - glamo_engine_enable(host->core, GLAMO_ENGINE_MMC); glamo_mci_reset(host); - - mdelay(5); + glamo_engine_enable(host->core, GLAMO_ENGINE_MMC); + mdelay(10); ret = mmc_resume_host(host->mmc); -/* glamo_mci_clock_disable(host);*/ return 0; } |