1 /*
2  * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef __RSE_COMMS_PROTOCOL_EMBED_H__
9 #define __RSE_COMMS_PROTOCOL_EMBED_H__
10 
11 #include <psa/client.h>
12 #include <sys/cdefs.h>
13 
14 struct __packed rse_embed_msg_t {
15 	psa_handle_t handle;
16 	uint32_t ctrl_param; /* type, in_len, out_len */
17 	uint16_t io_size[PSA_MAX_IOVEC];
18 	uint8_t trailer[PLAT_RSE_COMMS_PAYLOAD_MAX_SIZE];
19 };
20 
21 struct __packed rse_embed_reply_t {
22 	int32_t return_val;
23 	uint16_t out_size[PSA_MAX_IOVEC];
24 	uint8_t trailer[PLAT_RSE_COMMS_PAYLOAD_MAX_SIZE];
25 };
26 
27 psa_status_t rse_protocol_embed_serialize_msg(psa_handle_t handle,
28 					      int16_t type,
29 					      const struct psa_invec *in_vec,
30 					      uint8_t in_len,
31 					      const struct psa_outvec *out_vec,
32 					      uint8_t out_len,
33 					      struct rse_embed_msg_t *msg,
34 					      size_t *msg_len);
35 
36 psa_status_t rse_protocol_embed_deserialize_reply(struct psa_outvec *out_vec,
37 						  uint8_t out_len,
38 						  psa_status_t *return_val,
39 						  const struct rse_embed_reply_t *reply,
40 						  size_t reply_size);
41 
42 psa_status_t rse_protocol_embed_calculate_msg_len(psa_handle_t handle,
43 						  const struct psa_invec *in_vec,
44 						  uint8_t in_len,
45 						  size_t *msg_len);
46 
47 #endif /* __RSE_COMMS_PROTOCOL_EMBED_H__ */
48