qcomtee
struct qcomtee *qcomtee;
qcomtee = kzalloc_obj(*qcomtee);
if (!qcomtee)
teedev = tee_device_alloc(&qcomtee_desc, NULL, pool, qcomtee);
qcomtee->teedev = teedev;
qcomtee->pool = pool;
err = tee_device_register(qcomtee->teedev);
platform_set_drvdata(pdev, qcomtee);
qcomtee->wq = async_wq;
ctx = teedev_open(qcomtee->teedev);
qcomtee->ctx = ctx;
qcomtee->xa_last_id = 0;
xa_init_flags(&qcomtee->xa_local_objects, XA_FLAGS_ALLOC);
qcomtee_get_qtee_feature_list(qcomtee->ctx,
&qcomtee->qtee_version);
QTEE_VERSION_GET_MAJOR(qcomtee->qtee_version),
QTEE_VERSION_GET_MINOR(qcomtee->qtee_version),
QTEE_VERSION_GET_PATCH(qcomtee->qtee_version));
destroy_workqueue(qcomtee->wq);
tee_device_unregister(qcomtee->teedev);
kfree(qcomtee);
struct qcomtee *qcomtee = platform_get_drvdata(pdev);
teedev_close_context(qcomtee->ctx);
tee_device_unregister(qcomtee->teedev);
destroy_workqueue(qcomtee->wq);
tee_shm_pool_free(qcomtee->pool);
kfree(qcomtee);
queue_work(qcomtee->wq, &object->work);
struct qcomtee *qcomtee =
queue_work(qcomtee->wq, &object->work);
struct qcomtee *qcomtee = tee_get_drvdata(oic->ctx->teedev);
return xa_alloc_cyclic(&qcomtee->xa_local_objects, idx, object,
&qcomtee->xa_last_id, GFP_KERNEL);
struct qcomtee *qcomtee = tee_get_drvdata(oic->ctx->teedev);
return xa_erase(&qcomtee->xa_local_objects, idx);
struct qcomtee *qcomtee = tee_get_drvdata(oic->ctx->teedev);
object = xa_load(&qcomtee->xa_local_objects, object_id);
struct qcomtee *qcomtee = tee_get_drvdata(oic->ctx->teedev);
object->info.qcomtee_async_ctx = qcomtee->ctx;
struct qcomtee *qcomtee;
qcomtee = tee_get_drvdata(object->info.qcomtee_async_ctx->teedev);
qcomtee->oic.ctx = object->info.qcomtee_async_ctx;
ret = qcomtee_object_do_invoke_internal(&qcomtee->oic, object,