On 03/30/2012 02:24 PM, Lei Wen wrote: > Hi Jaehoon, > > On Fri, Mar 30, 2012 at 12:36 PM, Jaehoon Chung <jh80.ch...@samsung.com> > wrote: >> Hi Lei. >> >> First, thanks for implemented the generic sdhci controller. > > It is my pleasure to share this common code, and I'm glad that it is > used for other platforms now. :) > >> >> On 03/30/2012 12:33 PM, Lei Wen wrote: >> >>> Hi Jaehoon, >>> >>> On Fri, Mar 30, 2012 at 10:39 AM, Jaehoon Chung <jh80.ch...@samsung.com> >>> wrote: >>>> When response type is R1b, mask value is added the SDHCI_INT_DAT_END. >>>> but in while(), didn't check that flag. >>>> So sdhci controller didn't work fine. >>>> CMD6 didn't always complete. >>> >>> Could you elaborate it more in details? >>> do { >>> stat = sdhci_readl(host, SDHCI_INT_STATUS); >>> if (stat & SDHCI_INT_ERROR) >>> break; >>> } while ((stat & mask) != mask); >>> Here in the while condition, if the status read out don't contain all mask, >>> then the looping would continue. >>> Do you mean you just need a retry max time set here? >> >> I found that didn't initialize the eMMC card. >> Because when send CMD6, running infinite loop in there. >> CMD6's mask is set to SDHCI_INT_RESPONSE and SDHCI_INT_DATA_END. >> (Because response type is R1B). >> Then mask value maybe is 0x3... >> stat = sdhci_readl(host, SDHCI_INT_STATUS); >> stat is 0x1.(cmd is done response). >> but in while(), stat & mask is 0x1, and mask is 0x3. >> ...doing while(). >> If just add the timeout, then always produced the timeout error. > > I see your problems. Your silicon only provide SDHCI_INT_RESPONSE for > r1b, while the standard > sdhci spec require both the flag is set when the r1b command is finished. > So my point is you could add a quirk condition check in the previously > endless loop checking. > If the quirk is true, and timeout count is met, then you could jump > out of original looping. > And for later checking, this timeout could be regarded as no error, > since the controller would never > return the SDHCI_INT_DATA_END in your case.
Anyway it's need that use the timeout value. right? And in our case, It's means that use the quirks? I didn't find that the sdhci spec require the flag is set when the r1b command is finished. where is specified? I just understand that the transfer complete bit should be set to 1, when send the command with busy flag or read/write with data. Is this means? If you want to use the quirks, i will test with applied your opinion. Best Regards, Jaehoon Chung > >> >> How did you test? Is initialize the eMMC card? >> (I tested with eMMC4.41 (exynos4).) > > I test on many Marvell platforms, with sd, mmc, emmc, they all works fine. > >> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot