Lines Matching refs:optee

215 	struct optee *optee = tee_get_drvdata(teedev);  in optee_get_version()  local
217 if (optee->sec_caps & OPTEE_SMC_SEC_CAP_DYNAMIC_SHM) in optee_get_version()
219 if (optee->sec_caps & OPTEE_SMC_SEC_CAP_MEMREF_NULL) in optee_get_version()
233 struct optee *optee = tee_get_drvdata(teedev); in optee_open() local
239 if (teedev == optee->supp_teedev) { in optee_open()
242 mutex_lock(&optee->supp.mutex); in optee_open()
243 if (!optee->supp.ctx) { in optee_open()
245 optee->supp.ctx = ctx; in optee_open()
247 mutex_unlock(&optee->supp.mutex); in optee_open()
253 if (!optee->scan_bus_done) { in optee_open()
254 INIT_WORK(&optee->scan_bus_work, optee_bus_scan); in optee_open()
255 optee->scan_bus_wq = create_workqueue("optee_bus_scan"); in optee_open()
256 if (!optee->scan_bus_wq) { in optee_open()
260 queue_work(optee->scan_bus_wq, &optee->scan_bus_work); in optee_open()
261 optee->scan_bus_done = true; in optee_open()
267 if (optee->sec_caps & OPTEE_SMC_SEC_CAP_MEMREF_NULL) in optee_open()
280 struct optee *optee = tee_get_drvdata(teedev); in optee_release() local
322 if (teedev == optee->supp_teedev) { in optee_release()
323 if (optee->scan_bus_wq) { in optee_release()
324 destroy_workqueue(optee->scan_bus_wq); in optee_release()
325 optee->scan_bus_wq = NULL; in optee_release()
327 optee_supp_release(&optee->supp); in optee_release()
587 struct optee *optee = platform_get_drvdata(pdev); in optee_remove() local
594 optee_disable_shm_cache(optee); in optee_remove()
600 tee_device_unregister(optee->supp_teedev); in optee_remove()
601 tee_device_unregister(optee->teedev); in optee_remove()
603 tee_shm_pool_free(optee->pool); in optee_remove()
604 if (optee->memremaped_shm) in optee_remove()
605 memunmap(optee->memremaped_shm); in optee_remove()
606 optee_wait_queue_exit(&optee->wait_queue); in optee_remove()
607 optee_supp_uninit(&optee->supp); in optee_remove()
608 mutex_destroy(&optee->call_queue.mutex); in optee_remove()
610 kfree(optee); in optee_remove()
619 struct optee *optee = NULL; in optee_probe() local
661 optee = kzalloc(sizeof(*optee), GFP_KERNEL); in optee_probe()
662 if (!optee) { in optee_probe()
667 optee->invoke_fn = invoke_fn; in optee_probe()
668 optee->sec_caps = sec_caps; in optee_probe()
670 teedev = tee_device_alloc(&optee_desc, NULL, pool, optee); in optee_probe()
675 optee->teedev = teedev; in optee_probe()
677 teedev = tee_device_alloc(&optee_supp_desc, NULL, pool, optee); in optee_probe()
682 optee->supp_teedev = teedev; in optee_probe()
684 rc = tee_device_register(optee->teedev); in optee_probe()
688 rc = tee_device_register(optee->supp_teedev); in optee_probe()
692 mutex_init(&optee->call_queue.mutex); in optee_probe()
693 INIT_LIST_HEAD(&optee->call_queue.waiters); in optee_probe()
694 optee_wait_queue_init(&optee->wait_queue); in optee_probe()
695 optee_supp_init(&optee->supp); in optee_probe()
696 optee->memremaped_shm = memremaped_shm; in optee_probe()
697 optee->pool = pool; in optee_probe()
699 optee_enable_shm_cache(optee); in optee_probe()
701 if (optee->sec_caps & OPTEE_SMC_SEC_CAP_DYNAMIC_SHM) in optee_probe()
704 platform_set_drvdata(pdev, optee); in optee_probe()
715 if (optee) { in optee_probe()
721 tee_device_unregister(optee->supp_teedev); in optee_probe()
722 tee_device_unregister(optee->teedev); in optee_probe()
723 kfree(optee); in optee_probe()