mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 17:25:35 +03:00
drm/tegra: Add upstream tegra-drm driver
Add the upstream tegra-drm driver with the 'Host1x/Tegra UAPI' series [0] applied. This driver will be built as an external module for testing and development with upstream Linux kernels. The following modifications have been made to the series posted upstream 1. Update the Makefile to always build the driver as a module 2. Always enable the tegra_drm_ioctl_xxx in the tegra_drm_ioctls and remove the dependency on CONFIG_DRM_TEGRA_STAGING. 3. Rename the include/uapi/drm/tegra_drm.h to include/uapi/drm/tegra_drm_next.h to avoid conflicts with upstream headers when building as an external module. 5. Rename the module that is built to be tegra-drm-next.ko instead of tegra-drm.ko to avoid any depmod conflicts with the upstream driver. [0] https://patchwork.ozlabs.org/project/linux-tegra/list/?series=215770 Bug 3156385 Change-Id: I19206f989325c9c6ff3c2b9301d964140d52234f Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2435802 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: Gerrit_Virtual_Submit
This commit is contained in:
committed by
Laxman Dewangan
parent
46b9df5186
commit
b8c2d943ed
63
drivers/gpu/drm/tegra/uapi.h
Normal file
63
drivers/gpu/drm/tegra/uapi.h
Normal file
@@ -0,0 +1,63 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/* Copyright (c) 2020 NVIDIA Corporation */
|
||||
|
||||
#ifndef _TEGRA_DRM_UAPI_H
|
||||
#define _TEGRA_DRM_UAPI_H
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/idr.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/xarray.h>
|
||||
|
||||
#include <drm/drm.h>
|
||||
|
||||
struct drm_file;
|
||||
struct drm_device;
|
||||
|
||||
struct tegra_drm_file {
|
||||
/* Legacy UAPI state */
|
||||
struct idr legacy_contexts;
|
||||
struct mutex lock;
|
||||
|
||||
/* New UAPI state */
|
||||
struct xarray contexts;
|
||||
};
|
||||
|
||||
struct tegra_drm_channel_ctx {
|
||||
struct tegra_drm_client *client;
|
||||
struct host1x_channel *channel;
|
||||
struct xarray mappings;
|
||||
};
|
||||
|
||||
struct tegra_drm_mapping {
|
||||
struct kref ref;
|
||||
|
||||
struct device *dev;
|
||||
struct host1x_bo *bo;
|
||||
struct sg_table *sgt;
|
||||
enum dma_data_direction direction;
|
||||
dma_addr_t iova;
|
||||
dma_addr_t iova_end;
|
||||
};
|
||||
|
||||
int tegra_drm_ioctl_channel_open(struct drm_device *drm, void *data,
|
||||
struct drm_file *file);
|
||||
int tegra_drm_ioctl_channel_close(struct drm_device *drm, void *data,
|
||||
struct drm_file *file);
|
||||
int tegra_drm_ioctl_channel_map(struct drm_device *drm, void *data,
|
||||
struct drm_file *file);
|
||||
int tegra_drm_ioctl_channel_unmap(struct drm_device *drm, void *data,
|
||||
struct drm_file *file);
|
||||
int tegra_drm_ioctl_channel_submit(struct drm_device *drm, void *data,
|
||||
struct drm_file *file);
|
||||
int tegra_drm_ioctl_gem_create(struct drm_device *drm, void *data,
|
||||
struct drm_file *file);
|
||||
int tegra_drm_ioctl_gem_mmap(struct drm_device *drm, void *data,
|
||||
struct drm_file *file);
|
||||
|
||||
void tegra_drm_uapi_close_file(struct tegra_drm_file *file);
|
||||
void tegra_drm_mapping_put(struct tegra_drm_mapping *mapping);
|
||||
struct tegra_drm_channel_ctx *
|
||||
tegra_drm_channel_ctx_lock(struct tegra_drm_file *file, u32 id);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user