platform: msm_shared: RPMB Write performance enhancement

* Add support to support RPMB performance enhancement as per
  emmc 5.1 spec.
* Add support for rel_wr_count for UFS
* Invalidate response buffer after read result and fix error
  checking for ufs rpmb write

Change-Id: I0e0aa2a76a5b19d7b096025ad76467eb435a69b5
diff --git a/platform/msm_shared/rpmb/rpmb_listener.c b/platform/msm_shared/rpmb/rpmb_listener.c
index 7cf0b79..c9623e2 100644
--- a/platform/msm_shared/rpmb/rpmb_listener.c
+++ b/platform/msm_shared/rpmb/rpmb_listener.c
@@ -67,6 +67,8 @@
 	uint32_t num_sectors;
 	uint32_t req_buff_len;
 	uint32_t req_buff_offset;
+	uint32_t version;
+	uint32_t rel_wr_count;
 }__PACKED;
 
 struct tz_rpmb_rw_resp
@@ -75,6 +77,7 @@
 	int32_t  status;
 	uint32_t res_buff_len;
 	uint32_t res_buff_offset;
+	uint32_t version;
 }__PACKED;
 
 typedef int (*ListenerCallback)(void*, uint32_t);
@@ -113,14 +116,16 @@
 		case TZ_CM_CMD_RPMB_READ:
 #if DEBUG_RPMB
 			dprintf(INFO, "Read Request received\n");
+			dprintf(INFO, "READ: RPMB_REL_RW_COUNT 0x%x\n", req_p->rel_wr_count);
 #endif
 			resp_p->status = rpmb_read(req_buf, req_p->num_sectors, resp_buf, &resp_p->res_buff_len);
 			break;
 		case TZ_CM_CMD_RPMB_WRITE:
 #if DEBUG_RPMB
 			dprintf(INFO, "Write Request received\n");
+			dprintf(INFO, "WRITE: RPMB_REL_RW_COUNT 0x%x\n", req_p->rel_wr_count);
 #endif
-			resp_p->status = rpmb_write(req_buf, req_p->num_sectors, resp_buf, &resp_p->res_buff_len);
+			resp_p->status = rpmb_write(req_buf, req_p->num_sectors, req_p->rel_wr_count, resp_buf, &resp_p->res_buff_len);
 			break;
 		default:
 			dprintf(CRITICAL, "Unsupported request command request: %u\n", req_p->cmd_id);
@@ -174,7 +179,7 @@
 
 	rpmb_listener.service_name = "RPMB system services";
 	rpmb_listener.id           =  RPMB_LSTNR_ID;
-	rpmb_listener.sb_size      = 20 * 1024;
+	rpmb_listener.sb_size      = 25 * 1024;
 	rpmb_listener.service_cmd_handler = rpmb_cmd_handler;
 
 	ret = qseecom_register_listener(&rpmb_listener);