diff options
Diffstat (limited to 'drivers/edgetpu/abrolhos-device.c')
-rw-r--r-- | drivers/edgetpu/abrolhos-device.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/drivers/edgetpu/abrolhos-device.c b/drivers/edgetpu/abrolhos-device.c index df23c42..67feb70 100644 --- a/drivers/edgetpu/abrolhos-device.c +++ b/drivers/edgetpu/abrolhos-device.c @@ -105,87 +105,3 @@ void edgetpu_chip_handle_reverse_kci(struct edgetpu_dev *etdev, break; } } - -static int abrolhos_check_ext_mailbox_args(const char *func, - struct edgetpu_dev *etdev, - struct edgetpu_ext_mailbox_ioctl *args) -{ - if (args->type != EDGETPU_EXT_MAILBOX_TYPE_TZ) { - etdev_err(etdev, "%s: Invalid type %d != %d\n", func, - args->type, EDGETPU_EXT_MAILBOX_TYPE_TZ); - return -EINVAL; - } - if (args->count != 1) { - etdev_err(etdev, "%s: Invalid mailbox count: %d != 1\n", func, - args->count); - return -EINVAL; - } - return 0; -} - -int edgetpu_chip_acquire_ext_mailbox(struct edgetpu_client *client, - struct edgetpu_ext_mailbox_ioctl *args) -{ - struct edgetpu_mobile_platform_dev *etmdev = to_mobile_dev(client->etdev); - int ret; - - ret = abrolhos_check_ext_mailbox_args(__func__, client->etdev, - args); - if (ret) - return ret; - - mutex_lock(&etmdev->tz_mailbox_lock); - if (etmdev->secure_client) { - etdev_err(client->etdev, - "TZ mailbox already in use by PID %d\n", - etmdev->secure_client->pid); - mutex_unlock(&etmdev->tz_mailbox_lock); - return -EBUSY; - } - ret = edgetpu_mailbox_enable_ext(client, ABROLHOS_TZ_MAILBOX_ID, NULL); - if (!ret) - etmdev->secure_client = client; - mutex_unlock(&etmdev->tz_mailbox_lock); - return ret; -} - -int edgetpu_chip_release_ext_mailbox(struct edgetpu_client *client, - struct edgetpu_ext_mailbox_ioctl *args) -{ - struct edgetpu_mobile_platform_dev *etmdev = to_mobile_dev(client->etdev); - int ret = 0; - - ret = abrolhos_check_ext_mailbox_args(__func__, client->etdev, - args); - if (ret) - return ret; - - mutex_lock(&etmdev->tz_mailbox_lock); - if (!etmdev->secure_client) { - etdev_warn(client->etdev, "TZ mailbox already released\n"); - mutex_unlock(&etmdev->tz_mailbox_lock); - return 0; - } - if (etmdev->secure_client != client) { - etdev_err(client->etdev, - "TZ mailbox owned by different client\n"); - mutex_unlock(&etmdev->tz_mailbox_lock); - return -EBUSY; - } - etmdev->secure_client = NULL; - ret = edgetpu_mailbox_disable_ext(client, ABROLHOS_TZ_MAILBOX_ID); - mutex_unlock(&etmdev->tz_mailbox_lock); - return ret; -} - -void edgetpu_chip_client_remove(struct edgetpu_client *client) -{ - struct edgetpu_mobile_platform_dev *etmdev = to_mobile_dev(client->etdev); - - mutex_lock(&etmdev->tz_mailbox_lock); - if (etmdev->secure_client == client) { - etmdev->secure_client = NULL; - edgetpu_mailbox_disable_ext(client, ABROLHOS_TZ_MAILBOX_ID); - } - mutex_unlock(&etmdev->tz_mailbox_lock); -} |