diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 72b725462e7d90dadedd728daa0f0ea99af2f29a..f65a7b005a2c9db349beceae42b64bdb827420b7 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -784,6 +784,8 @@ retry_scr:
 			break;
 		case 2:
 			mmc->version = SD_VERSION_2;
+			if ((mmc->scr[0] >> 15) & 0x1)
+				mmc->version = SD_VERSION_3;
 			break;
 		default:
 			mmc->version = SD_VERSION_1_0;
diff --git a/include/mmc.h b/include/mmc.h
index d5b3a9ea383af16169ba417eb43b7f661ab0847a..f0d4820627384c3b2838e0375a2014b472b265d4 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -30,6 +30,7 @@
 #include <linux/compiler.h>
 
 #define SD_VERSION_SD	0x20000
+#define SD_VERSION_3	(SD_VERSION_SD | 0x300)
 #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)