On 1/26/23 18:24, Loic Poulain wrote: > When secure/insecure TRIM operations are supported. > When used as erase command argument it applies the > erase operation to write blocks instead of erase > groups. > > Signed-off-by: Loic Poulain <loic.poul...@linaro.org> > Reviewed-by: Simon Glass <s...@chromium.org> > Reviewed-by: Jaehoon Chung <jh80.ch...@samsung.com>
Applied to u-boot-mmc/master. Best Regards, Jaehoon Chung > --- > v2: Add mmc unit test change to the series > > drivers/mmc/mmc.c | 3 +++ > include/mmc.h | 4 ++++ > 2 files changed, 7 insertions(+) > > diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c > index 210703ea46..e5f5ccb5f4 100644 > --- a/drivers/mmc/mmc.c > +++ b/drivers/mmc/mmc.c > @@ -2432,6 +2432,9 @@ static int mmc_startup_v4(struct mmc *mmc) > > mmc->wr_rel_set = ext_csd[EXT_CSD_WR_REL_SET]; > > + mmc->can_trim = > + !!(ext_csd[EXT_CSD_SEC_FEATURE] & EXT_CSD_SEC_FEATURE_TRIM_EN); > + > return 0; > error: > if (mmc->ext_csd) { > diff --git a/include/mmc.h b/include/mmc.h > index 571fa625d0..f6e23625ca 100644 > --- a/include/mmc.h > +++ b/include/mmc.h > @@ -241,6 +241,7 @@ static inline bool mmc_is_tuning_cmd(uint cmdidx) > #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ > #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ > #define EXT_CSD_BOOT_MULT 226 /* RO */ > +#define EXT_CSD_SEC_FEATURE 231 /* RO */ > #define EXT_CSD_GENERIC_CMD6_TIME 248 /* RO */ > #define EXT_CSD_BKOPS_SUPPORT 502 /* RO */ > > @@ -315,6 +316,8 @@ static inline bool mmc_is_tuning_cmd(uint cmdidx) > #define EXT_CSD_WR_DATA_REL_USR (1 << 0) /* user data > area WR_REL */ > #define EXT_CSD_WR_DATA_REL_GP(x) (1 << ((x)+1)) /* GP part (x+1) WR_REL > */ > > +#define EXT_CSD_SEC_FEATURE_TRIM_EN (1 << 4) /* Support secure & insecure > trim */ > + > #define R1_ILLEGAL_COMMAND (1 << 22) > #define R1_APP_CMD (1 << 5) > > @@ -687,6 +690,7 @@ struct mmc { > uint tran_speed; > uint legacy_speed; /* speed for the legacy mode provided by the card */ > uint read_bl_len; > + bool can_trim; > #if CONFIG_IS_ENABLED(MMC_WRITE) > uint write_bl_len; > uint erase_grp_size; /* in 512-byte sectors */