Skip to content

Commit 4604c34

Browse files
committed
Revert "mmc/core/quirks.h: Partial revert"
This reverts commit 27c1f66.
1 parent 2dca475 commit 4604c34

File tree

1 file changed

+61
-6
lines changed

1 file changed

+61
-6
lines changed

drivers/mmc/core/quirks.h

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,22 @@
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 from 2019/11 and 2021/11, while new
22+
* cards from 2023/05 and 2024/08 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+
28+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_KINGSTON_SD, 0x5449, 2020, CID_MONTH_ANY,
29+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
30+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
31+
32+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_KINGSTON_SD, 0x5449, 2021, CID_MONTH_ANY,
33+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
34+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
35+
36+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_KINGSTON_SD, 0x5449, 2022, CID_MONTH_ANY,
2537
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
2638
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
2739

@@ -45,10 +57,30 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
4557
MMC_QUIRK_NO_UHS_DDR50_TUNING, EXT_CSD_REV_ANY),
4658

4759
/*
48-
* Some SD cards reports discard support while they don't
60+
* Samsung Pro Plus/EVO Plus/Pro Ultimate SD cards (2023) claim to cache
61+
* flush OK, but become unresponsive afterwards.
4962
*/
50-
MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd,
51-
MMC_QUIRK_BROKEN_SD_DISCARD),
63+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_SAMSUNG_SD, 0x534d, 2023, CID_MONTH_ANY,
64+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
65+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
66+
67+
/*
68+
* Early Sandisk Extreme and Extreme Pro A2 cards never finish SD cache
69+
* flush in CQ mode. Latest card date this was seen on is 10/2020.
70+
*/
71+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, 2019, CID_MONTH_ANY,
72+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
73+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
74+
75+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, 2020, CID_MONTH_ANY,
76+
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
77+
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
78+
79+
/* SD A2 allow-list - only trust CQ on these cards */
80+
/* Raspberry Pi A2 cards */
81+
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_LONGSYS_SD, 0x4c53, CID_YEAR_ANY, CID_MONTH_ANY,
82+
cid_rev(1, 0, 0, 0), -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
83+
MMC_QUIRK_WORKING_SD_CQ, EXT_CSD_REV_ANY),
5284

5385
END_FIXUP
5486
};
@@ -153,6 +185,29 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = {
153185
MMC_FIXUP("M62704", CID_MANFID_KINGSTON, 0x0100, add_quirk_mmc,
154186
MMC_QUIRK_TRIM_BROKEN),
155187

188+
/*
189+
* Some SD cards reports discard support while they don't
190+
*/
191+
MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd,
192+
MMC_QUIRK_BROKEN_SD_DISCARD),
193+
194+
/*
195+
* On some Kingston SD cards, multiple erases of less than 64
196+
* sectors can cause corruption.
197+
*/
198+
MMC_FIXUP("SD16G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
199+
MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
200+
MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
201+
202+
/*
203+
* Larger Integral SD cards using rebranded Phison controllers trash
204+
* nearby flash blocks after erases.
205+
*/
206+
MMC_FIXUP("SD64G", 0x27, 0x5048, add_quirk, MMC_QUIRK_ERASE_BROKEN),
207+
MMC_FIXUP("SD128", 0x27, 0x5048, add_quirk, MMC_QUIRK_ERASE_BROKEN),
208+
MMC_FIXUP("SD256", 0x27, 0x5048, add_quirk, MMC_QUIRK_ERASE_BROKEN),
209+
MMC_FIXUP("SD512", 0x27, 0x5048, add_quirk, MMC_QUIRK_ERASE_BROKEN),
210+
156211
END_FIXUP
157212
};
158213

0 commit comments

Comments
 (0)