From 956b8a8e1dd5702b9c1657f4ec27a7aeddb0758e Mon Sep 17 00:00:00 2001
From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
Date: Mon, 21 Nov 2022 00:08:20 +0000
Subject: [PATCH] Use the stateless platform service calls

Calls to psa_connect is not needed and psa_call can be called
directly with a pre defined handle.

Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
Upstream-Status: Inappropriate [Design is to revisted]

---
 .../provider/capsule_update_provider.c        | 24 ++++---------------
 .../provider/corstone1000_fmp_service.c       | 10 ++++----
 .../provider/corstone1000_fmp_service.h       |  3 +--
 components/service/common/include/psa/sid.h   |  6 +++++
 4 files changed, 16 insertions(+), 27 deletions(-)

diff --git a/components/service/capsule_update/provider/capsule_update_provider.c b/components/service/capsule_update/provider/capsule_update_provider.c
index 991a2235..6809249f 100644
--- a/components/service/capsule_update/provider/capsule_update_provider.c
+++ b/components/service/capsule_update/provider/capsule_update_provider.c
@@ -61,7 +61,6 @@ void capsule_update_provider_deinit(struct capsule_update_provider *context)
 static rpc_status_t event_handler(uint32_t opcode, struct rpc_caller *caller)
 {
 	uint32_t ioctl_id;
-	psa_handle_t handle;
 	rpc_status_t rpc_status = TS_RPC_CALL_ACCEPTED;
 
 	struct psa_invec in_vec[] = {
@@ -79,31 +78,18 @@ static rpc_status_t event_handler(uint32_t opcode, struct rpc_caller *caller)
 		case CAPSULE_UPDATE_REQUEST:
 		/* Openamp call with IOCTL for firmware update*/
 		ioctl_id = IOCTL_CORSTONE1000_FWU_FLASH_IMAGES;
-		handle = psa_connect(caller, TFM_SP_PLATFORM_IOCTL_SID,
-				TFM_SP_PLATFORM_IOCTL_VERSION);
-		if (handle <= 0) {
-			EMSG("%s Invalid handle", __func__);
-			rpc_status = TS_RPC_ERROR_INVALID_PARAMETER;
-			return rpc_status;
-		}
-		psa_call(caller,handle, PSA_IPC_CALL,
+		psa_call(caller,TFM_PLATFORM_SERVICE_HANDLE, TFM_PLATFORM_API_ID_IOCTL,
 			in_vec,IOVEC_LEN(in_vec), NULL, 0);
-		set_fmp_image_info(caller, handle);
+		set_fmp_image_info(caller);
 		break;
 
 		case KERNEL_STARTED_EVENT:
 		ioctl_id = IOCTL_CORSTONE1000_FWU_HOST_ACK;
 		/*openamp call with IOCTL for kernel start*/
-		handle = psa_connect(caller, TFM_SP_PLATFORM_IOCTL_SID,
-				TFM_SP_PLATFORM_IOCTL_VERSION);
-		if (handle <= 0) {
-			EMSG("%s Invalid handle", __func__);
-			rpc_status = TS_RPC_ERROR_INVALID_PARAMETER;
-			return rpc_status;
-		}
-		psa_call(caller,handle, PSA_IPC_CALL,
+		
+		psa_call(caller,TFM_PLATFORM_SERVICE_HANDLE, TFM_PLATFORM_API_ID_IOCTL,
 			in_vec,IOVEC_LEN(in_vec), NULL, 0);
-		set_fmp_image_info(caller, handle);
+		set_fmp_image_info(caller);
 		break;
 		default:
 			EMSG("%s unsupported opcode", __func__);
diff --git a/components/service/capsule_update/provider/corstone1000_fmp_service.c b/components/service/capsule_update/provider/corstone1000_fmp_service.c
index 6a7a47a7..d811af9f 100644
--- a/components/service/capsule_update/provider/corstone1000_fmp_service.c
+++ b/components/service/capsule_update/provider/corstone1000_fmp_service.c
@@ -238,8 +238,7 @@ static psa_status_t unpack_image_info(void *buffer, uint32_t size)
     return PSA_SUCCESS;
 }
 
-static psa_status_t get_image_info(struct rpc_caller *caller,
-			   psa_handle_t platform_service_handle)
+static psa_status_t get_image_info(struct rpc_caller *caller)
 {
     psa_status_t status;
     psa_handle_t handle;
@@ -255,7 +254,7 @@ static psa_status_t get_image_info(struct rpc_caller *caller,
 
     memset(image_info_buffer, 0, IMAGE_INFO_BUFFER_SIZE);
 
-    psa_call(caller, platform_service_handle, PSA_IPC_CALL,
+    psa_call(caller, TFM_PLATFORM_SERVICE_HANDLE, TFM_PLATFORM_API_ID_IOCTL,
 	     in_vec, IOVEC_LEN(in_vec), out_vec, IOVEC_LEN(out_vec));
 
     status = unpack_image_info(image_info_buffer, IMAGE_INFO_BUFFER_SIZE);
@@ -288,12 +287,11 @@ static psa_status_t set_image_info(struct rpc_caller *caller)
     return PSA_SUCCESS;
 }
 
-void set_fmp_image_info(struct rpc_caller *caller,
-			psa_handle_t platform_service_handle)
+void set_fmp_image_info(struct rpc_caller *caller)
 {
     psa_status_t status;
 
-    status = get_image_info(caller, platform_service_handle);
+    status = get_image_info(caller);
     if (status != PSA_SUCCESS) {
 	return;
     }
diff --git a/components/service/capsule_update/provider/corstone1000_fmp_service.h b/components/service/capsule_update/provider/corstone1000_fmp_service.h
index 95fba2a0..963223e8 100644
--- a/components/service/capsule_update/provider/corstone1000_fmp_service.h
+++ b/components/service/capsule_update/provider/corstone1000_fmp_service.h
@@ -16,8 +16,7 @@ extern "C" {
 
 void provision_fmp_variables_metadata(struct rpc_caller *caller);
 
-void set_fmp_image_info(struct rpc_caller *caller,
-		psa_handle_t platform_service_handle);
+void set_fmp_image_info(struct rpc_caller *caller);
 
 #ifdef __cplusplus
 } /* extern "C" */
diff --git a/components/service/common/include/psa/sid.h b/components/service/common/include/psa/sid.h
index 7a29cc25..8103a9af 100644
--- a/components/service/common/include/psa/sid.h
+++ b/components/service/common/include/psa/sid.h
@@ -37,6 +37,12 @@ extern "C" {
 #define TFM_CRYPTO_VERSION                                         (1U)
 #define TFM_CRYPTO_HANDLE                                          (0x40000100U)
 
+
+/******** TFM_PLATFORM_SERVICE *******/
+#define TFM_PLATFORM_API_ID_IOCTL         (1013)
+#define TFM_PLATFORM_SERVICE_HANDLE       (0x40000105U)
+
+
 /**
  * \brief Define a progressive numerical value for each SID which can be used
  *        when dispatching the requests to the service
-- 
2.25.1

