uapi.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /* Copyright (c) 2020 NVIDIA Corporation */
  3. #ifndef _TEGRA_DRM_UAPI_H
  4. #define _TEGRA_DRM_UAPI_H
  5. #include <linux/dma-mapping.h>
  6. #include <linux/idr.h>
  7. #include <linux/kref.h>
  8. #include <linux/xarray.h>
  9. #include <drm/drm.h>
  10. struct drm_file;
  11. struct drm_device;
  12. struct tegra_drm_file {
  13. /* Legacy UAPI state */
  14. struct idr legacy_contexts;
  15. struct mutex lock;
  16. /* New UAPI state */
  17. struct xarray contexts;
  18. struct xarray syncpoints;
  19. };
  20. struct tegra_drm_mapping {
  21. struct kref ref;
  22. struct host1x_bo_mapping *map;
  23. struct host1x_bo *bo;
  24. dma_addr_t iova;
  25. dma_addr_t iova_end;
  26. };
  27. int tegra_drm_ioctl_channel_open(struct drm_device *drm, void *data,
  28. struct drm_file *file);
  29. int tegra_drm_ioctl_channel_close(struct drm_device *drm, void *data,
  30. struct drm_file *file);
  31. int tegra_drm_ioctl_channel_map(struct drm_device *drm, void *data,
  32. struct drm_file *file);
  33. int tegra_drm_ioctl_channel_unmap(struct drm_device *drm, void *data,
  34. struct drm_file *file);
  35. int tegra_drm_ioctl_channel_submit(struct drm_device *drm, void *data,
  36. struct drm_file *file);
  37. int tegra_drm_ioctl_syncpoint_allocate(struct drm_device *drm, void *data,
  38. struct drm_file *file);
  39. int tegra_drm_ioctl_syncpoint_free(struct drm_device *drm, void *data,
  40. struct drm_file *file);
  41. int tegra_drm_ioctl_syncpoint_wait(struct drm_device *drm, void *data,
  42. struct drm_file *file);
  43. void tegra_drm_uapi_close_file(struct tegra_drm_file *file);
  44. void tegra_drm_mapping_put(struct tegra_drm_mapping *mapping);
  45. #endif