Hello Haibo, > -----Original Message----- > From: Bough Chen <[email protected]> > Sent: Wednesday, March 3, 2021 12:27 PM > To: ZHIZHIKIN Andrey <[email protected]>; Peng Fan > <[email protected]>; [email protected]; [email protected] > Cc: dl-uboot-imx <[email protected]>; [email protected]; > [email protected]; Ye Li <[email protected]> > Subject: RE: [PATCH 2/2] mmc: fsl_esdhc_imx: remove redundant cmd11 related > code. > > > -----Original Message----- > > From: ZHIZHIKIN Andrey [mailto:[email protected]] > > Sent: 2021年3月3日 19:00 > > To: Bough Chen <[email protected]>; Peng Fan <[email protected]>; > > [email protected]; [email protected] > > Cc: dl-uboot-imx <[email protected]>; [email protected]; > > [email protected]; Ye Li <[email protected]> > > Subject: RE: [PATCH 2/2] mmc: fsl_esdhc_imx: remove redundant cmd11 > > related code. > > > > > > > > > -----Original Message----- > > > From: [email protected] <[email protected]> > > > Sent: Wednesday, March 3, 2021 10:06 AM > > > To: [email protected]; [email protected]; [email protected] > > > Cc: [email protected]; [email protected]; [email protected]; > > > ZHIZHIKIN Andrey <[email protected]>; > > > [email protected]; [email protected] > > > Subject: [PATCH 2/2] mmc: fsl_esdhc_imx: remove redundant cmd11 > > > related code. > > > > > > From: Haibo Chen <[email protected]> > > > > > > Common code already handle the voltage switch sequence based on spec, > > > so remove the redundant voltage switch code. > > > > > > Signed-off-by: Haibo Chen <[email protected]> > > > --- > > > drivers/mmc/fsl_esdhc_imx.c | 10 +--------- > > > 1 file changed, 1 insertion(+), 9 deletions(-) > > > > > > diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c > > > index > > > af36558b3c..a199cf3df6 100644 > > > --- a/drivers/mmc/fsl_esdhc_imx.c > > > +++ b/drivers/mmc/fsl_esdhc_imx.c > > > @@ -515,15 +515,6 @@ static int esdhc_send_cmd_common(struct > > > fsl_esdhc_priv *priv, struct mmc *mmc, > > > goto out; > > > } > > > > > > - /* Switch voltage to 1.8V if CMD11 succeeded */ > > > - if (cmd->cmdidx == SD_CMD_SWITCH_UHS18V) { > > > - esdhc_setbits32(®s->vendorspec, > > ESDHC_VENDORSPEC_VSELECT); > > > - > > > - printf("Run CMD11 1.8V switch\n"); > > > - /* Sleep for 5 ms - max time for card to switch to 1.8V */ > > > - udelay(5000); > > > - } > > > - > > > /* Workaround for ESDHC errata ENGcm03648 */ > > > if (!data && (cmd->resp_type & MMC_RSP_BUSY)) { > > > int timeout = 50000; > > > @@ -839,6 +830,7 @@ static int esdhc_set_voltage(struct mmc *mmc) > > > } > > > #endif > > > esdhc_setbits32(®s->vendorspec, > > > ESDHC_VENDORSPEC_VSELECT); > > > + mdelay(5); > > > > Why is this delay introduced here? It is not clear from the commit message > > whether and why it is required here. > > > > If this is kept from the removed block - maybe it is better to move the > > corresponding comment here as well. > > Hi Andrev, > > Thanks for your careful review!
Thanks for the patch series on the first place! This allows to switch uSDHC into high-speed modes, which is quite valuable. > Without this 5ms delay, with patch1 and remove the upper redundant cmd11 > related code, > mmc_switch_voltage() will fail, due to the second mmc_wait_dat0() return > timeout. Seems for usdhc, > gate off clock for 10ms is not enough. If total delay 15ms, then the second > mmc_wait_dat0() can return normal. > So I add 5ms delay here. Yes, I should add a comment for this 5ms in the code. Exactly this information is missing with the patch, as later on it would be quite difficult to grasp on why this mdelay() was added on the first place. > You can also do the test on your side. I've already did and reported with the boot log, mmc info, and my Tested-by: tag. > > Best Regards > Haibo > > > > > > if (esdhc_read32(®s->vendorspec) & > > ESDHC_VENDORSPEC_VSELECT) > > > return 0; > > > > > > -- > > > 2.17.1 > > > > -- andrey -- andrey

