[PATCH] MMC: OMAP: Disable smartidle mode while suspending (workaround)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Högander Jouni <jouni.hogander@xxxxxxxxx>

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 <jouni.hogander@xxxxxxxxx>
---
 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux