Hi Reinhard , On Mon, Sep 6, 2010 at 10:07 PM, Reinhard Meyer <u-b...@emk-elektronik.de> wrote: > Dear Lei Wen, >> According spec, high capacity mmc should be calculated by sector >> number multiply by sector size. >> >> Signed-off-by: Lei Wen <lei...@marvell.com> >> --- >> drivers/mmc/mmc.c | 5 +++++ >> 1 files changed, 5 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c >> index ea398a5..bb97171 100644 >> --- a/drivers/mmc/mmc.c >> +++ b/drivers/mmc/mmc.c >> @@ -441,6 +441,11 @@ int mmc_change_freq(struct mmc *mmc) >> if (!ext_csd[185]) >> return 0; >> >> + if (!IS_SD(mmc) && mmc->high_capacity) { >> + mmc->capacity = ext_csd[212] | (ext_csd[213] << 8) >> + | (ext_csd[214] << 16) | (ext_csd[215] << 24); >> + mmc->capacity *= mmc->read_bl_len; >> + } >> /* High Speed is set, there are two types: 52MHz and 26MHz */ >> if (cardtype & MMC_HS_52MHZ) >> mmc->card_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS; > > Sorry to kick in again... > > a) this calculation is already done in line 717, and certainly does not belong > in a function called "mmc_change_freq". > > b) the current Top-Of-Tree code already calculates the capacity correctly: > > 32GB SDHC Card: > > Device: mci > Manufacturer ID: 3 > OEM: 5344 > Name: SD32G > Tran Speed: 25000000 > Rd Block Len: 512 > SD version 2.0 > High Capacity: Yes > Capacity: 31914983424 > Bus Width: 4-bit
Yes, for sd card, the calculation method is right. But for mmc with high capacity, the calculation is wrong. You could try a mmc card with high capacity, like emmc card. > > c) is that now an incremental patch to the one you sent previously? It is a separate one. :-) Best regards, Lei _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot