summaryrefslogtreecommitdiff
path: root/target/linux/s3c24xx/patches-2.6.24/1092-fix-glamo-mci-defeat-ops-during-suspend.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1092-fix-glamo-mci-defeat-ops-during-suspend.patch.patch')
-rw-r--r--target/linux/s3c24xx/patches-2.6.24/1092-fix-glamo-mci-defeat-ops-during-suspend.patch.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1092-fix-glamo-mci-defeat-ops-during-suspend.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1092-fix-glamo-mci-defeat-ops-during-suspend.patch.patch
new file mode 100644
index 0000000000..1713accd70
--- /dev/null
+++ b/target/linux/s3c24xx/patches-2.6.24/1092-fix-glamo-mci-defeat-ops-during-suspend.patch.patch
@@ -0,0 +1,73 @@
+From 99fbe6e31e09c9000668b50a87b3bbb834a145d0 Mon Sep 17 00:00:00 2001
+From: Andy Green <andy@openmoko.com>
+Date: Sun, 13 Apr 2008 07:25:50 +0100
+Subject: [PATCH] fix-glamo-mci-defeat-ops-during-suspend.patch
+
+We need to be able to use the config option CONFIG_MMC_UNSAFE_RESUME that allows the rootfs
+to live on SD. But when we use this, it tries to send a reset command to the SD card during
+suspend -- and unfortunately many things like Power have suspended by then.
+
+This patch again rejects IO on the MMC device during suspend of the MMC device, and it
+gives the result the rootfs on SD card works okay.
+
+Signed-off-by: Andy Green <andy@openmoko.com>
+---
+ drivers/mfd/glamo/glamo-mci.c | 14 ++++++++++++++
+ drivers/mfd/glamo/glamo-mci.h | 2 ++
+ 2 files changed, 16 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/mfd/glamo/glamo-mci.c b/drivers/mfd/glamo/glamo-mci.c
+index f559e5e..bbbbe4d 100644
+--- a/drivers/mfd/glamo/glamo-mci.c
++++ b/drivers/mfd/glamo/glamo-mci.c
+@@ -406,6 +406,14 @@ static void glamo_mci_send_request(struct mmc_host *mmc)
+ u16 status;
+ int n;
+
++ if (host->suspending) {
++ cmd->error = -EIO;
++ if (cmd->data)
++ cmd->data->error = -EIO;
++ mmc_request_done(mmc, mrq);
++ return;
++ }
++
+ host->ccnt++;
+ /*
+ * somehow 2.6.24 MCI manages to issue MMC_WRITE_BLOCK *without* the
+@@ -792,6 +800,9 @@ static int glamo_mci_remove(struct platform_device *pdev)
+ static int glamo_mci_suspend(struct platform_device *dev, pm_message_t state)
+ {
+ struct mmc_host *mmc = platform_get_drvdata(dev);
++ struct glamo_mci_host *host = mmc_priv(mmc);
++
++ host->suspending++;
+
+ return mmc_suspend_host(mmc, state);
+ }
+@@ -799,6 +810,9 @@ static int glamo_mci_suspend(struct platform_device *dev, pm_message_t state)
+ static int glamo_mci_resume(struct platform_device *dev)
+ {
+ struct mmc_host *mmc = platform_get_drvdata(dev);
++ struct glamo_mci_host *host = mmc_priv(mmc);
++
++ host->suspending--;
+
+ return mmc_resume_host(mmc);
+ }
+diff --git a/drivers/mfd/glamo/glamo-mci.h b/drivers/mfd/glamo/glamo-mci.h
+index 40c3e24..55852e7 100644
+--- a/drivers/mfd/glamo/glamo-mci.h
++++ b/drivers/mfd/glamo/glamo-mci.h
+@@ -34,6 +34,8 @@ struct glamo_mci_host {
+ int dma;
+ int data_max_size;
+
++ int suspending;
++
+ int power_mode_current;
+ unsigned int vdd_current;
+
+--
+1.5.6.5
+