/* SPDX-License-Identifier: GPL-2.0 */ /* * EdgeTPU support for buffers backed by dma-buf. * * Copyright (C) 2020 Google, Inc. */ #ifndef __EDGETPU_DMABUF_H__ #define __EDGETPU_DMABUF_H__ #include #include "edgetpu-device-group.h" #include "edgetpu-internal.h" #include "edgetpu.h" /* * Maps a dma-buf to a device group. * * @arg->device_address will be set as the mapped TPU VA on success. * * Returns zero on success or a negative errno on error. */ int edgetpu_map_dmabuf(struct edgetpu_device_group *group, struct edgetpu_map_dmabuf_ioctl *arg); /* unmap the dma-buf backed buffer from a device group */ int edgetpu_unmap_dmabuf(struct edgetpu_device_group *group, tpu_addr_t tpu_addr); /* Creates a DMA sync fence manager. */ int edgetpu_sync_fence_manager_create(struct edgetpu_dev *etdev); /* Create a DMA sync fence via ioctl */ int edgetpu_sync_fence_create(struct edgetpu_dev *etdev, struct edgetpu_device_group *group, struct edgetpu_create_sync_fence_data *datap); /* Signal a DMA sync fence, optionally specifying error status */ int edgetpu_sync_fence_signal(struct edgetpu_signal_sync_fence_data *datap); /* Return DMA sync fence status */ int edgetpu_sync_fence_status(struct edgetpu_sync_fence_status *datap); /* * Send error signal to any remaining unsignalled DMA sync fences in a group being disbanded. * Caller holds group lock. */ void edgetpu_sync_fence_group_shutdown(struct edgetpu_device_group *group); /* Dump sync fence info from debugfs */ int edgetpu_sync_fence_debugfs_show(struct seq_file *s, void *unused); #endif /* __EDGETPU_DMABUF_H__ */