summaryrefslogtreecommitdiff
path: root/packages/linux/linux-rp-2.6.16/rmk-mmc1.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-rp-2.6.16/rmk-mmc1.patch')
-rw-r--r--packages/linux/linux-rp-2.6.16/rmk-mmc1.patch61
1 files changed, 0 insertions, 61 deletions
diff --git a/packages/linux/linux-rp-2.6.16/rmk-mmc1.patch b/packages/linux/linux-rp-2.6.16/rmk-mmc1.patch
deleted file mode 100644
index 054b48d28d..0000000000
--- a/packages/linux/linux-rp-2.6.16/rmk-mmc1.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-
-The CSD contains a "read2write factor" which determines the multiplier to
-be applied to the read timeout to obtain the write timeout. We were
-ignoring this parameter, resulting in the possibility for writes being
-timed out too early.
-
-Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-
-diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
---- a/drivers/mmc/mmc.c
-+++ b/drivers/mmc/mmc.c
-@@ -549,6 +549,7 @@ static void mmc_decode_csd(struct mmc_ca
- csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
- csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
- csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
-+ csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
- csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
- csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
- } else {
-@@ -583,6 +584,7 @@ static void mmc_decode_csd(struct mmc_ca
- csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
- csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
- csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
-+ csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
- csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
- csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
- }
-diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c
---- a/drivers/mmc/mmc_block.c
-+++ b/drivers/mmc/mmc_block.c
-@@ -187,6 +187,12 @@ static int mmc_blk_issue_rq(struct mmc_q
- brq.cmd.opcode = MMC_WRITE_BLOCK;
- brq.data.flags |= MMC_DATA_WRITE;
- brq.data.blocks = 1;
-+
-+ /*
-+ * Scale up the timeout by the r2w factor
-+ */
-+ brq.data.timeout_ns <<= card->csd.r2w_factor;
-+ brq.data.timeout_clks <<= card->csd.r2w_factor;
- }
-
- if (brq.data.blocks > 1) {
-diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
---- a/include/linux/mmc/card.h
-+++ b/include/linux/mmc/card.h
-@@ -28,6 +28,7 @@ struct mmc_csd {
- unsigned short cmdclass;
- unsigned short tacc_clks;
- unsigned int tacc_ns;
-+ unsigned int r2w_factor;
- unsigned int max_dtr;
- unsigned int read_blkbits;
- unsigned int write_blkbits;
-
-
--------------------------------------------------------------------
-List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
-FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
-Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
-