From 4f32644877e95bbd76894683fced2ef601a76eae Mon Sep 17 00:00:00 2001 From: Talel Shenhar Date: Tue, 10 Feb 2015 13:10:12 +0200 Subject: mmc: quirks: add support for quirks based on EXT_CSD_REV This change allows the usage of quirks based on the register value of EXT_CSD_REV. It was seen for several eMMC cards that same issues, such as data corruption while using cache, were relevant for all eMMC cards having the same EXT_CSD_REV value. This change allows us to distinguish between cards based on this register. Change-Id: I1663891c367a59b520bc505641c6c4ddad56fd1a Signed-off-by: Talel Shenhar --- drivers/mmc/card/block.c | 5 +++++ drivers/mmc/core/quirks.c | 2 ++ 2 files changed, 7 insertions(+) (limited to 'drivers') diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index 28048f872850..86192704e583 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -3055,6 +3055,11 @@ force_ro_fail: #define CID_MANFID_SAMSUNG 0x15 #define CID_MANFID_KINGSTON 0x70 +#define CID_MANFID_SANDISK 0x2 +#define CID_MANFID_TOSHIBA 0x11 +#define CID_MANFID_MICRON 0x13 +#define CID_MANFID_SAMSUNG 0x15 + static const struct mmc_fixup blk_fixups[] = { MMC_FIXUP("SEM02G", CID_MANFID_SANDISK, 0x100, add_quirk, diff --git a/drivers/mmc/core/quirks.c b/drivers/mmc/core/quirks.c index 562957a37704..1fb9fe1838c7 100644 --- a/drivers/mmc/core/quirks.c +++ b/drivers/mmc/core/quirks.c @@ -129,6 +129,8 @@ void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table) (f->name == CID_NAME_ANY || !strncmp(f->name, card->cid.prod_name, sizeof(card->cid.prod_name))) && + (f->ext_csd_rev == EXT_CSD_REV_ANY || + f->ext_csd_rev == card->ext_csd.rev) && (f->cis_vendor == card->cis.vendor || f->cis_vendor == (u16) SDIO_ANY_ID) && (f->cis_device == card->cis.device || -- cgit v1.2.3