On 8/17/21 6:20 PM, Ye Li wrote: > HS400_ES is missed when down grade to HS mode during > device_remove the mmc device > > Signed-off-by: Ye Li <ye...@nxp.com>
Reviewed-by: Jaehoon Chung <jh80.ch...@samsung.com> Best Regards, Jaehoon Chung > --- > drivers/mmc/mmc.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c > index a1fd533..3cb6fda 100644 > --- a/drivers/mmc/mmc.c > +++ b/drivers/mmc/mmc.c > @@ -2092,14 +2092,16 @@ static int mmc_select_mode_and_width(struct mmc *mmc, > uint card_caps) > } > > #if CONFIG_IS_ENABLED(MMC_HS200_SUPPORT) || \ > - CONFIG_IS_ENABLED(MMC_HS400_SUPPORT) > + CONFIG_IS_ENABLED(MMC_HS400_SUPPORT) || \ > + CONFIG_IS_ENABLED(MMC_HS400_ES_SUPPORT) > /* > * In case the eMMC is in HS200/HS400 mode, downgrade to HS mode > * before doing anything else, since a transition from either of > * the HS200/HS400 mode directly to legacy mode is not supported. > */ > if (mmc->selected_mode == MMC_HS_200 || > - mmc->selected_mode == MMC_HS_400) > + mmc->selected_mode == MMC_HS_400 || > + mmc->selected_mode == MMC_HS_400_ES) > mmc_set_card_speed(mmc, MMC_HS, true); > else > #endif > @@ -2952,7 +2954,7 @@ int mmc_deinit(struct mmc *mmc) > return sd_select_mode_and_width(mmc, caps_filtered); > } else { > caps_filtered = mmc->card_caps & > - ~(MMC_CAP(MMC_HS_200) | MMC_CAP(MMC_HS_400)); > + ~(MMC_CAP(MMC_HS_200) | MMC_CAP(MMC_HS_400) | > MMC_CAP(MMC_HS_400_ES)); > > return mmc_select_mode_and_width(mmc, caps_filtered); > } >