]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Include/Library/OpteeLib.h
ArmPkg/OpteeLib: Add OPTEE_SUCCESS return code
[mirror_edk2.git] / ArmPkg / Include / Library / OpteeLib.h
CommitLineData
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
6 This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#ifndef _OPTEE_H_\r
17#define _OPTEE_H_\r
18\r
19/*\r
20 * The 'Trusted OS Call UID' is supposed to return the following UUID for\r
21 * OP-TEE OS. This is a 128-bit value.\r
22 */\r
23#define OPTEE_OS_UID0 0x384fb3e0\r
24#define OPTEE_OS_UID1 0xe7f811e3\r
25#define OPTEE_OS_UID2 0xaf630002\r
26#define OPTEE_OS_UID3 0xa5d5c51b\r
27\r
a0f01e8a
SG
28#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_NONE 0x0\r
29#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_INPUT 0x1\r
30#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_OUTPUT 0x2\r
31#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_VALUE_INOUT 0x3\r
32#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_INPUT 0x9\r
33#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_OUTPUT 0xa\r
34#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_INOUT 0xb\r
35\r
36#define OPTEE_MESSAGE_ATTRIBUTE_TYPE_MASK 0xff\r
37\r
f0574a19 38#define OPTEE_SUCCESS 0x00000000\r
a0f01e8a
SG
39#define OPTEE_ORIGIN_COMMUNICATION 0x00000002\r
40#define OPTEE_ERROR_COMMUNICATION 0xFFFF000E\r
41\r
42typedef struct {\r
43 UINT64 BufferAddress;\r
44 UINT64 Size;\r
45 UINT64 SharedMemoryReference;\r
46} OPTEE_MESSAGE_PARAM_MEMORY;\r
47\r
48typedef struct {\r
49 UINT64 A;\r
50 UINT64 B;\r
51 UINT64 C;\r
52} OPTEE_MESSAGE_PARAM_VALUE;\r
53\r
54typedef struct {\r
55 UINT64 Attribute;\r
56 union {\r
57 OPTEE_MESSAGE_PARAM_MEMORY Memory;\r
58 OPTEE_MESSAGE_PARAM_VALUE Value;\r
59 } Union;\r
60} OPTEE_MESSAGE_PARAM;\r
61\r
62#define OPTEE_MAX_CALL_PARAMS 4\r
63\r
64typedef struct {\r
65 UINT32 Command;\r
66 UINT32 Function;\r
67 UINT32 Session;\r
68 UINT32 CancelId;\r
69 UINT32 Pad;\r
70 UINT32 Return;\r
71 UINT32 ReturnOrigin;\r
72 UINT32 NumParams;\r
73\r
74 // NumParams tells the actual number of element in Params\r
75 OPTEE_MESSAGE_PARAM Params[OPTEE_MAX_CALL_PARAMS];\r
76} OPTEE_MESSAGE_ARG;\r
77\r
78typedef struct {\r
79 EFI_GUID Uuid; // [in] GUID/UUID of the Trusted Application\r
80 UINT32 Session; // [out] Session id\r
81 UINT32 Return; // [out] Return value\r
82 UINT32 ReturnOrigin; // [out] Origin of the return value\r
83} OPTEE_OPEN_SESSION_ARG;\r
84\r
85typedef struct {\r
86 UINT32 Function; // [in] Trusted Application function, specific to the TA\r
87 UINT32 Session; // [in] Session id\r
88 UINT32 Return; // [out] Return value\r
89 UINT32 ReturnOrigin; // [out] Origin of the return value\r
90 OPTEE_MESSAGE_PARAM Params[OPTEE_MAX_CALL_PARAMS]; // Params for function to be invoked\r
91} OPTEE_INVOKE_FUNCTION_ARG;\r
92\r
d65b78f1
SG
93BOOLEAN\r
94EFIAPI\r
95IsOpteePresent (\r
96 VOID\r
97 );\r
98\r
a0f01e8a
SG
99EFI_STATUS\r
100EFIAPI\r
101OpteeInit (\r
102 VOID\r
103 );\r
104\r
105EFI_STATUS\r
106EFIAPI\r
107OpteeOpenSession (\r
108 IN OUT OPTEE_OPEN_SESSION_ARG *OpenSessionArg\r
109 );\r
110\r
111EFI_STATUS\r
112EFIAPI\r
113OpteeCloseSession (\r
114 IN UINT32 Session\r
115 );\r
116\r
117EFI_STATUS\r
118EFIAPI\r
119OpteeInvokeFunction (\r
120 IN OUT OPTEE_INVOKE_FUNCTION_ARG *InvokeFunctionArg\r
121 );\r
122\r
d65b78f1 123#endif\r