]>
Commit | Line | Data |
---|---|---|
d65b78f1 SG |
1 | /** @file\r |
2 | OP-TEE specific header file.\r | |
3 | \r | |
4 | Copyright (c) 2018, Linaro Ltd. All rights reserved.<BR>\r | |
5 | \r | |
4059386c | 6 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
d65b78f1 SG |
7 | \r |
8 | **/\r | |
9 | \r | |
10 | #ifndef _OPTEE_H_\r | |
11 | #define _OPTEE_H_\r | |
12 | \r | |
13 | /*\r | |
14 | * The 'Trusted OS Call UID' is supposed to return the following UUID for\r | |
15 | * OP-TEE OS. This is a 128-bit value.\r | |
16 | */\r | |
17 | #define OPTEE_OS_UID0 0x384fb3e0\r | |
18 | #define OPTEE_OS_UID1 0xe7f811e3\r | |
19 | #define OPTEE_OS_UID2 0xaf630002\r | |
20 | #define OPTEE_OS_UID3 0xa5d5c51b\r | |
21 | \r | |
a0f01e8a SG |
22 | #define OPTEE_MESSAGE_ATTRIBUTE_TYPE_NONE 0x0\r |
23 | #define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_INPUT 0x1\r | |
24 | #define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_OUTPUT 0x2\r | |
25 | #define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_INOUT 0x3\r | |
26 | #define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_INPUT 0x9\r | |
27 | #define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_OUTPUT 0xa\r | |
28 | #define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_INOUT 0xb\r | |
29 | \r | |
30 | #define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MASK 0xff\r | |
31 | \r | |
f0574a19 | 32 | #define OPTEE_SUCCESS 0x00000000\r |
a0f01e8a SG |
33 | #define OPTEE_ORIGIN_COMMUNICATION 0x00000002\r |
34 | #define OPTEE_ERROR_COMMUNICATION 0xFFFF000E\r | |
35 | \r | |
36 | typedef struct {\r | |
37 | UINT64 BufferAddress;\r | |
38 | UINT64 Size;\r | |
39 | UINT64 SharedMemoryReference;\r | |
40 | } OPTEE_MESSAGE_PARAM_MEMORY;\r | |
41 | \r | |
42 | typedef struct {\r | |
43 | UINT64 A;\r | |
44 | UINT64 B;\r | |
45 | UINT64 C;\r | |
46 | } OPTEE_MESSAGE_PARAM_VALUE;\r | |
47 | \r | |
48 | typedef struct {\r | |
49 | UINT64 Attribute;\r | |
50 | union {\r | |
51 | OPTEE_MESSAGE_PARAM_MEMORY Memory;\r | |
52 | OPTEE_MESSAGE_PARAM_VALUE Value;\r | |
53 | } Union;\r | |
54 | } OPTEE_MESSAGE_PARAM;\r | |
55 | \r | |
56 | #define OPTEE_MAX_CALL_PARAMS 4\r | |
57 | \r | |
58 | typedef struct {\r | |
59 | UINT32 Command;\r | |
60 | UINT32 Function;\r | |
61 | UINT32 Session;\r | |
62 | UINT32 CancelId;\r | |
63 | UINT32 Pad;\r | |
64 | UINT32 Return;\r | |
65 | UINT32 ReturnOrigin;\r | |
66 | UINT32 NumParams;\r | |
67 | \r | |
68 | // NumParams tells the actual number of element in Params\r | |
69 | OPTEE_MESSAGE_PARAM Params[OPTEE_MAX_CALL_PARAMS];\r | |
70 | } OPTEE_MESSAGE_ARG;\r | |
71 | \r | |
72 | typedef struct {\r | |
73 | EFI_GUID Uuid; // [in] GUID/UUID of the Trusted Application\r | |
74 | UINT32 Session; // [out] Session id\r | |
75 | UINT32 Return; // [out] Return value\r | |
76 | UINT32 ReturnOrigin; // [out] Origin of the return value\r | |
77 | } OPTEE_OPEN_SESSION_ARG;\r | |
78 | \r | |
79 | typedef struct {\r | |
80 | UINT32 Function; // [in] Trusted Application function, specific to the TA\r | |
81 | UINT32 Session; // [in] Session id\r | |
82 | UINT32 Return; // [out] Return value\r | |
83 | UINT32 ReturnOrigin; // [out] Origin of the return value\r | |
84 | OPTEE_MESSAGE_PARAM Params[OPTEE_MAX_CALL_PARAMS]; // Params for function to be invoked\r | |
85 | } OPTEE_INVOKE_FUNCTION_ARG;\r | |
86 | \r | |
d65b78f1 SG |
87 | BOOLEAN\r |
88 | EFIAPI\r | |
89 | IsOpteePresent (\r | |
90 | VOID\r | |
91 | );\r | |
92 | \r | |
a0f01e8a SG |
93 | EFI_STATUS\r |
94 | EFIAPI\r | |
95 | OpteeInit (\r | |
96 | VOID\r | |
97 | );\r | |
98 | \r | |
99 | EFI_STATUS\r | |
100 | EFIAPI\r | |
101 | OpteeOpenSession (\r | |
102 | IN OUT OPTEE_OPEN_SESSION_ARG *OpenSessionArg\r | |
103 | );\r | |
104 | \r | |
105 | EFI_STATUS\r | |
106 | EFIAPI\r | |
107 | OpteeCloseSession (\r | |
108 | IN UINT32 Session\r | |
109 | );\r | |
110 | \r | |
111 | EFI_STATUS\r | |
112 | EFIAPI\r | |
113 | OpteeInvokeFunction (\r | |
114 | IN OUT OPTEE_INVOKE_FUNCTION_ARG *InvokeFunctionArg\r | |
115 | );\r | |
116 | \r | |
d65b78f1 | 117 | #endif\r |