Skip to content

Commit 7c9921c

Browse files
committed
mmc: sd: add more known-bad cards with issues surrounding cache flush
The fixup method isn't ideal as it doesn't allow for date range specifiers, so this array will become unwieldy. For now, constrain to whole years which span production dates of cards that misbehave. Link: https://forums.raspberrypi.com/viewtopic.php?t=367459 Signed-off-by: Jonathan Bell <[email protected]>
1 parent 3be1a52 commit 7c9921c

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

drivers/mmc/core/quirks.h

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@
1818
static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
1919
/*
2020
* Kingston Canvas Go! Plus microSD cards never finish SD cache flush.
21-
* This has so far only been observed on cards from 11/2019, while new
22-
* cards from 2023/05 do not exhibit this behavior.
21+
* This has been observed on cards with dates from 2019/11 to 2021/11,
22+
* while new cards from 2023/05 do not exhibit this behavior.
2323
*/
24-
_FIXUP_EXT("SD64G", CID_MANFID_KINGSTON_SD, 0x5449, 2019, 11,
24+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_KINGSTON_SD, 0x5449, 2019, CID_MONTH_ANY,
25+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
26+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
27+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_KINGSTON_SD, 0x5449, 2020, CID_MONTH_ANY,
28+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
29+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
30+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_KINGSTON_SD, 0x5449, 2021, CID_MONTH_ANY,
2531
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
2632
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
2733

@@ -33,6 +39,17 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
3339
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
3440
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
3541

42+
/*
43+
* Sandisk A2 cards prior to 2021 will hang and require a reset if a
44+
* cache flush is issued with writes pending.
45+
*/
46+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, 2019, CID_MONTH_ANY,
47+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
48+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
49+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, 2020, CID_MONTH_ANY,
50+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
51+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
52+
3653
END_FIXUP
3754
};
3855

0 commit comments

Comments
 (0)