1818static 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};
@@ -162,6 +194,29 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = {
162194 MMC_FIXUP ("IB2932" , CID_MANFID_KINGSTON , 0x0100 , add_quirk_mmc ,
163195 MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME ),
164196
197+ /*
198+ * Some SD cards reports discard support while they don't
199+ */
200+ MMC_FIXUP (CID_NAME_ANY , CID_MANFID_SANDISK_SD , 0x5344 , add_quirk_sd ,
201+ MMC_QUIRK_BROKEN_SD_DISCARD ),
202+
203+ /*
204+ * On some Kingston SD cards, multiple erases of less than 64
205+ * sectors can cause corruption.
206+ */
207+ MMC_FIXUP ("SD16G" , 0x41 , 0x3432 , add_quirk , MMC_QUIRK_ERASE_BROKEN ),
208+ MMC_FIXUP ("SD32G" , 0x41 , 0x3432 , add_quirk , MMC_QUIRK_ERASE_BROKEN ),
209+ MMC_FIXUP ("SD64G" , 0x41 , 0x3432 , add_quirk , MMC_QUIRK_ERASE_BROKEN ),
210+
211+ /*
212+ * Larger Integral SD cards using rebranded Phison controllers trash
213+ * nearby flash blocks after erases.
214+ */
215+ MMC_FIXUP ("SD64G" , 0x27 , 0x5048 , add_quirk , MMC_QUIRK_ERASE_BROKEN ),
216+ MMC_FIXUP ("SD128" , 0x27 , 0x5048 , add_quirk , MMC_QUIRK_ERASE_BROKEN ),
217+ MMC_FIXUP ("SD256" , 0x27 , 0x5048 , add_quirk , MMC_QUIRK_ERASE_BROKEN ),
218+ MMC_FIXUP ("SD512" , 0x27 , 0x5048 , add_quirk , MMC_QUIRK_ERASE_BROKEN ),
219+
165220 END_FIXUP
166221};
167222
0 commit comments