#define OPTEE_OS_UID2 0xaf630002\r
#define OPTEE_OS_UID3 0xa5d5c51b\r
\r
+#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_NONE 0x0\r
+#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_INPUT 0x1\r
+#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_OUTPUT 0x2\r
+#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_INOUT 0x3\r
+#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_INPUT 0x9\r
+#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_OUTPUT 0xa\r
+#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_INOUT 0xb\r
+\r
+#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MASK 0xff\r
+\r
+#define OPTEE_ORIGIN_COMMUNICATION 0x00000002\r
+#define OPTEE_ERROR_COMMUNICATION 0xFFFF000E\r
+\r
+typedef struct {\r
+ UINT64 BufferAddress;\r
+ UINT64 Size;\r
+ UINT64 SharedMemoryReference;\r
+} OPTEE_MESSAGE_PARAM_MEMORY;\r
+\r
+typedef struct {\r
+ UINT64 A;\r
+ UINT64 B;\r
+ UINT64 C;\r
+} OPTEE_MESSAGE_PARAM_VALUE;\r
+\r
+typedef struct {\r
+ UINT64 Attribute;\r
+ union {\r
+ OPTEE_MESSAGE_PARAM_MEMORY Memory;\r
+ OPTEE_MESSAGE_PARAM_VALUE Value;\r
+ } Union;\r
+} OPTEE_MESSAGE_PARAM;\r
+\r
+#define OPTEE_MAX_CALL_PARAMS 4\r
+\r
+typedef struct {\r
+ UINT32 Command;\r
+ UINT32 Function;\r
+ UINT32 Session;\r
+ UINT32 CancelId;\r
+ UINT32 Pad;\r
+ UINT32 Return;\r
+ UINT32 ReturnOrigin;\r
+ UINT32 NumParams;\r
+\r
+ // NumParams tells the actual number of element in Params\r
+ OPTEE_MESSAGE_PARAM Params[OPTEE_MAX_CALL_PARAMS];\r
+} OPTEE_MESSAGE_ARG;\r
+\r
+typedef struct {\r
+ EFI_GUID Uuid; // [in] GUID/UUID of the Trusted Application\r
+ UINT32 Session; // [out] Session id\r
+ UINT32 Return; // [out] Return value\r
+ UINT32 ReturnOrigin; // [out] Origin of the return value\r
+} OPTEE_OPEN_SESSION_ARG;\r
+\r
+typedef struct {\r
+ UINT32 Function; // [in] Trusted Application function, specific to the TA\r
+ UINT32 Session; // [in] Session id\r
+ UINT32 Return; // [out] Return value\r
+ UINT32 ReturnOrigin; // [out] Origin of the return value\r
+ OPTEE_MESSAGE_PARAM Params[OPTEE_MAX_CALL_PARAMS]; // Params for function to be invoked\r
+} OPTEE_INVOKE_FUNCTION_ARG;\r
+\r
BOOLEAN\r
EFIAPI\r
IsOpteePresent (\r
VOID\r
);\r
\r
+EFI_STATUS\r
+EFIAPI\r
+OpteeInit (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+OpteeOpenSession (\r
+ IN OUT OPTEE_OPEN_SESSION_ARG *OpenSessionArg\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+OpteeCloseSession (\r
+ IN UINT32 Session\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+OpteeInvokeFunction (\r
+ IN OUT OPTEE_INVOKE_FUNCTION_ARG *InvokeFunctionArg\r
+ );\r
+\r
#endif\r