diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c
index dcbde8935a60af85e3edaadd073a4ba1b4236b55..957b9877a01adaa59a7aef6364bec3d8f82672bc 100644
--- a/drivers/mmc/omap_hsmmc.c
+++ b/drivers/mmc/omap_hsmmc.c
@@ -467,6 +467,14 @@ int omap_mmc_init(int dev_index)
 
 	mmc->b_max = 0;
 
+#if defined(CONFIG_OMAP34XX)
+	/*
+	 * Silicon revs 2.1 and older do not support multiblock transfers.
+	 */
+	if ((get_cpu_family() == CPU_OMAP34XX) && (get_cpu_rev() <= CPU_3XX_ES21))
+		mmc->b_max = 1;
+#endif
+
 	mmc_register(mmc);
 
 	return 0;