Lines Matching refs:optee

223 	struct optee *optee = tee_get_drvdata(teedev);  in optee_get_version()  local
225 if (optee->sec_caps & OPTEE_SMC_SEC_CAP_DYNAMIC_SHM) in optee_get_version()
234 struct optee *optee = tee_get_drvdata(teedev); in optee_open() local
240 if (teedev == optee->supp_teedev) { in optee_open()
243 mutex_lock(&optee->supp.mutex); in optee_open()
244 if (!optee->supp.ctx) { in optee_open()
246 optee->supp.ctx = ctx; in optee_open()
248 mutex_unlock(&optee->supp.mutex); in optee_open()
266 struct optee *optee = tee_get_drvdata(teedev); in optee_release() local
308 if (teedev == optee->supp_teedev) in optee_release()
309 optee_supp_release(&optee->supp); in optee_release()
552 static struct optee *optee_probe(struct device_node *np) in optee_probe()
556 struct optee *optee = NULL; in optee_probe() local
594 optee = kzalloc(sizeof(*optee), GFP_KERNEL); in optee_probe()
595 if (!optee) { in optee_probe()
600 optee->invoke_fn = invoke_fn; in optee_probe()
601 optee->sec_caps = sec_caps; in optee_probe()
603 teedev = tee_device_alloc(&optee_desc, NULL, pool, optee); in optee_probe()
608 optee->teedev = teedev; in optee_probe()
610 teedev = tee_device_alloc(&optee_supp_desc, NULL, pool, optee); in optee_probe()
615 optee->supp_teedev = teedev; in optee_probe()
617 rc = tee_device_register(optee->teedev); in optee_probe()
621 rc = tee_device_register(optee->supp_teedev); in optee_probe()
625 mutex_init(&optee->call_queue.mutex); in optee_probe()
626 INIT_LIST_HEAD(&optee->call_queue.waiters); in optee_probe()
627 optee_wait_queue_init(&optee->wait_queue); in optee_probe()
628 optee_supp_init(&optee->supp); in optee_probe()
629 optee->memremaped_shm = memremaped_shm; in optee_probe()
630 optee->pool = pool; in optee_probe()
632 optee_enable_shm_cache(optee); in optee_probe()
635 return optee; in optee_probe()
637 if (optee) { in optee_probe()
643 tee_device_unregister(optee->supp_teedev); in optee_probe()
644 tee_device_unregister(optee->teedev); in optee_probe()
645 kfree(optee); in optee_probe()
654 static void optee_remove(struct optee *optee) in optee_remove() argument
661 optee_disable_shm_cache(optee); in optee_remove()
667 tee_device_unregister(optee->supp_teedev); in optee_remove()
668 tee_device_unregister(optee->teedev); in optee_remove()
670 tee_shm_pool_free(optee->pool); in optee_remove()
671 if (optee->memremaped_shm) in optee_remove()
672 memunmap(optee->memremaped_shm); in optee_remove()
673 optee_wait_queue_exit(&optee->wait_queue); in optee_remove()
674 optee_supp_uninit(&optee->supp); in optee_remove()
675 mutex_destroy(&optee->call_queue.mutex); in optee_remove()
677 kfree(optee); in optee_remove()
685 static struct optee *optee_svc;
691 struct optee *optee; in optee_driver_init() local
702 optee = optee_probe(np); in optee_driver_init()
705 if (IS_ERR(optee)) in optee_driver_init()
706 return PTR_ERR(optee); in optee_driver_init()
708 optee_svc = optee; in optee_driver_init()
716 struct optee *optee = optee_svc; in optee_driver_exit() local
719 if (optee) in optee_driver_exit()
720 optee_remove(optee); in optee_driver_exit()