18
18
static const struct mmc_fixup __maybe_unused mmc_sd_fixups [] = {
19
19
/*
20
20
* 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.
23
23
*/
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 ,
25
37
0 , -1ull , SDIO_ANY_ID , SDIO_ANY_ID , add_quirk_sd ,
26
38
MMC_QUIRK_BROKEN_SD_CACHE , EXT_CSD_REV_ANY ),
27
39
@@ -45,10 +57,30 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
45
57
MMC_QUIRK_NO_UHS_DDR50_TUNING , EXT_CSD_REV_ANY ),
46
58
47
59
/*
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.
49
62
*/
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 ),
52
84
53
85
END_FIXUP
54
86
};
@@ -153,6 +185,29 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = {
153
185
MMC_FIXUP ("M62704" , CID_MANFID_KINGSTON , 0x0100 , add_quirk_mmc ,
154
186
MMC_QUIRK_TRIM_BROKEN ),
155
187
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
+
156
211
END_FIXUP
157
212
};
158
213
0 commit comments