1 /* SPDX-License-Identifier: MIT */ 1 2 /* 3 * AMD Trusted Execution Environment (TEE) int 4 * 5 * Author: Rijo Thomas <Rijo-john.Thomas@amd.c 6 * 7 * Copyright 2019 Advanced Micro Devices, Inc. 8 * 9 */ 10 11 #ifndef __PSP_TEE_H_ 12 #define __PSP_TEE_H_ 13 14 #include <linux/types.h> 15 #include <linux/errno.h> 16 17 /* This file defines the Trusted Execution Env 18 * and the API exported by AMD Secure Processo 19 * AMD-TEE Trusted OS. 20 */ 21 22 /** 23 * enum tee_cmd_id - TEE Interface Command IDs 24 * @TEE_CMD_ID_LOAD_TA: Load Trusted 25 * TEE environme 26 * @TEE_CMD_ID_UNLOAD_TA: Unload TA bin 27 * @TEE_CMD_ID_OPEN_SESSION: Open session 28 * @TEE_CMD_ID_CLOSE_SESSION: Close session 29 * @TEE_CMD_ID_INVOKE_CMD: Invoke a comm 30 * @TEE_CMD_ID_MAP_SHARED_MEM: Map shared me 31 * @TEE_CMD_ID_UNMAP_SHARED_MEM: Unmap shared 32 */ 33 enum tee_cmd_id { 34 TEE_CMD_ID_LOAD_TA = 1, 35 TEE_CMD_ID_UNLOAD_TA, 36 TEE_CMD_ID_OPEN_SESSION, 37 TEE_CMD_ID_CLOSE_SESSION, 38 TEE_CMD_ID_INVOKE_CMD, 39 TEE_CMD_ID_MAP_SHARED_MEM, 40 TEE_CMD_ID_UNMAP_SHARED_MEM, 41 }; 42 43 #ifdef CONFIG_CRYPTO_DEV_SP_PSP 44 /** 45 * psp_tee_process_cmd() - Process command in 46 * @cmd_id: TEE command ID (&enum tee_cmd_ 47 * @buf: Command buffer for TEE process 48 * with the response 49 * @len: Length of command buffer in by 50 * @status: On success, holds the TEE comm 51 * 52 * This function submits a command to the Trus 53 * TEE environment and waits for a response or 54 * 55 * Returns: 56 * 0 if TEE successfully processed the command 57 * -%ENODEV if PSP device not available 58 * -%EINVAL if invalid input 59 * -%ETIMEDOUT if TEE command timed out 60 * -%EBUSY if PSP device is not responsive 61 */ 62 int psp_tee_process_cmd(enum tee_cmd_id cmd_id 63 u32 *status); 64 65 /** 66 * psp_check_tee_status() - Checks whether the 67 * talk to. 68 * 69 * This function can be used by AMD-TEE driver 70 * which it can communicate. 71 * 72 * Returns: 73 * 0 if the device has TEE 74 * -%ENODEV if there is no TEE available 75 */ 76 int psp_check_tee_status(void); 77 78 #else /* !CONFIG_CRYPTO_DEV_SP_PSP */ 79 80 static inline int psp_tee_process_cmd(enum tee 81 size_t l 82 { 83 return -ENODEV; 84 } 85 86 static inline int psp_check_tee_status(void) 87 { 88 return -ENODEV; 89 } 90 #endif /* CONFIG_CRYPTO_DEV_SP_PSP */ 91 #endif /* __PSP_TEE_H_ */ 92
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.