platform: msm_shared: Add mmc wrapper changes for UFS erase
CRs-Fixed: 573103 555512
Change-Id: Ieccb34f56a7e82a39ddf02d49d7444c6a4cb215c
diff --git a/platform/msm_shared/mmc_wrapper.c b/platform/msm_shared/mmc_wrapper.c
index 46ce941..5488d48 100644
--- a/platform/msm_shared/mmc_wrapper.c
+++ b/platform/msm_shared/mmc_wrapper.c
@@ -66,6 +66,15 @@
return 0;
}
+__WEAK uint32_t ufs_get_erase_blk_size(struct ufs_dev *dev)
+{
+ return 0;
+}
+
+__WEAK int ufs_erase(struct ufs_dev* dev, uint64_t start_lba, uint32_t num_blocks)
+{
+ return 0;
+}
/*
* Function: get mmc card
* Arg : None
@@ -208,6 +217,7 @@
return ret;
}
+
/*
* Function: mmc get erase unit size
* Arg : None
@@ -306,20 +316,21 @@
uint32_t blk_count;
uint64_t blks_to_erase;
+ block_size = mmc_get_device_blocksize();
+
+ dev = target_mmc_device();
+
+ ASSERT(!(addr % block_size));
+ ASSERT(!(len % block_size));
+
if (target_boot_device_emmc())
{
- block_size = mmc_get_device_blocksize();
erase_unit_sz = mmc_get_eraseunit_size();
dprintf(SPEW, "erase_unit_sz:0x%x\n", erase_unit_sz);
- ASSERT(!(addr % block_size));
- ASSERT(!(len % block_size));
-
blk_addr = addr / block_size;
blk_count = len / block_size;
- dev = target_mmc_device();
-
dprintf(INFO, "Erasing card: 0x%x:0x%x\n", blk_addr, blk_count);
head_unit = blk_addr / erase_unit_sz;
@@ -363,6 +374,14 @@
}
}
+ else
+ {
+ if(ufs_erase((struct ufs_dev *)dev, addr, (len / block_size)))
+ {
+ dprintf(CRITICAL, "mmc_erase_card: UFS erase failed\n");
+ return 1;
+ }
+ }
return 0;
}