Thank you, Jaehoon. So I will send the new version later :)
Best regards, Yangbo Lu > -----Original Message----- > From: Jaehoon Chung [mailto:jh80.ch...@samsung.com] > Sent: Tuesday, August 02, 2016 3:13 PM > To: Yangbo Lu; Ziyuan Xu; u-boot@lists.denx.de; Tom Rini > Cc: Pantelis Antoniou > Subject: Re: [U-Boot] [PATCH] mmc: send CMD0 before CMD1 for some MMC > cards > > On 08/02/2016 04:03 PM, Yangbo Lu wrote: > > Hi Jaehoon, > > > > > >> -----Original Message----- > >> From: Jaehoon Chung [mailto:jh80.ch...@samsung.com] > >> Sent: Thursday, July 28, 2016 4:40 PM > >> To: Yangbo Lu; Ziyuan Xu; u-boot@lists.denx.de; Tom Rini > >> Cc: Pantelis Antoniou > >> Subject: Re: [U-Boot] [PATCH] mmc: send CMD0 before CMD1 for some MMC > >> cards > >> > >> Hi Yangbo, > >> > >> On 07/28/2016 11:45 AM, Yangbo Lu wrote: > >>> Hi Ziyuan and Jaehoon, > >>> > >>> > >>>> -----Original Message----- > >>>> From: Ziyuan Xu [mailto:xzy...@rock-chips.com] > >>>> Sent: Wednesday, July 27, 2016 9:37 PM > >>>> To: Jaehoon Chung; Yangbo Lu; u-boot@lists.denx.de; Tom Rini > >>>> Cc: Pantelis Antoniou > >>>> Subject: Re: [U-Boot] [PATCH] mmc: send CMD0 before CMD1 for some > >>>> MMC cards > >>>> > >>>> > >>>> > >>>> On 2016年07月27日 19:15, Jaehoon Chung wrote: > >>>>> On 07/27/2016 04:28 PM, Yangbo Lu wrote: > >>>>>> Hi Tom, > >>>>>> > >>>>>> Could you help to assign this mmc patch reviewing to right person? > >>>>>> It seems no one had reviewed it for almost half year. > >>>>>> > >>>>>> And another my mmc patch also needs to be reviewed. > >>>>>> I submitted in May. Please help. > >>>>>> http://patchwork.ozlabs.org/patch/624448/ > >>>>>> > >>>>>> > >>>>>> Thank you very much. > >>>>>> > >>>>>> > >>>>>> Best regards, > >>>>>> Yangbo Lu > >>>>>> > >>>>>>> -----Original Message----- > >>>>>>> From: Yangbo Lu [mailto:yangbo...@nxp.com] > >>>>>>> Sent: Wednesday, March 09, 2016 11:00 AM > >>>>>>> To: u-boot@lists.denx.de > >>>>>>> Cc: Pantelis Antoniou; Yangbo Lu > >>>>>>> Subject: [PATCH] mmc: send CMD0 before CMD1 for some MMC cards > >>>>>>> > >>>>>>> When the MMC framework was added in u-boot, the mmc_go_idle was > >>>>>>> added before mmc_send_op_cond_iter in function mmc_send_op_cond > >>>>>>> annotating that some cards seemed to need this. Actually, we > >>>>>>> still need to do this in function mmc_complete_op_cond for those > cards. > >>>>>>> This has been verified on Micron MTFC4GACAECN eMMC chip. > >>>>> If there is no go_idle(), then what happen? > >>>>> If you share the information more, i can check the more.. > >>>> Sounds interesting, I also want want to know what happen? > >>>> It seems like you failed in CMD1? The eMMC device was always in > >>>> busy device within 1 second? > >>> > >>> [Lu Yangbo-B47093] This was an issue which our customer reported and > >> required us to fix in March. > >>> They used NXP LS1020A platform and Micron MTFC4GACAECN eMMC, and > >> reported they had to add CMD0 as below. > >>> Otherwise it couldn’t read OCR. > >>> > >>> static int mmc_complete_op_cond(struct mmc *mmc) { > >>> struct mmc_cmd cmd; > >>> int timeout = 1000; > >>> uint start; > >>> int err; > >>> > >>> #if defined (XXX_CHANGED) > >>> // our eMMC chip (Micron MTFC4GACAECN) requires that it be put in > >> idle mode before > >>> // negociating the operating voltage levels. > >>> mmc_go_idle(mmc); > >>> #endif > >> > >> Well, it seems to fix workaround. mmc_go_idle() means Device Reset. > >> > >> mmc_complete_op_cond() function has added for reducing the booting > time. > >> If mmc_go_idle() is added at here, there is no benefit, and it should > >> be back to old concept. > >> > >> I don't agree this patch..now. > >> > > > > [Lu Yangbo-B47093] Did you notice mmc_send_op_cond function? Before > mmc_send_op_cond_iter sending CMD1, there always was mmc_go_idle. > > I don’t know why said 'Some cards seem to need this', but it must fix > some issue. > > > > static int mmc_send_op_cond(struct mmc *mmc) { > > int err, i; > > > > /* Some cards seem to need this */ > > mmc_go_idle(mmc); > > > > /* Asking to the card its capabilities */ > > for (i = 0; i < 2; i++) { > > err = mmc_send_op_cond_iter(mmc, i != 0); > > if (err) > > return err; > > > > /* exit if not busy (flag seems to be inverted) */ > > if (mmc->ocr & OCR_BUSY) > > break; > > } > > mmc->op_cond_pending = 1; > > return 0; > > } > > > > Now in mmc_complete_op_cond function, there may be the same issue. > Without the mmc_go_idle, mmc_send_op_cond_iter failed to get ocr. > > Maybe I should move mmc_go_idle just before mmc_send_op_cond_iter, like > this. > > > > static int mmc_complete_op_cond(struct mmc *mmc) { > > struct mmc_cmd cmd; > > int timeout = 1000; > > uint start; > > int err; > > > > mmc->op_cond_pending = 0; > > if (!(mmc->ocr & OCR_BUSY)) { > > start = get_timer(0); > > while (1) { > > /* Some cards seem to need this */ > > mmc_go_idle(mmc); > > err = mmc_send_op_cond_iter(mmc, 1); > > If you need to add the mmc_go_idle(), then I think this point is right. :) > > Best Regards, > Jaehoon Chung > > > > > If you think it's not proper, do you have any suggestion? > > :) > > > > Thanks a lot. > > > >> Best Regards, > >> Jaehoon Chung > >> > >>> > >>> > >>> I hadn’t reproduce this to get more details about this issue since I > >> didn’t have one this kind eMMC card that time. > >>> Thanks. > >>> > >>>>> > >>>>> Best Regards, > >>>>> Jaehoon Chung > >>>>> > >>>>>>> Signed-off-by: Yangbo Lu <yangbo...@nxp.com> > >>>>>>> --- > >>>>>>> drivers/mmc/mmc.c | 3 +++ > >>>>>>> 1 file changed, 3 insertions(+) > >>>>>>> > >>>>>>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index > >>>>>>> ede5d6e..82e3268 > >>>>>>> 100644 > >>>>>>> --- a/drivers/mmc/mmc.c > >>>>>>> +++ b/drivers/mmc/mmc.c > >>>>>>> @@ -418,6 +418,9 @@ static int mmc_complete_op_cond(struct mmc > *mmc) > >>>>>>> uint start; > >>>>>>> int err; > >>>>>>> > >>>>>>> + /* Some cards seem to need this */ > >>>>>>> + mmc_go_idle(mmc); > >>>>>>> + > >>>>>>> mmc->op_cond_pending = 0; > >>>>>>> if (!(mmc->ocr & OCR_BUSY)) { > >>>>>>> start = get_timer(0); > >>>>>>> -- > >>>>>>> 2.1.0.27.g96db324 > >>>>>> _______________________________________________ > >>>>>> U-Boot mailing list > >>>>>> U-Boot@lists.denx.de > >>>>>> http://lists.denx.de/mailman/listinfo/u-boot > >>>>>> > >>>>>> > >>>>>> > >>>>> _______________________________________________ > >>>>> U-Boot mailing list > >>>>> U-Boot@lists.denx.de > >>>>> http://lists.denx.de/mailman/listinfo/u-boot > >>>> > >>> > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot