diff mbox

[U-Boot,10/18] mmc: read the high capacity WP group size for eMMC

Message ID 1417165845-30960-11-git-send-email-Diego.SantaCruz@spinetix.com
State Superseded
Delegated to: Pantelis Antoniou
Headers show

Commit Message

Diego Santa Cruz Nov. 28, 2014, 9:10 a.m. UTC
Read the eMMC high capacity write protect group size at mmc device
initialization. This is useful to correctly partition an eMMC device,
as partitions need to be aligned to this size.
---
 drivers/mmc/mmc.c |    6 ++++++
 include/mmc.h     |    1 +
 2 files changed, 7 insertions(+), 0 deletions(-)
diff mbox

Patch

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index cfba0aa..3879899 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1061,7 +1061,9 @@  static int mmc_startup(struct mmc *mmc)
 				return err;
 			else
 				ext_csd[EXT_CSD_ERASE_GROUP_DEF] = 1;
+		}
 
+		if (ext_csd[EXT_CSD_ERASE_GROUP_DEF] & 0x01) {
 			/* Read out group size from ext_csd */
 			mmc->erase_grp_size =
 				ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] * 1024;
@@ -1073,6 +1075,10 @@  static int mmc_startup(struct mmc *mmc)
 			mmc->erase_grp_size = (erase_gsz + 1)
 				* (erase_gmul + 1);
 		}
+
+		mmc->hc_wp_grp_size = 1024
+			* ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE]
+			* ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
 	}
 
 	err = mmc_set_capacity(mmc, mmc->part_num);
diff --git a/include/mmc.h b/include/mmc.h
index fcfe9c9..bf08bec 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -314,6 +314,7 @@  struct mmc {
 	uint read_bl_len;
 	uint write_bl_len;
 	uint erase_grp_size;	/* in 512-byte sectors */
+	uint hc_wp_grp_size;	/* in 512-byte sectors */
 	u64 capacity;
 	u64 capacity_user;
 	u64 capacity_boot;