summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRichard Zhu <r65037@freescale.com>2011-03-08 17:20:47 +0800
committerRichard Zhu <r65037@freescale.com>2011-03-10 17:35:04 +0800
commit0a776d3bf3ca161203e81545ffb1fcf1aa839b62 (patch)
treea79c24d4c2f27a28d9e3943d2c6c5c1b7eb19896 /drivers
parente7101b7c3777d716fe91c20cad38f56133ab338d (diff)
ENGR00140401 SET_BLOCKLEN shouldn't be sent when eanble DDR
Customer provided this patch, the SET_BLOCKLEN shouldn't be sent when enable the DDR mode required by customer's iNand. Tested by customer on it's own board. BTW, this patch is not needed on 2.6.38 kernel, should be discarded after upgrade the kernel version. Signed-off-by: Richard Zhu <r65037@freescale.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/card/block.c4
-rw-r--r--drivers/mmc/core/mmc.c2
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index cb9fbc83b090..28f38d8487fe 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -573,6 +573,10 @@ mmc_blk_set_blksize(struct mmc_blk_data *md, struct mmc_card *card)
if (mmc_card_blockaddr(card))
return 0;
+ /* DDR Mode cards ignore MMC_SET_BLOCKLEN. */
+ if (mmc_card_ddrmode(card))
+ return 0;
+
mmc_claim_host(card->host);
cmd.opcode = MMC_SET_BLOCKLEN;
cmd.arg = 512;
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 95e13c2bbd59..db54b2d0d09b 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -853,11 +853,13 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
(card->ext_csd.card_type & MMC_DDR_MODE_MASK)) {
ext_csd_bit = EXT_CSD_BUS_WIDTH_8_DDR;
bus_width = MMC_BUS_WIDTH_8 | MMC_BUS_WIDTH_DDR;
+ mmc_card_set_ddrmode(card);
} else if ((host->caps & MMC_CAP_4_BIT_DATA) &&
(host->caps & MMC_CAP_DATA_DDR) &&
(card->ext_csd.card_type & MMC_DDR_MODE_MASK)) {
ext_csd_bit = EXT_CSD_BUS_WIDTH_4_DDR;
bus_width = MMC_BUS_WIDTH_4 | MMC_BUS_WIDTH_DDR;
+ mmc_card_set_ddrmode(card);
} else if (host->caps & MMC_CAP_8_BIT_DATA) {
ext_csd_bit = EXT_CSD_BUS_WIDTH_8;
bus_width = MMC_BUS_WIDTH_8;