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