Lines Matching refs:arg
33 static void handle_rpc_func_cmd_get_time(struct optee_msg_arg *arg)
37 if (arg->num_params != 1)
39 if ((arg->params[0].attr & OPTEE_MSG_ATTR_TYPE_MASK) !=
44 arg->params[0].u.value.a = ts.tv_sec;
45 arg->params[0].u.value.b = ts.tv_nsec;
47 arg->ret = TEEC_SUCCESS;
50 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
55 struct optee_msg_arg *arg)
69 if (arg->num_params != ARRAY_SIZE(attr)) {
70 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
74 params = kmalloc_array(arg->num_params, sizeof(struct tee_param),
77 arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
81 if (optee_from_msg_param(params, arg->num_params, arg->params))
84 for (i = 0; i < arg->num_params; i++) {
121 arg->ret = TEEC_ERROR_COMMUNICATION;
124 if (optee_to_msg_param(arg->params, arg->num_params, params))
125 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
127 arg->ret = TEEC_SUCCESS;
135 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
139 struct optee_msg_arg *arg)
141 arg->ret = TEEC_ERROR_NOT_SUPPORTED;
188 struct optee_msg_arg *arg)
190 if (arg->num_params != 1)
193 if ((arg->params[0].attr & OPTEE_MSG_ATTR_TYPE_MASK) !=
197 switch (arg->params[0].u.value.a) {
199 wq_sleep(&optee->wait_queue, arg->params[0].u.value.b);
202 wq_wakeup(&optee->wait_queue, arg->params[0].u.value.b);
208 arg->ret = TEEC_SUCCESS;
211 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
214 static void handle_rpc_func_cmd_wait(struct optee_msg_arg *arg)
218 if (arg->num_params != 1)
221 if ((arg->params[0].attr & OPTEE_MSG_ATTR_TYPE_MASK) !=
225 msec_to_wait = arg->params[0].u.value.a;
230 arg->ret = TEEC_SUCCESS;
233 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
237 struct optee_msg_arg *arg)
241 arg->ret_origin = TEEC_ORIGIN_COMMS;
243 params = kmalloc_array(arg->num_params, sizeof(struct tee_param),
246 arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
250 if (optee_from_msg_param(params, arg->num_params, arg->params)) {
251 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
255 arg->ret = optee_supp_thrd_req(ctx, arg->cmd, arg->num_params, params);
257 if (optee_to_msg_param(arg->params, arg->num_params, params))
258 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
288 struct optee_msg_arg *arg,
296 arg->ret_origin = TEEC_ORIGIN_COMMS;
298 if (!arg->num_params ||
299 arg->params[0].attr != OPTEE_MSG_ATTR_TYPE_VALUE_INPUT) {
300 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
304 for (n = 1; n < arg->num_params; n++) {
305 if (arg->params[n].attr != OPTEE_MSG_ATTR_TYPE_NONE) {
306 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
311 sz = arg->params[0].u.value.b;
312 switch (arg->params[0].u.value.a) {
321 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
326 arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
331 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
344 arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
350 arg->ret = TEEC_ERROR_OUT_OF_MEMORY;
357 arg->params[0].attr = OPTEE_MSG_ATTR_TYPE_TMEM_OUTPUT |
363 arg->params[0].u.tmem.buf_ptr = virt_to_phys(pages_list) |
366 arg->params[0].u.tmem.size = tee_shm_get_size(shm);
367 arg->params[0].u.tmem.shm_ref = (unsigned long)shm;
372 arg->params[0].attr = OPTEE_MSG_ATTR_TYPE_TMEM_OUTPUT;
373 arg->params[0].u.tmem.buf_ptr = pa;
374 arg->params[0].u.tmem.size = sz;
375 arg->params[0].u.tmem.shm_ref = (unsigned long)shm;
378 arg->ret = TEEC_SUCCESS;
410 struct optee_msg_arg *arg)
414 arg->ret_origin = TEEC_ORIGIN_COMMS;
416 if (arg->num_params != 1 ||
417 arg->params[0].attr != OPTEE_MSG_ATTR_TYPE_VALUE_INPUT) {
418 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
422 shm = (struct tee_shm *)(unsigned long)arg->params[0].u.value.b;
423 switch (arg->params[0].u.value.a) {
431 arg->ret = TEEC_ERROR_BAD_PARAMETERS;
433 arg->ret = TEEC_SUCCESS;
455 struct optee_msg_arg *arg;
457 arg = tee_shm_get_va(shm, 0);
458 if (IS_ERR(arg)) {
463 switch (arg->cmd) {
465 handle_rpc_func_cmd_get_time(arg);
468 handle_rpc_func_cmd_wq(optee, arg);
471 handle_rpc_func_cmd_wait(arg);
475 handle_rpc_func_cmd_shm_alloc(ctx, optee, arg, call_ctx);
478 handle_rpc_func_cmd_shm_free(ctx, arg);
481 handle_rpc_func_cmd_i2c_transfer(ctx, arg);
484 handle_rpc_supp_cmd(ctx, arg);