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