]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mmc: core: move all quirks together into quirks.h
authorShawn Lin <shawn.lin@rock-chips.com>
Wed, 15 Feb 2017 08:35:31 +0000 (16:35 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 15 Feb 2017 10:34:27 +0000 (11:34 +0100)
It's not appreciated to place quirks everywhere, let's
put them together just like what we do for USB, PCI etc.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/block.c
drivers/mmc/core/mmc.c
drivers/mmc/core/quirks.h

index 6f3a5ff8559057cfffa0bb1ddca846bef93ee38f..5bf1fba393497c916628eb9a2496241871672308 100644 (file)
@@ -61,12 +61,6 @@ MODULE_ALIAS("mmc:block");
 #endif
 #define MODULE_PARAM_PREFIX "mmcblk."
 
-#define INAND_CMD38_ARG_EXT_CSD  113
-#define INAND_CMD38_ARG_ERASE    0x00
-#define INAND_CMD38_ARG_TRIM     0x01
-#define INAND_CMD38_ARG_SECERASE 0x80
-#define INAND_CMD38_ARG_SECTRIM1 0x81
-#define INAND_CMD38_ARG_SECTRIM2 0x88
 #define MMC_BLK_TIMEOUT_MS  (10 * 60 * 1000)        /* 10 minute timeout */
 #define MMC_SANITIZE_REQ_TIMEOUT 240000
 #define MMC_EXTRACT_INDEX_FROM_ARG(x) ((x & 0x00FF0000) >> 16)
@@ -2108,80 +2102,6 @@ force_ro_fail:
        return ret;
 }
 
