12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /* SPDX-License-Identifier: MIT */
- /*
- * AMD Trusted Execution Environment (TEE) interface
- *
- * Author: Rijo Thomas <[email protected]>
- *
- * Copyright 2019 Advanced Micro Devices, Inc.
- *
- */
- #ifndef __PSP_TEE_H_
- #define __PSP_TEE_H_
- #include <linux/types.h>
- #include <linux/errno.h>
- /* This file defines the Trusted Execution Environment (TEE) interface commands
- * and the API exported by AMD Secure Processor driver to communicate with
- * AMD-TEE Trusted OS.
- */
- /**
- * enum tee_cmd_id - TEE Interface Command IDs
- * @TEE_CMD_ID_LOAD_TA: Load Trusted Application (TA) binary into
- * TEE environment
- * @TEE_CMD_ID_UNLOAD_TA: Unload TA binary from TEE environment
- * @TEE_CMD_ID_OPEN_SESSION: Open session with loaded TA
- * @TEE_CMD_ID_CLOSE_SESSION: Close session with loaded TA
- * @TEE_CMD_ID_INVOKE_CMD: Invoke a command with loaded TA
- * @TEE_CMD_ID_MAP_SHARED_MEM: Map shared memory
- * @TEE_CMD_ID_UNMAP_SHARED_MEM: Unmap shared memory
- */
- enum tee_cmd_id {
- TEE_CMD_ID_LOAD_TA = 1,
- TEE_CMD_ID_UNLOAD_TA,
- TEE_CMD_ID_OPEN_SESSION,
- TEE_CMD_ID_CLOSE_SESSION,
- TEE_CMD_ID_INVOKE_CMD,
- TEE_CMD_ID_MAP_SHARED_MEM,
- TEE_CMD_ID_UNMAP_SHARED_MEM,
- };
- #ifdef CONFIG_CRYPTO_DEV_SP_PSP
- /**
- * psp_tee_process_cmd() - Process command in Trusted Execution Environment
- * @cmd_id: TEE command ID (&enum tee_cmd_id)
- * @buf: Command buffer for TEE processing. On success, is updated
- * with the response
- * @len: Length of command buffer in bytes
- * @status: On success, holds the TEE command execution status
- *
- * This function submits a command to the Trusted OS for processing in the
- * TEE environment and waits for a response or until the command times out.
- *
- * Returns:
- * 0 if TEE successfully processed the command
- * -%ENODEV if PSP device not available
- * -%EINVAL if invalid input
- * -%ETIMEDOUT if TEE command timed out
- * -%EBUSY if PSP device is not responsive
- */
- int psp_tee_process_cmd(enum tee_cmd_id cmd_id, void *buf, size_t len,
- u32 *status);
- /**
- * psp_check_tee_status() - Checks whether there is a TEE which a driver can
- * talk to.
- *
- * This function can be used by AMD-TEE driver to query if there is TEE with
- * which it can communicate.
- *
- * Returns:
- * 0 if the device has TEE
- * -%ENODEV if there is no TEE available
- */
- int psp_check_tee_status(void);
- #else /* !CONFIG_CRYPTO_DEV_SP_PSP */
- static inline int psp_tee_process_cmd(enum tee_cmd_id cmd_id, void *buf,
- size_t len, u32 *status)
- {
- return -ENODEV;
- }
- static inline int psp_check_tee_status(void)
- {
- return -ENODEV;
- }
- #endif /* CONFIG_CRYPTO_DEV_SP_PSP */
- #endif /* __PSP_TEE_H_ */
|