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