Lines Matching refs:arg

41 static void handle_rpc_func_cmd_get_time(struct optee_msg_arg *arg)  in handle_rpc_func_cmd_get_time()  argument
45 if (arg->num_params != 1) in handle_rpc_func_cmd_get_time()
47 if ((arg->params[0].attr & OPTEE_MSG_ATTR_TYPE_MASK) != in handle_rpc_func_cmd_get_time()
52 arg->params[0].u.value.a = ts.tv_sec; in handle_rpc_func_cmd_get_time()
53 arg->params[0].u.value.b = ts.tv_nsec; in handle_rpc_func_cmd_get_time()
55 arg->ret = TEEC_SUCCESS; in handle_rpc_func_cmd_get_time()
58 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_get_time()
104 struct optee_msg_arg *arg) in handle_rpc_func_cmd_wq() argument
106 if (arg->num_params != 1) in handle_rpc_func_cmd_wq()
109 if ((arg->params[0].attr & OPTEE_MSG_ATTR_TYPE_MASK) != in handle_rpc_func_cmd_wq()
113 switch (arg->params[0].u.value.a) { in handle_rpc_func_cmd_wq()
115 wq_sleep(&optee->wait_queue, arg->params[0].u.value.b); in handle_rpc_func_cmd_wq()
118 wq_wakeup(&optee->wait_queue, arg->params[0].u.value.b); in handle_rpc_func_cmd_wq()
124 arg->ret = TEEC_SUCCESS; in handle_rpc_func_cmd_wq()
127 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_wq()
130 static void handle_rpc_func_cmd_wait(struct optee_msg_arg *arg) in handle_rpc_func_cmd_wait() argument
134 if (arg->num_params != 1) in handle_rpc_func_cmd_wait()
137 if ((arg->params[0].attr & OPTEE_MSG_ATTR_TYPE_MASK) != in handle_rpc_func_cmd_wait()
141 msec_to_wait = arg->params[0].u.value.a; in handle_rpc_func_cmd_wait()
146 arg->ret = TEEC_SUCCESS; in handle_rpc_func_cmd_wait()
149 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_wait()
153 struct optee_msg_arg *arg) in handle_rpc_supp_cmd() argument
157 arg->ret_origin = TEEC_ORIGIN_COMMS; in handle_rpc_supp_cmd()
159 params = kmalloc_array(arg->num_params, sizeof(struct tee_param), in handle_rpc_supp_cmd()
162 arg->ret = TEEC_ERROR_OUT_OF_MEMORY; in handle_rpc_supp_cmd()
166 if (optee_from_msg_param(params, arg->num_params, arg->params)) { in handle_rpc_supp_cmd()
167 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_supp_cmd()
171 arg->ret = optee_supp_thrd_req(ctx, arg->cmd, arg->num_params, params); in handle_rpc_supp_cmd()
173 if (optee_to_msg_param(arg->params, arg->num_params, params)) in handle_rpc_supp_cmd()
174 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_supp_cmd()
203 struct optee_msg_arg *arg, in handle_rpc_func_cmd_shm_alloc() argument
211 arg->ret_origin = TEEC_ORIGIN_COMMS; in handle_rpc_func_cmd_shm_alloc()
213 if (!arg->num_params || in handle_rpc_func_cmd_shm_alloc()
214 arg->params[0].attr != OPTEE_MSG_ATTR_TYPE_VALUE_INPUT) { in handle_rpc_func_cmd_shm_alloc()
215 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_shm_alloc()
219 for (n = 1; n < arg->num_params; n++) { in handle_rpc_func_cmd_shm_alloc()
220 if (arg->params[n].attr != OPTEE_MSG_ATTR_TYPE_NONE) { in handle_rpc_func_cmd_shm_alloc()
221 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_shm_alloc()
226 sz = arg->params[0].u.value.b; in handle_rpc_func_cmd_shm_alloc()
227 switch (arg->params[0].u.value.a) { in handle_rpc_func_cmd_shm_alloc()
235 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_shm_alloc()
240 arg->ret = TEEC_ERROR_OUT_OF_MEMORY; in handle_rpc_func_cmd_shm_alloc()
245 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_shm_alloc()
258 arg->ret = TEEC_ERROR_OUT_OF_MEMORY; in handle_rpc_func_cmd_shm_alloc()
264 arg->ret = TEEC_ERROR_OUT_OF_MEMORY; in handle_rpc_func_cmd_shm_alloc()
271 arg->params[0].attr = OPTEE_MSG_ATTR_TYPE_TMEM_OUTPUT | in handle_rpc_func_cmd_shm_alloc()
277 arg->params[0].u.tmem.buf_ptr = virt_to_phys(pages_list) | in handle_rpc_func_cmd_shm_alloc()
280 arg->params[0].u.tmem.size = tee_shm_get_size(shm); in handle_rpc_func_cmd_shm_alloc()
281 arg->params[0].u.tmem.shm_ref = (unsigned long)shm; in handle_rpc_func_cmd_shm_alloc()
286 arg->params[0].attr = OPTEE_MSG_ATTR_TYPE_TMEM_OUTPUT; in handle_rpc_func_cmd_shm_alloc()
287 arg->params[0].u.tmem.buf_ptr = pa; in handle_rpc_func_cmd_shm_alloc()
288 arg->params[0].u.tmem.size = sz; in handle_rpc_func_cmd_shm_alloc()
289 arg->params[0].u.tmem.shm_ref = (unsigned long)shm; in handle_rpc_func_cmd_shm_alloc()
292 arg->ret = TEEC_SUCCESS; in handle_rpc_func_cmd_shm_alloc()
324 struct optee_msg_arg *arg) in handle_rpc_func_cmd_shm_free() argument
328 arg->ret_origin = TEEC_ORIGIN_COMMS; in handle_rpc_func_cmd_shm_free()
330 if (arg->num_params != 1 || in handle_rpc_func_cmd_shm_free()
331 arg->params[0].attr != OPTEE_MSG_ATTR_TYPE_VALUE_INPUT) { in handle_rpc_func_cmd_shm_free()
332 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_shm_free()
336 shm = (struct tee_shm *)(unsigned long)arg->params[0].u.value.b; in handle_rpc_func_cmd_shm_free()
337 switch (arg->params[0].u.value.a) { in handle_rpc_func_cmd_shm_free()
345 arg->ret = TEEC_ERROR_BAD_PARAMETERS; in handle_rpc_func_cmd_shm_free()
347 arg->ret = TEEC_SUCCESS; in handle_rpc_func_cmd_shm_free()
369 struct optee_msg_arg *arg; in handle_rpc_func_cmd() local
371 arg = tee_shm_get_va(shm, 0); in handle_rpc_func_cmd()
372 if (IS_ERR(arg)) { in handle_rpc_func_cmd()
377 switch (arg->cmd) { in handle_rpc_func_cmd()
379 handle_rpc_func_cmd_get_time(arg); in handle_rpc_func_cmd()
382 handle_rpc_func_cmd_wq(optee, arg); in handle_rpc_func_cmd()
385 handle_rpc_func_cmd_wait(arg); in handle_rpc_func_cmd()
389 handle_rpc_func_cmd_shm_alloc(ctx, arg, call_ctx); in handle_rpc_func_cmd()
392 handle_rpc_func_cmd_shm_free(ctx, arg); in handle_rpc_func_cmd()
395 handle_rpc_supp_cmd(ctx, arg); in handle_rpc_func_cmd()