-static const struct mmc_fixup blk_fixups[] =
-{
-       MMC_FIXUP("SEM02G", CID_MANFID_SANDISK, 0x100, add_quirk,
-                 MMC_QUIRK_INAND_CMD38),
-       MMC_FIXUP("SEM04G", CID_MANFID_SANDISK, 0x100, add_quirk,
-                 MMC_QUIRK_INAND_CMD38),
-       MMC_FIXUP("SEM08G", CID_MANFID_SANDISK, 0x100, add_quirk,
-                 MMC_QUIRK_INAND_CMD38),
-       MMC_FIXUP("SEM16G", CID_MANFID_SANDISK, 0x100, add_quirk,
-                 MMC_QUIRK_INAND_CMD38),
-       MMC_FIXUP("SEM32G", CID_MANFID_SANDISK, 0x100, add_quirk,
-                 MMC_QUIRK_INAND_CMD38),
-
-       /*
-        * Some MMC cards experience performance degradation with CMD23
-        * instead of CMD12-bounded multiblock transfers. For now we'll
-        * black list what's bad...
-        * - Certain Toshiba cards.
-        *
-        * N.B. This doesn't affect SD cards.
-        */
-       MMC_FIXUP("SDMB-32", CID_MANFID_SANDISK, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_BLK_NO_CMD23),
-       MMC_FIXUP("SDM032", CID_MANFID_SANDISK, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_BLK_NO_CMD23),
-       MMC_FIXUP("MMC08G", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_BLK_NO_CMD23),
-       MMC_FIXUP("MMC16G", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_BLK_NO_CMD23),
-       MMC_FIXUP("MMC32G", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_BLK_NO_CMD23),
-
-       /*
-        * Some MMC cards need longer data read timeout than indicated in CSD.
-        */
-       MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc,
-                 MMC_QUIRK_LONG_READ_TIME),
-       MMC_FIXUP("008GE0", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_LONG_READ_TIME),
-
-       /*
-        * On these Samsung MoviNAND parts, performing secure erase or
-        * secure trim can result in unrecoverable corruption due to a
-        * firmware bug.
-        */
-       MMC_FIXUP("M8G2FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
-       MMC_FIXUP("MAG4FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
-       MMC_FIXUP("MBG8FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
-       MMC_FIXUP("MCGAFA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
-       MMC_FIXUP("VAL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
-       MMC_FIXUP("VYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
-       MMC_FIXUP("KYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
-       MMC_FIXUP("VZL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
-
-       /*
-        *  On Some Kingston eMMCs, performing trim can result in
-        *  unrecoverable data conrruption occasionally due to a firmware bug.
-        */
-       MMC_FIXUP("V10008", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_TRIM_BROKEN),
-       MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
-                 MMC_QUIRK_TRIM_BROKEN),
-
-       END_FIXUP
-};
-
 static int mmc_blk_probe(struct mmc_card *card)
 {
        struct mmc_blk_data *md, *part_md;
index f830970958e6796fcd9fb0fa32e16e402f73c360..7fd722868875f396e3e4e8147774913ab860b0e2 100644 (file)
@@ -49,17 +49,6 @@ static const unsigned int tacc_mant[] = {
        35,     40,     45,     50,     55,     60,     70,     80,
 };
 
-static const struct mmc_fixup mmc_ext_csd_fixups[] = {
-       /*
-        * Certain Hynix eMMC 4.41 cards might get broken when HPI feature
-        * is used so disable the HPI feature for such buggy cards.
-        */
-       MMC_FIXUP_EXT_CSD_REV(CID_NAME_ANY, CID_MANFID_HYNIX,
-                             0x014a, add_quirk, MMC_QUIRK_BROKEN_HPI, 5),
-
-       END_FIXUP
-};
-
 #define UNSTUFF_BITS(resp,start,size)                                  \
        ({                                                              \
                const int __size = size;                                \
index f6d72173168ac2e6668666e61ff9574910c2e056..7c195e744b33331dffb91cedcb85dd185deded3f 100644 (file)
 
 #include "card.h"
 
+static const struct mmc_fixup blk_fixups[] = {
+#define INAND_CMD38_ARG_EXT_CSD  113
+#define INAND_CMD38_ARG_ERASE    0x00
+#define INAND_CMD38_ARG_TRIM     0x01
+#define INAND_CMD38_ARG_SECERASE 0x80
+#define INAND_CMD38_ARG_SECTRIM1 0x81
+#define INAND_CMD38_ARG_SECTRIM2 0x88
+       /* CMD38 argument is passed through EXT_CSD[113] */
+       MMC_FIXUP("SEM02G", CID_MANFID_SANDISK, 0x100, add_quirk,
+                 MMC_QUIRK_INAND_CMD38),
+       MMC_FIXUP("SEM04G", CID_MANFID_SANDISK, 0x100, add_quirk,
+                 MMC_QUIRK_INAND_CMD38),
+       MMC_FIXUP("SEM08G", CID_MANFID_SANDISK, 0x100, add_quirk,
+                 MMC_QUIRK_INAND_CMD38),
+       MMC_FIXUP("SEM16G", CID_MANFID_SANDISK, 0x100, add_quirk,
+                 MMC_QUIRK_INAND_CMD38),
+       MMC_FIXUP("SEM32G", CID_MANFID_SANDISK, 0x100, add_quirk,
+                 MMC_QUIRK_INAND_CMD38),
+
+       /*
+        * Some MMC cards experience performance degradation with CMD23
+        * instead of CMD12-bounded multiblock transfers. For now we'll
+        * black list what's bad...
+        * - Certain Toshiba cards.
+        *
+        * N.B. This doesn't affect SD cards.
+        */
+       MMC_FIXUP("SDMB-32", CID_MANFID_SANDISK, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_BLK_NO_CMD23),
+       MMC_FIXUP("SDM032", CID_MANFID_SANDISK, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_BLK_NO_CMD23),
+       MMC_FIXUP("MMC08G", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_BLK_NO_CMD23),
+       MMC_FIXUP("MMC16G", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_BLK_NO_CMD23),
+       MMC_FIXUP("MMC32G", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_BLK_NO_CMD23),
+
+       /*
+        * Some MMC cards need longer data read timeout than indicated in CSD.
+        */
+       MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc,
+                 MMC_QUIRK_LONG_READ_TIME),
+       MMC_FIXUP("008GE0", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_LONG_READ_TIME),
+
+       /*
+        * On these Samsung MoviNAND parts, performing secure erase or
+        * secure trim can result in unrecoverable corruption due to a
+        * firmware bug.
+        */
+       MMC_FIXUP("M8G2FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+       MMC_FIXUP("MAG4FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+       MMC_FIXUP("MBG8FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+       MMC_FIXUP("MCGAFA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+       MMC_FIXUP("VAL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+       MMC_FIXUP("VYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+       MMC_FIXUP("KYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+       MMC_FIXUP("VZL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+
+       /*
+        *  On Some Kingston eMMCs, performing trim can result in
+        *  unrecoverable data conrruption occasionally due to a firmware bug.
+        */
+       MMC_FIXUP("V10008", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_TRIM_BROKEN),
+       MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
+                 MMC_QUIRK_TRIM_BROKEN),
+
+       END_FIXUP
+};
+
+static const struct mmc_fixup mmc_ext_csd_fixups[] = {
+       /*
+        * Certain Hynix eMMC 4.41 cards might get broken when HPI feature
+        * is used so disable the HPI feature for such buggy cards.
+        */
+       MMC_FIXUP_EXT_CSD_REV(CID_NAME_ANY, CID_MANFID_HYNIX,
+                             0x014a, add_quirk, MMC_QUIRK_BROKEN_HPI, 5),
+
+       END_FIXUP
+};
+
 static const struct mmc_fixup sdio_fixup_methods[] = {
        SDIO_FIXUP(SDIO_VENDOR_ID_TI, SDIO_DEVICE_ID_TI_WL1271,
                   add_quirk, MMC_QUIRK_NONSTD_FUNC_IF),