tkaratapanis commented on code in PR #16734: URL: https://github.com/apache/nuttx/pull/16734#discussion_r2219198890
########## drivers/misc/optee.c: ########## @@ -1342,5 +1461,181 @@ int optee_register(void) return ret; } - return register_driver(OPTEE_DEV_PATH, &g_optee_ops, 0666, NULL); +#ifdef CONFIG_DEV_OPTEE_SUPPLICANT + ret = register_driver(OPTEE_SUPPLICANT_DEV_PATH, &g_optee_ops, 0666, + (void *)OPTEE_ROLE_SUPPLICANT); + + if (ret) + { + return ret; + } +#endif + + return register_driver(OPTEE_DEV_PATH, &g_optee_ops, 0666, + (void *)OPTEE_ROLE_CA); } + +/**************************************************************************** + * Name: optee_from_msg_param + * + * Description: + * Converts and copies the message parameters received by OP-TEE to buffer + * for processing by nuttx. + * + * Parameters: + * params - Pointer, to copy the received parameters after some processing. + * num_params - Number of these parameters. + * mparams - Pointer to the message parameters received by OP-TEE. + * + * Returned Values: + * OK on success; A negated errno value is returned on any failure. + * + ****************************************************************************/ + +int optee_from_msg_param(FAR struct tee_ioctl_param *params, + size_t num_params, + FAR const struct optee_msg_param *mparams) +{ + size_t n; + + for (n = 0; n < num_params; n++) + { + FAR const struct optee_msg_param *mp = mparams + n; + FAR struct tee_ioctl_param *p = params + n; + FAR struct optee_shm *shm = NULL; + + switch (mp->attr & OPTEE_MSG_ATTR_TYPE_MASK) + { + case OPTEE_MSG_ATTR_TYPE_NONE: + p->attr = TEE_IOCTL_PARAM_ATTR_TYPE_NONE; + p->a = 0; + p->b = 0; + p->c = 0; + break; + case OPTEE_MSG_ATTR_TYPE_VALUE_INPUT: + case OPTEE_MSG_ATTR_TYPE_VALUE_OUTPUT: + case OPTEE_MSG_ATTR_TYPE_VALUE_INOUT: + p->attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT + + mp->attr - OPTEE_MSG_ATTR_TYPE_VALUE_INPUT; + p->a = mp->u.value.a; + p->b = mp->u.value.b; + p->c = mp->u.value.c; + break; + case OPTEE_MSG_ATTR_TYPE_TMEM_INPUT: + case OPTEE_MSG_ATTR_TYPE_TMEM_OUTPUT: + case OPTEE_MSG_ATTR_TYPE_TMEM_INOUT: + p->attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT + + mp->attr - OPTEE_MSG_ATTR_TYPE_TMEM_INPUT; + p->b = mp->u.tmem.size; + + shm = (FAR struct optee_shm *)(uintptr_t)mp->u.tmem.shm_ref; + if (shm && shm->page_list) + { + kmm_free(shm->page_list); + shm->page_list = NULL; + p->c = shm->id; + } + else + { + p->c = TEE_MEMREF_NULL; + } + break; + case OPTEE_MSG_ATTR_TYPE_RMEM_INPUT: + case OPTEE_MSG_ATTR_TYPE_RMEM_OUTPUT: + case OPTEE_MSG_ATTR_TYPE_RMEM_INOUT: + p->attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT + + mp->attr - OPTEE_MSG_ATTR_TYPE_RMEM_INPUT; + p->b = mp->u.rmem.size; + p->a = mp->u.rmem.offs; + shm = (FAR struct optee_shm *)(uintptr_t)mp->u.tmem.shm_ref; + if (shm) + { + p->c = shm->id; + } + else + { + p->c = TEE_MEMREF_NULL; + } + break; + default: + return -EINVAL; + } + +#ifndef CONFIG_ARCH_USE_MMU + if (shm) + { + up_invalidate_dcache(shm->vaddr, shm->vaddr + shm->length); + } +#endif + } + + return 0; +} + +/**************************************************************************** + * Name: optee_to_msg_param + * + * Description: + * Converts and copies the processed by nuttx parameters to the shared + * memory area containing the message to/from the OP-TEE. + * + * Parameters: + * params - Pointer, of the processed by nuttx parameters containing the + * response. + * num_params - Number of these parameters. + * mparams - Pointer to the message parameters received by OP-TEE. + * + * Returned Values: + * OK on success; A negated errno value is returned on any failure. + * + ****************************************************************************/ + +int optee_to_msg_param(FAR struct optee_priv_data *priv, + FAR struct optee_msg_param *mparams, Review Comment: done -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org