diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index f7827f527aa5cac1a4c651422d1c2edcb2dc1324..985d6a345909e43b8510180381b3667fd7bfda45 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -388,7 +388,27 @@ static int mmc_read_blocks(struct mmc *mmc, void *dst, lbaint_t start,
 			return 0;
 		}
 	}
-
+#ifdef CONFIG_MMC_TRACE
+	{
+		int cnt = blkcnt;
+		unsigned *p = dst;
+
+		while (cnt--) {
+			int rem = mmc->read_bl_len;
+			int offset = 0;
+
+			printf("Block 0x%lx\n", start++);
+			while (rem > 0) {
+				printf("%03x: %08x %08x %08x %08x  %08x %08x %08x %08x\n",
+						offset, p[0], p[1], p[2], p[3],
+						p[4], p[5], p[6], p[7]);
+				rem -= 32;
+				offset += 32;
+				p += 8;
+			}
+		}
+	}
+#endif
 	return blkcnt;
 }