]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Include/Library/OpteeLib.h
ArmPkg/ArmSvcLib: Return x4-x7 in output parameters
[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
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
36typedef struct {\r
37 UINT64 BufferAddress;\r
38 UINT64 Size;\r
39 UINT64 SharedMemoryReference;\r
40} OPTEE_MESSAGE_PARAM_MEMORY;\r
41\r
42typedef struct {\r
43 UINT64 A;\r
44 UINT64 B;\r
45 UINT64 C;\r
46} OPTEE_MESSAGE_PARAM_VALUE;\r
47\r
48typedef 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
58typedef 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
72typedef 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
79typedef 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
87BOOLEAN\r
88EFIAPI\r
89IsOpteePresent (\r
90 VOID\r
91 );\r
92\r
a0f01e8a
SG
93EFI_STATUS\r
94EFIAPI\r
95OpteeInit (\r
96 VOID\r
97 );\r
98\r
99EFI_STATUS\r
100EFIAPI\r
101OpteeOpenSession (\r
102 IN OUT OPTEE_OPEN_SESSION_ARG *OpenSessionArg\r
103 );\r
104\r
105EFI_STATUS\r
106EFIAPI\r
107OpteeCloseSession (\r
108 IN UINT32 Session\r
109 );\r
110\r
111EFI_STATUS\r
112EFIAPI\r
113OpteeInvokeFunction (\r
114 IN OUT OPTEE_INVOKE_FUNCTION_ARG *InvokeFunctionArg\r
115 );\r
116\r
d65b78f1 117#endif\r