blob: fa76d4c82f25cb1d27546227c68d04176a6a8328 [file] [log] [blame]
AnilKumar Chimata20c6b2f2017-04-07 12:18:46 -07001#ifndef _UAPI_COMPAT_QSEECOM_H_
2#define _UAPI_COMPAT_QSEECOM_H_
3
4#include <linux/types.h>
5#include <linux/ioctl.h>
6
7#if IS_ENABLED(CONFIG_COMPAT)
8#include <linux/compat.h>
9
10/*
11 * struct compat_qseecom_register_listener_req -
12 * for register listener ioctl request
13 * @listener_id - service id (shared between userspace and QSE)
14 * @ifd_data_fd - ion handle
15 * @virt_sb_base - shared buffer base in user space
16 * @sb_size - shared buffer size
17 */
18struct compat_qseecom_register_listener_req {
19 compat_ulong_t listener_id; /* in */
20 compat_long_t ifd_data_fd; /* in */
21 compat_uptr_t virt_sb_base; /* in */
22 compat_ulong_t sb_size; /* in */
23};
24
25/*
26 * struct compat_qseecom_send_cmd_req - for send command ioctl request
27 * @cmd_req_len - command buffer length
28 * @cmd_req_buf - command buffer
29 * @resp_len - response buffer length
30 * @resp_buf - response buffer
31 */
32struct compat_qseecom_send_cmd_req {
33 compat_uptr_t cmd_req_buf; /* in */
34 compat_uint_t cmd_req_len; /* in */
35 compat_uptr_t resp_buf; /* in/out */
36 compat_uint_t resp_len; /* in/out */
37};
38
39/*
40 * struct qseecom_ion_fd_info - ion fd handle data information
41 * @fd - ion handle to some memory allocated in user space
42 * @cmd_buf_offset - command buffer offset
43 */
44struct compat_qseecom_ion_fd_info {
45 compat_long_t fd;
46 compat_ulong_t cmd_buf_offset;
47};
48/*
49 * struct qseecom_send_modfd_cmd_req - for send command ioctl request
50 * @cmd_req_len - command buffer length
51 * @cmd_req_buf - command buffer
52 * @resp_len - response buffer length
53 * @resp_buf - response buffer
54 * @ifd_data_fd - ion handle to memory allocated in user space
55 * @cmd_buf_offset - command buffer offset
56 */
57struct compat_qseecom_send_modfd_cmd_req {
58 compat_uptr_t cmd_req_buf; /* in */
59 compat_uint_t cmd_req_len; /* in */
60 compat_uptr_t resp_buf; /* in/out */
61 compat_uint_t resp_len; /* in/out */
62 struct compat_qseecom_ion_fd_info ifd_data[MAX_ION_FD];
63};
64
65/*
66 * struct compat_qseecom_listener_send_resp_req
67 * signal to continue the send_cmd req.
68 * Used as a trigger from HLOS service to notify QSEECOM that it's done with its
69 * operation and provide the response for QSEECOM can continue the incomplete
70 * command execution
71 * @resp_len - Length of the response
72 * @resp_buf - Response buffer where the response of the cmd should go.
73 */
74struct compat_qseecom_send_resp_req {
75 compat_uptr_t resp_buf; /* in */
76 compat_uint_t resp_len; /* in */
77};
78
79/*
80 * struct compat_qseecom_load_img_data
81 * for sending image length information and
82 * ion file descriptor to the qseecom driver. ion file descriptor is used
83 * for retrieving the ion file handle and in turn the physical address of
84 * the image location.
85 * @mdt_len - Length of the .mdt file in bytes.
86 * @img_len - Length of the .mdt + .b00 +..+.bxx images files in bytes
87 * @ion_fd - Ion file descriptor used when allocating memory.
88 * @img_name - Name of the image.
89 */
90struct compat_qseecom_load_img_req {
91 compat_ulong_t mdt_len; /* in */
92 compat_ulong_t img_len; /* in */
93 compat_long_t ifd_data_fd; /* in */
94 char img_name[MAX_APP_NAME_SIZE]; /* in */
95 compat_ulong_t app_arch; /* in */
96 compat_uint_t app_id; /* out*/
97};
98
99struct compat_qseecom_set_sb_mem_param_req {
100 compat_long_t ifd_data_fd; /* in */
101 compat_uptr_t virt_sb_base; /* in */
102 compat_ulong_t sb_len; /* in */
103};
104
105/*
106 * struct compat_qseecom_qseos_version_req - get qseos version
107 * @qseos_version - version number
108 */
109struct compat_qseecom_qseos_version_req {
110 compat_uint_t qseos_version; /* in */
111};
112
113/*
114 * struct compat_qseecom_qseos_app_load_query - verify if app is loaded in qsee
115 * @app_name[MAX_APP_NAME_SIZE]- name of the app.
116 * @app_id - app id.
117 */
118struct compat_qseecom_qseos_app_load_query {
119 char app_name[MAX_APP_NAME_SIZE]; /* in */
120 compat_uint_t app_id; /* out */
121 compat_ulong_t app_arch;
122};
123
124struct compat_qseecom_send_svc_cmd_req {
125 compat_ulong_t cmd_id;
126 compat_uptr_t cmd_req_buf; /* in */
127 compat_uint_t cmd_req_len; /* in */
128 compat_uptr_t resp_buf; /* in/out */
129 compat_uint_t resp_len; /* in/out */
130};
131
132struct compat_qseecom_create_key_req {
133 unsigned char hash32[QSEECOM_HASH_SIZE];
134 enum qseecom_key_management_usage_type usage;
135};
136
137struct compat_qseecom_wipe_key_req {
138 enum qseecom_key_management_usage_type usage;
139 compat_int_t wipe_key_flag;
140};
141
142struct compat_qseecom_update_key_userinfo_req {
143 unsigned char current_hash32[QSEECOM_HASH_SIZE];
144 unsigned char new_hash32[QSEECOM_HASH_SIZE];
145 enum qseecom_key_management_usage_type usage;
146};
147
148/*
149 * struct compat_qseecom_save_partition_hash_req
150 * @partition_id - partition id.
151 * @hash[SHA256_DIGEST_LENGTH] - sha256 digest.
152 */
153struct compat_qseecom_save_partition_hash_req {
154 compat_int_t partition_id; /* in */
155 char digest[SHA256_DIGEST_LENGTH]; /* in */
156};
157
158/*
159 * struct compat_qseecom_is_es_activated_req
160 * @is_activated - 1=true , 0=false
161 */
162struct compat_qseecom_is_es_activated_req {
163 compat_int_t is_activated; /* out */
164};
165
166/*
167 * struct compat_qseecom_mdtp_cipher_dip_req
168 * @in_buf - input buffer
169 * @in_buf_size - input buffer size
170 * @out_buf - output buffer
171 * @out_buf_size - output buffer size
172 * @direction - 0=encrypt, 1=decrypt
173 */
174struct compat_qseecom_mdtp_cipher_dip_req {
175 compat_uptr_t in_buf;
176 compat_uint_t in_buf_size;
177 compat_uptr_t out_buf;
178 compat_uint_t out_buf_size;
179 compat_uint_t direction;
180};
181
182/*
183 * struct qseecom_send_modfd_resp - for send command ioctl request
184 * @req_len - command buffer length
185 * @req_buf - command buffer
186 * @ifd_data_fd - ion handle to memory allocated in user space
187 * @cmd_buf_offset - command buffer offset
188 */
189struct compat_qseecom_send_modfd_listener_resp {
190 compat_uptr_t resp_buf_ptr; /* in */
191 compat_uint_t resp_len; /* in */
192 struct compat_qseecom_ion_fd_info ifd_data[MAX_ION_FD]; /* in */
193};
194
195struct compat_qseecom_qteec_req {
196 compat_uptr_t req_ptr;
197 compat_ulong_t req_len;
198 compat_uptr_t resp_ptr;
199 compat_ulong_t resp_len;
200};
201
202struct compat_qseecom_qteec_modfd_req {
203 compat_uptr_t req_ptr;
204 compat_ulong_t req_len;
205 compat_uptr_t resp_ptr;
206 compat_ulong_t resp_len;
207 struct compat_qseecom_ion_fd_info ifd_data[MAX_ION_FD];
208};
209
210struct compat_qseecom_ce_pipe_entry {
211 compat_int_t valid;
212 compat_uint_t ce_num;
213 compat_uint_t ce_pipe_pair;
214};
215
216struct compat_qseecom_ce_info_req {
217 unsigned char handle[MAX_CE_INFO_HANDLE_SIZE];
218 compat_uint_t usage;
219 compat_uint_t unit_num;
220 compat_uint_t num_ce_pipe_entries;
221 struct compat_qseecom_ce_pipe_entry
222 ce_pipe_entry[MAX_CE_PIPE_PAIR_PER_UNIT];
223};
224
225struct file;
226extern long compat_qseecom_ioctl(struct file *file,
227 unsigned int cmd, unsigned long arg);
228
229#define COMPAT_QSEECOM_IOCTL_REGISTER_LISTENER_REQ \
230 _IOWR(QSEECOM_IOC_MAGIC, 1, struct compat_qseecom_register_listener_req)
231
232#define COMPAT_QSEECOM_IOCTL_UNREGISTER_LISTENER_REQ \
233 _IO(QSEECOM_IOC_MAGIC, 2)
234
235#define COMPAT_QSEECOM_IOCTL_SEND_CMD_REQ \
236 _IOWR(QSEECOM_IOC_MAGIC, 3, struct compat_qseecom_send_cmd_req)
237
238#define COMPAT_QSEECOM_IOCTL_SEND_MODFD_CMD_REQ \
239 _IOWR(QSEECOM_IOC_MAGIC, 4, struct compat_qseecom_send_modfd_cmd_req)
240
241#define COMPAT_QSEECOM_IOCTL_RECEIVE_REQ \
242 _IO(QSEECOM_IOC_MAGIC, 5)
243
244#define COMPAT_QSEECOM_IOCTL_SEND_RESP_REQ \
245 _IO(QSEECOM_IOC_MAGIC, 6)
246
247#define COMPAT_QSEECOM_IOCTL_LOAD_APP_REQ \
248 _IOWR(QSEECOM_IOC_MAGIC, 7, struct compat_qseecom_load_img_req)
249
250#define COMPAT_QSEECOM_IOCTL_SET_MEM_PARAM_REQ \
251 _IOWR(QSEECOM_IOC_MAGIC, 8, struct compat_qseecom_set_sb_mem_param_req)
252
253#define COMPAT_QSEECOM_IOCTL_UNLOAD_APP_REQ \
254 _IO(QSEECOM_IOC_MAGIC, 9)
255
256#define COMPAT_QSEECOM_IOCTL_GET_QSEOS_VERSION_REQ \
257 _IOWR(QSEECOM_IOC_MAGIC, 10, struct compat_qseecom_qseos_version_req)
258
259#define COMPAT_QSEECOM_IOCTL_PERF_ENABLE_REQ \
260 _IO(QSEECOM_IOC_MAGIC, 11)
261
262#define COMPAT_QSEECOM_IOCTL_PERF_DISABLE_REQ \
263 _IO(QSEECOM_IOC_MAGIC, 12)
264
265#define COMPAT_QSEECOM_IOCTL_LOAD_EXTERNAL_ELF_REQ \
266 _IOWR(QSEECOM_IOC_MAGIC, 13, struct compat_qseecom_load_img_req)
267
268#define COMPAT_QSEECOM_IOCTL_UNLOAD_EXTERNAL_ELF_REQ \
269 _IO(QSEECOM_IOC_MAGIC, 14)
270
271#define COMPAT_QSEECOM_IOCTL_APP_LOADED_QUERY_REQ \
272 _IOWR(QSEECOM_IOC_MAGIC, 15, struct compat_qseecom_qseos_app_load_query)
273
274#define COMPAT_QSEECOM_IOCTL_SEND_CMD_SERVICE_REQ \
275 _IOWR(QSEECOM_IOC_MAGIC, 16, struct compat_qseecom_send_svc_cmd_req)
276
277#define COMPAT_QSEECOM_IOCTL_CREATE_KEY_REQ \
278 _IOWR(QSEECOM_IOC_MAGIC, 17, struct compat_qseecom_create_key_req)
279
280#define COMPAT_QSEECOM_IOCTL_WIPE_KEY_REQ \
281 _IOWR(QSEECOM_IOC_MAGIC, 18, struct compat_qseecom_wipe_key_req)
282
283#define COMPAT_QSEECOM_IOCTL_SAVE_PARTITION_HASH_REQ \
284 _IOWR(QSEECOM_IOC_MAGIC, 19, \
285 struct compat_qseecom_save_partition_hash_req)
286
287#define COMPAT_QSEECOM_IOCTL_IS_ES_ACTIVATED_REQ \
288 _IOWR(QSEECOM_IOC_MAGIC, 20, struct compat_qseecom_is_es_activated_req)
289
290#define COMPAT_QSEECOM_IOCTL_SEND_MODFD_RESP \
291 _IOWR(QSEECOM_IOC_MAGIC, 21, \
292 struct compat_qseecom_send_modfd_listener_resp)
293
294#define COMPAT_QSEECOM_IOCTL_SET_BUS_SCALING_REQ \
295 _IOWR(QSEECOM_IOC_MAGIC, 23, int)
296
297#define COMPAT_QSEECOM_IOCTL_UPDATE_KEY_USER_INFO_REQ \
298 _IOWR(QSEECOM_IOC_MAGIC, 24, \
299 struct compat_qseecom_update_key_userinfo_req)
300
301#define COMPAT_QSEECOM_QTEEC_IOCTL_OPEN_SESSION_REQ \
302 _IOWR(QSEECOM_IOC_MAGIC, 30, struct compat_qseecom_qteec_modfd_req)
303
304#define COMPAT_QSEECOM_QTEEC_IOCTL_CLOSE_SESSION_REQ \
305 _IOWR(QSEECOM_IOC_MAGIC, 31, struct compat_qseecom_qteec_req)
306
307#define COMPAT_QSEECOM_QTEEC_IOCTL_INVOKE_MODFD_CMD_REQ \
308 _IOWR(QSEECOM_IOC_MAGIC, 32, struct compat_qseecom_qteec_modfd_req)
309
310#define COMPAT_QSEECOM_QTEEC_IOCTL_REQUEST_CANCELLATION_REQ \
311 _IOWR(QSEECOM_IOC_MAGIC, 33, struct compat_qseecom_qteec_modfd_req)
312
313#define COMPAT_QSEECOM_IOCTL_MDTP_CIPHER_DIP_REQ \
314 _IOWR(QSEECOM_IOC_MAGIC, 34, struct qseecom_mdtp_cipher_dip_req)
315
316#define COMPAT_QSEECOM_IOCTL_SEND_MODFD_CMD_64_REQ \
317 _IOWR(QSEECOM_IOC_MAGIC, 35, struct compat_qseecom_send_modfd_cmd_req)
318
319#define COMPAT_QSEECOM_IOCTL_SEND_MODFD_RESP_64 \
320 _IOWR(QSEECOM_IOC_MAGIC, 36, \
321 struct compat_qseecom_send_modfd_listener_resp)
322#define COMPAT_QSEECOM_IOCTL_GET_CE_PIPE_INFO \
323 _IOWR(QSEECOM_IOC_MAGIC, 40, \
324 struct compat_qseecom_ce_info_req)
325#define COMPAT_QSEECOM_IOCTL_FREE_CE_PIPE_INFO \
326 _IOWR(QSEECOM_IOC_MAGIC, 41, \
327 struct compat_qseecom_ce_info_req)
328#define COMPAT_QSEECOM_IOCTL_QUERY_CE_PIPE_INFO \
329 _IOWR(QSEECOM_IOC_MAGIC, 42, \
330 struct compat_qseecom_ce_info_req)
331
332#endif
333#endif /* _UAPI_COMPAT_QSEECOM_H_ */