teedev 127 drivers/tee/optee/call.c struct optee *optee = tee_get_drvdata(ctx->teedev); teedev 206 drivers/tee/optee/core.c static void optee_get_version(struct tee_device *teedev, teedev 214 drivers/tee/optee/core.c struct optee *optee = tee_get_drvdata(teedev); teedev 224 drivers/tee/optee/core.c struct tee_device *teedev = ctx->teedev; teedev 225 drivers/tee/optee/core.c struct optee *optee = tee_get_drvdata(teedev); teedev 231 drivers/tee/optee/core.c if (teedev == optee->supp_teedev) { teedev 256 drivers/tee/optee/core.c struct tee_device *teedev = ctx->teedev; teedev 257 drivers/tee/optee/core.c struct optee *optee = tee_get_drvdata(teedev); teedev 299 drivers/tee/optee/core.c if (teedev == optee->supp_teedev) teedev 563 drivers/tee/optee/core.c struct tee_device *teedev; teedev 612 drivers/tee/optee/core.c teedev = tee_device_alloc(&optee_desc, NULL, pool, optee); teedev 613 drivers/tee/optee/core.c if (IS_ERR(teedev)) { teedev 614 drivers/tee/optee/core.c rc = PTR_ERR(teedev); teedev 617 drivers/tee/optee/core.c optee->teedev = teedev; teedev 619 drivers/tee/optee/core.c teedev = tee_device_alloc(&optee_supp_desc, NULL, pool, optee); teedev 620 drivers/tee/optee/core.c if (IS_ERR(teedev)) { teedev 621 drivers/tee/optee/core.c rc = PTR_ERR(teedev); teedev 624 drivers/tee/optee/core.c optee->supp_teedev = teedev; teedev 626 drivers/tee/optee/core.c rc = tee_device_register(optee->teedev); teedev 655 drivers/tee/optee/core.c tee_device_unregister(optee->teedev); teedev 679 drivers/tee/optee/core.c tee_device_unregister(optee->teedev); teedev 84 drivers/tee/optee/optee_private.h struct tee_device *teedev; teedev 174 drivers/tee/optee/rpc.c struct optee *optee = tee_get_drvdata(ctx->teedev); teedev 401 drivers/tee/optee/rpc.c struct tee_device *teedev = ctx->teedev; teedev 402 drivers/tee/optee/rpc.c struct optee *optee = tee_get_drvdata(teedev); teedev 80 drivers/tee/optee/supp.c struct optee *optee = tee_get_drvdata(ctx->teedev); teedev 232 drivers/tee/optee/supp.c struct tee_device *teedev = ctx->teedev; teedev 233 drivers/tee/optee/supp.c struct optee *optee = tee_get_drvdata(teedev); teedev 341 drivers/tee/optee/supp.c struct tee_device *teedev = ctx->teedev; teedev 342 drivers/tee/optee/supp.c struct optee *optee = tee_get_drvdata(teedev); teedev 31 drivers/tee/tee_core.c static struct tee_context *teedev_open(struct tee_device *teedev) teedev 36 drivers/tee/tee_core.c if (!tee_device_get(teedev)) teedev 46 drivers/tee/tee_core.c ctx->teedev = teedev; teedev 48 drivers/tee/tee_core.c rc = teedev->desc->ops->open(ctx); teedev 55 drivers/tee/tee_core.c tee_device_put(teedev); teedev 73 drivers/tee/tee_core.c ctx->teedev->desc->ops->release(ctx); teedev 87 drivers/tee/tee_core.c tee_device_put(ctx->teedev); teedev 119 drivers/tee/tee_core.c ctx->teedev->desc->ops->get_version(ctx->teedev, &vers); teedev 121 drivers/tee/tee_core.c if (ctx->teedev->desc->flags & TEE_DESC_PRIVILEGED) teedev 309 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->open_session) teedev 337 drivers/tee/tee_core.c rc = ctx->teedev->desc->ops->open_session(ctx, &arg, params); teedev 354 drivers/tee/tee_core.c if (rc && have_session && ctx->teedev->desc->ops->close_session) teedev 355 drivers/tee/tee_core.c ctx->teedev->desc->ops->close_session(ctx, arg.session); teedev 380 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->invoke_func) teedev 408 drivers/tee/tee_core.c rc = ctx->teedev->desc->ops->invoke_func(ctx, &arg, params); teedev 435 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->cancel_req) teedev 441 drivers/tee/tee_core.c return ctx->teedev->desc->ops->cancel_req(ctx, arg.cancel_id, teedev 451 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->close_session) teedev 457 drivers/tee/tee_core.c return ctx->teedev->desc->ops->close_session(ctx, arg.session); teedev 514 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->supp_recv) teedev 539 drivers/tee/tee_core.c rc = ctx->teedev->desc->ops->supp_recv(ctx, &func, &num_params, params); teedev 612 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->supp_send) teedev 638 drivers/tee/tee_core.c rc = ctx->teedev->desc->ops->supp_send(ctx, ret, num_params, params); teedev 683 drivers/tee/tee_core.c struct tee_device *teedev = container_of(dev, struct tee_device, dev); teedev 686 drivers/tee/tee_core.c clear_bit(teedev->id, dev_mask); teedev 688 drivers/tee/tee_core.c mutex_destroy(&teedev->mutex); teedev 689 drivers/tee/tee_core.c idr_destroy(&teedev->idr); teedev 690 drivers/tee/tee_core.c kfree(teedev); teedev 710 drivers/tee/tee_core.c struct tee_device *teedev; teedev 720 drivers/tee/tee_core.c teedev = kzalloc(sizeof(*teedev), GFP_KERNEL); teedev 721 drivers/tee/tee_core.c if (!teedev) { teedev 734 drivers/tee/tee_core.c teedev->id = find_next_zero_bit(dev_mask, max_id, offs); teedev 735 drivers/tee/tee_core.c if (teedev->id < max_id) teedev 736 drivers/tee/tee_core.c set_bit(teedev->id, dev_mask); teedev 739 drivers/tee/tee_core.c if (teedev->id >= max_id) { teedev 744 drivers/tee/tee_core.c snprintf(teedev->name, sizeof(teedev->name), "tee%s%d", teedev 746 drivers/tee/tee_core.c teedev->id - offs); teedev 748 drivers/tee/tee_core.c teedev->dev.class = tee_class; teedev 749 drivers/tee/tee_core.c teedev->dev.release = tee_release_device; teedev 750 drivers/tee/tee_core.c teedev->dev.parent = dev; teedev 752 drivers/tee/tee_core.c teedev->dev.devt = MKDEV(MAJOR(tee_devt), teedev->id); teedev 754 drivers/tee/tee_core.c rc = dev_set_name(&teedev->dev, "%s", teedev->name); teedev 760 drivers/tee/tee_core.c cdev_init(&teedev->cdev, &tee_fops); teedev 761 drivers/tee/tee_core.c teedev->cdev.owner = teedesc->owner; teedev 762 drivers/tee/tee_core.c teedev->cdev.kobj.parent = &teedev->dev.kobj; teedev 764 drivers/tee/tee_core.c dev_set_drvdata(&teedev->dev, driver_data); teedev 765 drivers/tee/tee_core.c device_initialize(&teedev->dev); teedev 768 drivers/tee/tee_core.c teedev->num_users = 1; teedev 769 drivers/tee/tee_core.c init_completion(&teedev->c_no_users); teedev 770 drivers/tee/tee_core.c mutex_init(&teedev->mutex); teedev 771 drivers/tee/tee_core.c idr_init(&teedev->idr); teedev 773 drivers/tee/tee_core.c teedev->desc = teedesc; teedev 774 drivers/tee/tee_core.c teedev->pool = pool; teedev 776 drivers/tee/tee_core.c return teedev; teedev 778 drivers/tee/tee_core.c unregister_chrdev_region(teedev->dev.devt, 1); teedev 782 drivers/tee/tee_core.c if (teedev && teedev->id < TEE_NUM_DEVICES) { teedev 784 drivers/tee/tee_core.c clear_bit(teedev->id, dev_mask); teedev 787 drivers/tee/tee_core.c kfree(teedev); teedev 795 drivers/tee/tee_core.c struct tee_device *teedev = container_of(dev, struct tee_device, dev); teedev 798 drivers/tee/tee_core.c teedev->desc->ops->get_version(teedev, &vers); teedev 821 drivers/tee/tee_core.c int tee_device_register(struct tee_device *teedev) teedev 825 drivers/tee/tee_core.c if (teedev->flags & TEE_DEVICE_FLAG_REGISTERED) { teedev 826 drivers/tee/tee_core.c dev_err(&teedev->dev, "attempt to register twice\n"); teedev 830 drivers/tee/tee_core.c rc = cdev_add(&teedev->cdev, teedev->dev.devt, 1); teedev 832 drivers/tee/tee_core.c dev_err(&teedev->dev, teedev 834 drivers/tee/tee_core.c teedev->name, MAJOR(teedev->dev.devt), teedev 835 drivers/tee/tee_core.c MINOR(teedev->dev.devt), rc); teedev 839 drivers/tee/tee_core.c rc = device_add(&teedev->dev); teedev 841 drivers/tee/tee_core.c dev_err(&teedev->dev, teedev 843 drivers/tee/tee_core.c teedev->name, MAJOR(teedev->dev.devt), teedev 844 drivers/tee/tee_core.c MINOR(teedev->dev.devt), rc); teedev 848 drivers/tee/tee_core.c rc = sysfs_create_group(&teedev->dev.kobj, &tee_dev_group); teedev 850 drivers/tee/tee_core.c dev_err(&teedev->dev, teedev 855 drivers/tee/tee_core.c teedev->flags |= TEE_DEVICE_FLAG_REGISTERED; teedev 859 drivers/tee/tee_core.c device_del(&teedev->dev); teedev 861 drivers/tee/tee_core.c cdev_del(&teedev->cdev); teedev 866 drivers/tee/tee_core.c void tee_device_put(struct tee_device *teedev) teedev 868 drivers/tee/tee_core.c mutex_lock(&teedev->mutex); teedev 870 drivers/tee/tee_core.c if (!WARN_ON(!teedev->desc)) { teedev 871 drivers/tee/tee_core.c teedev->num_users--; teedev 872 drivers/tee/tee_core.c if (!teedev->num_users) { teedev 873 drivers/tee/tee_core.c teedev->desc = NULL; teedev 874 drivers/tee/tee_core.c complete(&teedev->c_no_users); teedev 877 drivers/tee/tee_core.c mutex_unlock(&teedev->mutex); teedev 880 drivers/tee/tee_core.c bool tee_device_get(struct tee_device *teedev) teedev 882 drivers/tee/tee_core.c mutex_lock(&teedev->mutex); teedev 883 drivers/tee/tee_core.c if (!teedev->desc) { teedev 884 drivers/tee/tee_core.c mutex_unlock(&teedev->mutex); teedev 887 drivers/tee/tee_core.c teedev->num_users++; teedev 888 drivers/tee/tee_core.c mutex_unlock(&teedev->mutex); teedev 900 drivers/tee/tee_core.c void tee_device_unregister(struct tee_device *teedev) teedev 902 drivers/tee/tee_core.c if (!teedev) teedev 905 drivers/tee/tee_core.c if (teedev->flags & TEE_DEVICE_FLAG_REGISTERED) { teedev 906 drivers/tee/tee_core.c sysfs_remove_group(&teedev->dev.kobj, &tee_dev_group); teedev 907 drivers/tee/tee_core.c cdev_del(&teedev->cdev); teedev 908 drivers/tee/tee_core.c device_del(&teedev->dev); teedev 911 drivers/tee/tee_core.c tee_device_put(teedev); teedev 912 drivers/tee/tee_core.c wait_for_completion(&teedev->c_no_users); teedev 919 drivers/tee/tee_core.c teedev->pool = NULL; teedev 921 drivers/tee/tee_core.c put_device(&teedev->dev); teedev 930 drivers/tee/tee_core.c void *tee_get_drvdata(struct tee_device *teedev) teedev 932 drivers/tee/tee_core.c return dev_get_drvdata(&teedev->dev); teedev 945 drivers/tee/tee_core.c struct tee_device *teedev = container_of(dev, struct tee_device, dev); teedev 947 drivers/tee/tee_core.c teedev->desc->ops->get_version(teedev, match_data->vers); teedev 964 drivers/tee/tee_core.c dev = &start->teedev->dev; teedev 1003 drivers/tee/tee_core.c ctx->teedev->desc->ops->get_version(ctx->teedev, vers); teedev 1011 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->open_session) teedev 1013 drivers/tee/tee_core.c return ctx->teedev->desc->ops->open_session(ctx, arg, param); teedev 1019 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->close_session) teedev 1021 drivers/tee/tee_core.c return ctx->teedev->desc->ops->close_session(ctx, session); teedev 1029 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->invoke_func) teedev 1031 drivers/tee/tee_core.c return ctx->teedev->desc->ops->invoke_func(ctx, arg, param); teedev 1038 drivers/tee/tee_core.c if (!ctx->teedev->desc->ops->cancel_req) teedev 1040 drivers/tee/tee_core.c return ctx->teedev->desc->ops->cancel_req(ctx, arg->cancel_id, teedev 64 drivers/tee/tee_private.h bool tee_device_get(struct tee_device *teedev); teedev 65 drivers/tee/tee_private.h void tee_device_put(struct tee_device *teedev); teedev 16 drivers/tee/tee_shm.c struct tee_device *teedev = shm->teedev; teedev 18 drivers/tee/tee_shm.c mutex_lock(&teedev->mutex); teedev 19 drivers/tee/tee_shm.c idr_remove(&teedev->idr, shm->id); teedev 22 drivers/tee/tee_shm.c mutex_unlock(&teedev->mutex); teedev 28 drivers/tee/tee_shm.c poolm = teedev->pool->dma_buf_mgr; teedev 30 drivers/tee/tee_shm.c poolm = teedev->pool->private_mgr; teedev 35 drivers/tee/tee_shm.c int rc = teedev->desc->ops->shm_unregister(shm->ctx, shm); teedev 38 drivers/tee/tee_shm.c dev_err(teedev->dev.parent, teedev 52 drivers/tee/tee_shm.c tee_device_put(teedev); teedev 101 drivers/tee/tee_shm.c struct tee_device *teedev, teedev 109 drivers/tee/tee_shm.c if (ctx && ctx->teedev != teedev) { teedev 110 drivers/tee/tee_shm.c dev_err(teedev->dev.parent, "ctx and teedev mismatch\n"); teedev 115 drivers/tee/tee_shm.c dev_err(teedev->dev.parent, teedev 121 drivers/tee/tee_shm.c dev_err(teedev->dev.parent, "invalid shm flags 0x%x", flags); teedev 125 drivers/tee/tee_shm.c if (!tee_device_get(teedev)) teedev 128 drivers/tee/tee_shm.c if (!teedev->pool) { teedev 141 drivers/tee/tee_shm.c shm->teedev = teedev; teedev 144 drivers/tee/tee_shm.c poolm = teedev->pool->dma_buf_mgr; teedev 146 drivers/tee/tee_shm.c poolm = teedev->pool->private_mgr; teedev 154 drivers/tee/tee_shm.c mutex_lock(&teedev->mutex); teedev 155 drivers/tee/tee_shm.c shm->id = idr_alloc(&teedev->idr, shm, 1, 0, GFP_KERNEL); teedev 156 drivers/tee/tee_shm.c mutex_unlock(&teedev->mutex); teedev 179 drivers/tee/tee_shm.c mutex_lock(&teedev->mutex); teedev 181 drivers/tee/tee_shm.c mutex_unlock(&teedev->mutex); teedev 186 drivers/tee/tee_shm.c mutex_lock(&teedev->mutex); teedev 187 drivers/tee/tee_shm.c idr_remove(&teedev->idr, shm->id); teedev 188 drivers/tee/tee_shm.c mutex_unlock(&teedev->mutex); teedev 194 drivers/tee/tee_shm.c tee_device_put(teedev); teedev 212 drivers/tee/tee_shm.c return __tee_shm_alloc(ctx, ctx->teedev, size, flags); teedev 216 drivers/tee/tee_shm.c struct tee_shm *tee_shm_priv_alloc(struct tee_device *teedev, size_t size) teedev 218 drivers/tee/tee_shm.c return __tee_shm_alloc(NULL, teedev, size, TEE_SHM_MAPPED); teedev 225 drivers/tee/tee_shm.c struct tee_device *teedev = ctx->teedev; teedev 236 drivers/tee/tee_shm.c if (!tee_device_get(teedev)) teedev 239 drivers/tee/tee_shm.c if (!teedev->desc->ops->shm_register || teedev 240 drivers/tee/tee_shm.c !teedev->desc->ops->shm_unregister) { teedev 241 drivers/tee/tee_shm.c tee_device_put(teedev); teedev 254 drivers/tee/tee_shm.c shm->teedev = teedev; teedev 278 drivers/tee/tee_shm.c mutex_lock(&teedev->mutex); teedev 279 drivers/tee/tee_shm.c shm->id = idr_alloc(&teedev->idr, shm, 1, 0, GFP_KERNEL); teedev 280 drivers/tee/tee_shm.c mutex_unlock(&teedev->mutex); teedev 287 drivers/tee/tee_shm.c rc = teedev->desc->ops->shm_register(ctx, shm, shm->pages, teedev 305 drivers/tee/tee_shm.c teedev->desc->ops->shm_unregister(ctx, shm); teedev 310 drivers/tee/tee_shm.c mutex_lock(&teedev->mutex); teedev 312 drivers/tee/tee_shm.c mutex_unlock(&teedev->mutex); teedev 320 drivers/tee/tee_shm.c mutex_lock(&teedev->mutex); teedev 321 drivers/tee/tee_shm.c idr_remove(&teedev->idr, shm->id); teedev 322 drivers/tee/tee_shm.c mutex_unlock(&teedev->mutex); teedev 332 drivers/tee/tee_shm.c tee_device_put(teedev); teedev 470 drivers/tee/tee_shm.c struct tee_device *teedev; teedev 476 drivers/tee/tee_shm.c teedev = ctx->teedev; teedev 477 drivers/tee/tee_shm.c mutex_lock(&teedev->mutex); teedev 478 drivers/tee/tee_shm.c shm = idr_find(&teedev->idr, id); teedev 483 drivers/tee/tee_shm.c mutex_unlock(&teedev->mutex); teedev 51 include/linux/tee_drv.h struct tee_device *teedev; teedev 94 include/linux/tee_drv.h void (*get_version)(struct tee_device *teedev, teedev 157 include/linux/tee_drv.h int tee_device_register(struct tee_device *teedev); teedev 167 include/linux/tee_drv.h void tee_device_unregister(struct tee_device *teedev); teedev 188 include/linux/tee_drv.h struct tee_device *teedev; teedev 303 include/linux/tee_drv.h void *tee_get_drvdata(struct tee_device *teedev); teedev 331 include/linux/tee_drv.h struct tee_shm *tee_shm_priv_alloc(struct tee_device *teedev, size_t size);