CHROMIUM: mmc: card: add a quirk for Kingston eMMC
authorVincent Palatin <vpalatin@chromium.org>
Wed, 13 Feb 2013 00:20:12 +0000 (16:20 -0800)
committerChromeBot <chrome-bot@google.com>
Wed, 13 Feb 2013 02:37:17 +0000 (18:37 -0800)
The Kingston eMMC 16GB is sometimes freezing (not answering to the
request) when doing a multiple read (CMD18).
With this workaround, I'm no longer encountering the issue.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
BUG=chrome-os-partner:17397
TEST=on Spring with unreliable Kingston eMMC, /usr/sbin/chromeos-install,
then boot the board from eMMC and see both steps succeeding without freeze.

Change-Id: If22613093debafeb90ecdc90b8ad5373d2050de9
Reviewed-on: https://gerrit.chromium.org/gerrit/43149
Reviewed-by: Todd Broch <tbroch@chromium.org>
Commit-Queue: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
drivers/mmc/card/block.c

index dabec55..de3a97c 100644 (file)
@@ -1730,6 +1730,7 @@ force_ro_fail:
 #define CID_MANFID_SANDISK     0x2
 #define CID_MANFID_TOSHIBA     0x11
 #define CID_MANFID_MICRON      0x13
+#define CID_MANFID_KINGSTON    0x70
 
 static const struct mmc_fixup blk_fixups[] =
 {
@@ -1759,6 +1760,13 @@ static const struct mmc_fixup blk_fixups[] =
        MMC_FIXUP("MMC32G", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
                  MMC_QUIRK_BLK_NO_CMD23),
 
+       /*
+        * Sometimes the multiple reads on the 16GB Kingston eMMC are freezing,
+        * this quirk seems to prevent that issue from happening.
+        */
+       MMC_FIXUP("MMC16G", CID_MANFID_KINGSTON, 0x100, add_quirk_mmc,
+                 MMC_QUIRK_BLK_NO_CMD23),
+
        /*
         * Some Micron MMC cards needs longer data read timeout than
         * indicated in CSD.