platform: msm_shared: Initialize RPMB paramters in ufs init
The rpmb logical block size in sectors and rpmb read write size values
are initialized by calls to unit descriptor and geometry descriptor.
Change-Id: I69fbdf8b9c40bfe0c4ee5af89acb030efe128d7f
diff --git a/platform/msm_shared/ufs.c b/platform/msm_shared/ufs.c
index 1fd26b4..3cb1487 100644
--- a/platform/msm_shared/ufs.c
+++ b/platform/msm_shared/ufs.c
@@ -89,6 +89,31 @@
qgic_change_interrupt_cfg(UFS_IRQ, INTERRUPT_LVL_N_TO_N);
}
+static void ufs_rpmb_init(struct ufs_dev *dev)
+{
+ int ret = 0;
+
+ // calculate the size of rpmb partition in sectors
+ ret = dme_read_unit_desc(dev, UFS_WLUN_RPMB);
+ if (ret != UFS_SUCCESS)
+ {
+ dprintf(CRITICAL, "UFS dme_read_unit_desc failed for RPMB Partition\n");
+ return;
+ }
+
+ // gets the number of rpmb frames allowed in a single UPIU commands
+ ret = dme_read_geo_desc(dev, UFS_WLUN_RPMB);
+ if (ret != UFS_SUCCESS)
+ {
+ dprintf(CRITICAL, "UFS dme_read_geo_desc failed for RPMB Partition\n");
+ return;
+ }
+#ifdef DEBUG_UFS
+ dprintf(INFO, "RPMB: Logical Block Count: 0x%x\n", dev->rpmb_num_blocks);
+ dprintf(INFO, "RPMB: RPMB Read Write Size: 0x%x\n", dev->rpmb_rw_size);
+#endif
+}
+
int ufs_read(struct ufs_dev* dev, uint64_t start_lba, addr_t buffer, uint32_t num_blocks)
{
struct scsi_rdwr_req req;