From: Högander Jouni <[EMAIL PROTECTED]>

For some reason mmc doesn't ack idle request if smartidle mode is used. This is 
just workaround. There is something wrong in driver code or in hw(omap).

Signed-off-by: Jouni Högander <[EMAIL PROTECTED]>
---
 drivers/mmc/host/omap_hsmmc.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 9462e4c..e361213 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -58,6 +58,7 @@
 #define SDVSCLR                        0xFFFFF1FF
 #define SDVSDET                        0x00000400
 #define AUTOIDLE               0x1
+#define SMARTIDLE              (2 << 3)
 #define SDBP                   (1<<8)
 #define DTO                    0xe
 #define ICE                    0x1
@@ -980,6 +981,11 @@ static int omap_mmc_suspend(struct platform_device *pdev, 
pm_message_t state)
                                        | SDBP);
                        }
 
+                       /* XXX Disable smartidle mode. For some reason
+                        * this is preventing core retention */
+                       OMAP_HSMMC_WRITE(host->base, SYSCONFIG,
+                                        OMAP_HSMMC_READ(host->base, SYSCONFIG) 
& ~SMARTIDLE);
+
                        clk_disable(host->fclk);
                        clk_disable(host->iclk);
                        clk_disable(host->dbclk);
@@ -1015,6 +1021,11 @@ static int omap_mmc_resume(struct platform_device *pdev)
                        dev_dbg(mmc_dev(host->mmc),
                                        "Enabling debounce clk failed\n");
 
+               /* XXX Enable smartidle mode. For some reason
+                * this is preventing core retention */
+               OMAP_HSMMC_WRITE(host->base, SYSCONFIG,
+                                OMAP_HSMMC_READ(host->base, SYSCONFIG) | 
SMARTIDLE);
+
                if (host->pdata->resume) {
                        ret = host->pdata->resume(&pdev->dev, host->slot_id);
                        if (ret)
-- 
1.5.6.3

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to