Commit | Line | Data |
---|---|---|
617d8e8b JW |
1 | /* SPDX-License-Identifier: BSD-2-Clause */ |
2 | /* | |
3 | * Copyright (c) 2016-2021, Linaro Limited | |
4 | */ | |
5 | ||
6 | #ifndef __OPTEE_RPC_CMD_H | |
7 | #define __OPTEE_RPC_CMD_H | |
8 | ||
9 | /* | |
10 | * All RPC is done with a struct optee_msg_arg as bearer of information, | |
11 | * struct optee_msg_arg::arg holds values defined by OPTEE_RPC_CMD_* below. | |
12 | * Only the commands handled by the kernel driver are defined here. | |
13 | * | |
14 | * RPC communication with tee-supplicant is reversed compared to normal | |
15 | * client communication described above. The supplicant receives requests | |
16 | * and sends responses. | |
17 | */ | |
18 | ||
19 | /* | |
20 | * Get time | |
21 | * | |
22 | * Returns number of seconds and nano seconds since the Epoch, | |
23 | * 1970-01-01 00:00:00 +0000 (UTC). | |
24 | * | |
25 | * [out] value[0].a Number of seconds | |
26 | * [out] value[0].b Number of nano seconds. | |
27 | */ | |
28 | #define OPTEE_RPC_CMD_GET_TIME 3 | |
29 | ||
30 | /* | |
787c80cc | 31 | * Notification from/to secure world. |
617d8e8b | 32 | * |
787c80cc JW |
33 | * If secure world needs to wait for something, for instance a mutex, it |
34 | * does a notification wait request instead of spinning in secure world. | |
35 | * Conversely can a synchronous notification can be sent when a secure | |
36 | * world mutex with a thread waiting thread is unlocked. | |
617d8e8b | 37 | * |
787c80cc JW |
38 | * This interface can also be used to wait for a asynchronous notification |
39 | * which instead is sent via a non-secure interrupt. | |
617d8e8b | 40 | * |
787c80cc JW |
41 | * Waiting on notification |
42 | * [in] value[0].a OPTEE_RPC_NOTIFICATION_WAIT | |
43 | * [in] value[0].b notification value | |
44 | * | |
45 | * Sending a synchronous notification | |
46 | * [in] value[0].a OPTEE_RPC_NOTIFICATION_SEND | |
47 | * [in] value[0].b notification value | |
617d8e8b | 48 | */ |
787c80cc JW |
49 | #define OPTEE_RPC_CMD_NOTIFICATION 4 |
50 | #define OPTEE_RPC_NOTIFICATION_WAIT 0 | |
51 | #define OPTEE_RPC_NOTIFICATION_SEND 1 | |
617d8e8b JW |
52 | |
53 | /* | |
54 | * Suspend execution | |
55 | * | |
56 | * [in] value[0].a Number of milliseconds to suspend | |
57 | */ | |
58 | #define OPTEE_RPC_CMD_SUSPEND 5 | |
59 | ||
60 | /* | |
61 | * Allocate a piece of shared memory | |
62 | * | |
63 | * [in] value[0].a Type of memory one of | |
64 | * OPTEE_RPC_SHM_TYPE_* below | |
65 | * [in] value[0].b Requested size | |
66 | * [in] value[0].c Required alignment | |
67 | * [out] memref[0] Buffer | |
68 | */ | |
69 | #define OPTEE_RPC_CMD_SHM_ALLOC 6 | |
70 | /* Memory that can be shared with a non-secure user space application */ | |
71 | #define OPTEE_RPC_SHM_TYPE_APPL 0 | |
72 | /* Memory only shared with non-secure kernel */ | |
73 | #define OPTEE_RPC_SHM_TYPE_KERNEL 1 | |
74 | ||
75 | /* | |
76 | * Free shared memory previously allocated with OPTEE_RPC_CMD_SHM_ALLOC | |
77 | * | |
78 | * [in] value[0].a Type of memory one of | |
79 | * OPTEE_RPC_SHM_TYPE_* above | |
80 | * [in] value[0].b Value of shared memory reference or cookie | |
81 | */ | |
82 | #define OPTEE_RPC_CMD_SHM_FREE 7 | |
83 | ||
84 | /* | |
85 | * Issue master requests (read and write operations) to an I2C chip. | |
86 | * | |
87 | * [in] value[0].a Transfer mode (OPTEE_RPC_I2C_TRANSFER_*) | |
88 | * [in] value[0].b The I2C bus (a.k.a adapter). | |
89 | * 16 bit field. | |
90 | * [in] value[0].c The I2C chip (a.k.a address). | |
91 | * 16 bit field (either 7 or 10 bit effective). | |
92 | * [in] value[1].a The I2C master control flags (ie, 10 bit address). | |
93 | * 16 bit field. | |
94 | * [in/out] memref[2] Buffer used for data transfers. | |
95 | * [out] value[3].a Number of bytes transferred by the REE. | |
96 | */ | |
97 | #define OPTEE_RPC_CMD_I2C_TRANSFER 21 | |
98 | ||
99 | /* I2C master transfer modes */ | |
100 | #define OPTEE_RPC_I2C_TRANSFER_RD 0 | |
101 | #define OPTEE_RPC_I2C_TRANSFER_WR 1 | |
102 | ||
103 | /* I2C master control flags */ | |
104 | #define OPTEE_RPC_I2C_FLAGS_TEN_BIT BIT(0) | |
105 | ||
106 | #endif /*__OPTEE_RPC_CMD_H*/ |