1 /* 2 * Arm SCP/MCP Software 3 * Copyright (c) 2022, Linaro Limited and Contributors. All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 #ifndef INTERNAL_OPTEE_SMT_H 9 #define INTERNAL_OPTEE_SMT_H 10 11 #include <stdint.h> 12 13 struct __attribute((packed)) mod_optee_smt_memory { 14 uint32_t reserved0; 15 uint32_t status; 16 uint64_t reserved1; 17 uint32_t flags; 18 uint32_t length; /* message_header + payload */ 19 uint32_t message_header; 20 uint32_t payload[]; 21 }; 22 23 #define MOD_OPTEE_SMT_MAX_CHANNELS 8 24 25 #define MOD_OPTEE_SMT_MAILBOX_STATUS_FREE_POS 0 26 #define MOD_OPTEE_SMT_MAILBOX_STATUS_FREE_MASK \ 27 (UINT32_C(0x1) << MOD_OPTEE_SMT_MAILBOX_STATUS_FREE_POS) 28 29 #define MOD_OPTEE_SMT_MAILBOX_STATUS_ERROR_POS 1 30 #define MOD_OPTEE_SMT_MAILBOX_STATUS_ERROR_MASK \ 31 (UINT32_C(0x1) << MOD_OPTEE_SMT_MAILBOX_STATUS_ERROR_POS) 32 33 #define MOD_OPTEE_SMT_MAILBOX_FLAGS_IENABLED_POS 0 34 #define MOD_OPTEE_SMT_MAILBOX_FLAGS_IENABLED_MASK \ 35 (UINT32_C(0x1) << MOD_OPTEE_SMT_MAILBOX_FLAGS_IENABLED_POS) 36 37 #define MOD_OPTEE_SMT_MIN_PAYLOAD_SIZE \ 38 sizeof(((struct mod_optee_smt_memory *)NULL)->payload[0]) 39 40 #define MOD_OPTEE_SMT_MIN_MAILBOX_SIZE \ 41 (sizeof(struct mod_optee_smt_memory) + MOD_OPTEE_SMT_MIN_PAYLOAD_SIZE) 42 43 #endif /* INTERNAL_OPTEE_SMT_H */ 44