|
@@ -1409,7 +1409,10 @@ static unsigned int mmc_mmc_erase_timeout(struct mmc_card *card,
|
|
|
{
|
|
|
unsigned int erase_timeout;
|
|
|
|
|
|
- if (card->ext_csd.erase_group_def & 1) {
|
|
|
+ if (arg == MMC_DISCARD_ARG ||
|
|
|
+ (arg == MMC_TRIM_ARG && card->ext_csd.rev >= 6)) {
|
|
|
+ erase_timeout = card->ext_csd.trim_timeout;
|
|
|
+ } else if (card->ext_csd.erase_group_def & 1) {
|
|
|
/* High Capacity Erase Group Size uses HC timeouts */
|
|
|
if (arg == MMC_TRIM_ARG)
|
|
|
erase_timeout = card->ext_csd.trim_timeout;
|
|
@@ -1681,8 +1684,6 @@ int mmc_can_trim(struct mmc_card *card)
|
|
|
{
|
|
|
if (card->ext_csd.sec_feature_support & EXT_CSD_SEC_GB_CL_EN)
|
|
|
return 1;
|
|
|
- if (mmc_can_discard(card))
|
|
|
- return 1;
|
|
|
return 0;
|
|
|
}
|
|
|
EXPORT_SYMBOL(mmc_can_trim);
|