diff options
Diffstat (limited to 'target/linux/goldfish/patches-2.6.30/0099-mmc-mmcblk-Add-new-feature-CONFIG_MMC_BLOCK_PARAN.patch')
-rw-r--r-- | target/linux/goldfish/patches-2.6.30/0099-mmc-mmcblk-Add-new-feature-CONFIG_MMC_BLOCK_PARAN.patch | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/target/linux/goldfish/patches-2.6.30/0099-mmc-mmcblk-Add-new-feature-CONFIG_MMC_BLOCK_PARAN.patch b/target/linux/goldfish/patches-2.6.30/0099-mmc-mmcblk-Add-new-feature-CONFIG_MMC_BLOCK_PARAN.patch deleted file mode 100644 index 78e23780ff..0000000000 --- a/target/linux/goldfish/patches-2.6.30/0099-mmc-mmcblk-Add-new-feature-CONFIG_MMC_BLOCK_PARAN.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 5ca694dfd981a371e9b18cdd4a89c002ffaccbc5 Mon Sep 17 00:00:00 2001 -From: San Mehat <san@android.com> -Date: Wed, 3 Dec 2008 10:22:59 -0800 -Subject: [PATCH 099/134] mmc: mmcblk: Add new feature 'CONFIG_MMC_BLOCK_PARANOID_RESUME' - - With this feature enabled, mmcblk will check the card-status before issuing -a transaction *only* after being resumed. This protectes us from issuing -transactions before the sdcard is ready (which can occur if the host driver -deferrs mmc_resume_host() to reduce resume latency) - -Signed-off-by: San Mehat <san@android.com> ---- - drivers/mmc/card/Kconfig | 7 +++++++ - drivers/mmc/card/block.c | 3 +++ - drivers/mmc/card/queue.c | 28 ++++++++++++++++++++++++++++ - drivers/mmc/card/queue.h | 3 +++ - 4 files changed, 41 insertions(+), 0 deletions(-) - ---- a/drivers/mmc/card/Kconfig -+++ b/drivers/mmc/card/Kconfig -@@ -32,6 +32,13 @@ config MMC_BLOCK_BOUNCE - - If unsure, say Y here. - -+config MMC_BLOCK_PARANOID_RESUME -+ bool "Check card status on resume" -+ depends on MMC_BLOCK -+ default y -+ help -+ Nohelp -+ - config SDIO_UART - tristate "SDIO UART/GPS class support" - help ---- a/drivers/mmc/card/block.c -+++ b/drivers/mmc/card/block.c -@@ -643,6 +643,9 @@ static int mmc_blk_resume(struct mmc_car - - if (md) { - mmc_blk_set_blksize(md, card); -+#ifdef CONFIG_MMC_BLOCK_PARANOID_RESUME -+ md->queue.check_status = 1; -+#endif - mmc_queue_resume(&md->queue); - } - return 0; ---- a/drivers/mmc/card/queue.c -+++ b/drivers/mmc/card/queue.c -@@ -14,7 +14,9 @@ - #include <linux/freezer.h> - #include <linux/kthread.h> - #include <linux/scatterlist.h> -+#include <linux/delay.h> - -+#include <linux/mmc/mmc.h> - #include <linux/mmc/card.h> - #include <linux/mmc/host.h> - #include "queue.h" -@@ -70,7 +72,33 @@ static int mmc_queue_thread(void *d) - continue; - } - set_current_state(TASK_RUNNING); -+#ifdef CONFIG_MMC_BLOCK_PARANOID_RESUME -+ if (mq->check_status) { -+ struct mmc_command cmd; - -+ do { -+ int err; -+ -+ cmd.opcode = MMC_SEND_STATUS; -+ cmd.arg = mq->card->rca << 16; -+ cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; -+ -+ mmc_claim_host(mq->card->host); -+ err = mmc_wait_for_cmd(mq->card->host, &cmd, 5); -+ mmc_release_host(mq->card->host); -+ -+ if (err) { -+ printk(KERN_ERR "%s: failed to get status (%d)\n", -+ __func__, err); -+ msleep(5); -+ continue; -+ } -+ printk(KERN_DEBUG "%s: status 0x%.8x\n", __func__, cmd.resp[0]); -+ } while (!(cmd.resp[0] & R1_READY_FOR_DATA) || -+ (R1_CURRENT_STATE(cmd.resp[0]) == 7)); -+ mq->check_status = 0; -+ } -+#endif - mq->issue_fn(mq, req); - } while (1); - up(&mq->thread_sem); ---- a/drivers/mmc/card/queue.h -+++ b/drivers/mmc/card/queue.h -@@ -17,6 +17,9 @@ struct mmc_queue { - char *bounce_buf; - struct scatterlist *bounce_sg; - unsigned int bounce_sg_len; -+#ifdef CONFIG_MMC_BLOCK_PARANOID_RESUME -+ int check_status; -+#endif - }; - - extern int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *); |