s5pc110: mmc: calculated mmc0 capacity
authorJaehoon Chung <jh80.chung@samsung.com>
Thu, 21 Jan 2010 06:56:44 +0000 (15:56 +0900)
committerJaehoon Chung <jh80.chung@samsung.com>
Thu, 21 Jan 2010 06:56:44 +0000 (15:56 +0900)
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
common/cmd_mmc.c
drivers/mmc/mmc.c

index 0e3393b..248cb00 100644 (file)
@@ -109,7 +109,7 @@ static void print_mmcinfo(struct mmc *mmc)
                        (mmc->version >> 4) & 0xf, mmc->version & 0xf);
 
        printf("High Capacity: %s\n", mmc->high_capacity ? "Yes" : "No");
-       printf("Capacity: %lld\n", mmc->capacity);
+       printf("Capacity: %lld MByte\n", mmc->capacity);
 
        printf("Bus Width: %d-bit\n", mmc->bus_width);
 }
index b69ce15..26f6995 100644 (file)
@@ -395,6 +395,10 @@ int mmc_change_freq(struct mmc *mmc)
        if (ext_csd[212] || ext_csd[213] || ext_csd[214] || ext_csd[215])
                mmc->high_capacity = 1;
 
+       if (mmc->high_capacity)
+               mmc->capacity = (((ext_csd[215] << 24) | (ext_csd[214] << 16) |
+                       (ext_csd[213] << 8) | (ext_csd[21])) / (2 * 1024));
+
        cardtype = ext_csd[196] & 0xf;
 
        err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, 1);