printf("Rd Block Len: %d\n", mmc->read_bl_len);
 
        printf("%s version %d.%d\n", IS_SD(mmc) ? "SD" : "MMC",
-                       (mmc->version >> 4) & 0xf, mmc->version & 0xf);
+                       (mmc->version >> 8) & 0xf, mmc->version & 0xff);
 
        printf("High Capacity: %s\n", mmc->high_capacity ? "Yes" : "No");
        puts("Capacity: ");
 
                                mmc->capacity = capacity;
                }
 
+               switch (ext_csd[EXT_CSD_REV]) {
+               case 1:
+                       mmc->version = MMC_VERSION_4_1;
+                       break;
+               case 2:
+                       mmc->version = MMC_VERSION_4_2;
+                       break;
+               case 3:
+                       mmc->version = MMC_VERSION_4_3;
+                       break;
+               case 5:
+                       mmc->version = MMC_VERSION_4_41;
+                       break;
+               case 6:
+                       mmc->version = MMC_VERSION_4_5;
+                       break;
+               }
+
                /*
                 * Check whether GROUP_DEF is set, if yes, read out
                 * group size from ext_csd directly, or calculate
 
 #include <linux/compiler.h>
 
 #define SD_VERSION_SD  0x20000
-#define SD_VERSION_2   (SD_VERSION_SD | 0x20)
-#define SD_VERSION_1_0 (SD_VERSION_SD | 0x10)
-#define SD_VERSION_1_10        (SD_VERSION_SD | 0x1a)
+#define SD_VERSION_2   (SD_VERSION_SD | 0x200)
+#define SD_VERSION_1_0 (SD_VERSION_SD | 0x100)
+#define SD_VERSION_1_10        (SD_VERSION_SD | 0x10a)
 #define MMC_VERSION_MMC                0x10000
 #define MMC_VERSION_UNKNOWN    (MMC_VERSION_MMC)
-#define MMC_VERSION_1_2                (MMC_VERSION_MMC | 0x12)
-#define MMC_VERSION_1_4                (MMC_VERSION_MMC | 0x14)
-#define MMC_VERSION_2_2                (MMC_VERSION_MMC | 0x22)
-#define MMC_VERSION_3          (MMC_VERSION_MMC | 0x30)
-#define MMC_VERSION_4          (MMC_VERSION_MMC | 0x40)
+#define MMC_VERSION_1_2                (MMC_VERSION_MMC | 0x102)
+#define MMC_VERSION_1_4                (MMC_VERSION_MMC | 0x104)
+#define MMC_VERSION_2_2                (MMC_VERSION_MMC | 0x202)
+#define MMC_VERSION_3          (MMC_VERSION_MMC | 0x300)
+#define MMC_VERSION_4          (MMC_VERSION_MMC | 0x400)
+#define MMC_VERSION_4_1                (MMC_VERSION_MMC | 0x401)
+#define MMC_VERSION_4_2                (MMC_VERSION_MMC | 0x402)
+#define MMC_VERSION_4_3                (MMC_VERSION_MMC | 0x403)
+#define MMC_VERSION_4_41       (MMC_VERSION_MMC | 0x429)
+#define MMC_VERSION_4_5                (MMC_VERSION_MMC | 0x405)
 
 #define MMC_MODE_HS            0x001
 #define MMC_MODE_HS_52MHz      0x010