Fixed a bug in card capacity calculation for MMC high-capacity cards.

Signed-off-by: Alagu Sankar <alagusan...@embwise.com>
---
 drivers/mmc/mmc.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 959d8ad..e7abf94 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -393,6 +393,7 @@ int mmc_change_freq(struct mmc *mmc)
        char ext_csd[512];
        char cardtype;
        int err;
+       unsigned int sec_count;
 
        mmc->card_caps = 0;
 
@@ -407,8 +408,14 @@ int mmc_change_freq(struct mmc *mmc)
        if (err)
                return err;
 
-       if (ext_csd[212] || ext_csd[213] || ext_csd[214] || ext_csd[215])
+       sec_count = ((uint)ext_csd[212] |
+                       ((uint)ext_csd[213] << 8) |
+                       ((uint)ext_csd[214] << 16) |
+                       ((uint)ext_csd[215] << 24));
+       if (sec_count) {
                mmc->high_capacity = 1;
+               mmc->capacity = sec_count * 512;
+       }
 
        cardtype = ext_csd[196] & 0xf;
 
-- 
1.6.0.6

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to