mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
drm/tegra: Merge upstream changes
Merge upstream changes from linux-next, including merged version of new UAPI. Change-Id: I4f591d39e51ac6ab6877a0bd428adf166eca3c55 Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2653095 Tested-by: Jonathan Hunter <jonathanh@nvidia.com> Reviewed-by: Jonathan Hunter <jonathanh@nvidia.com> Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com> GVS: Gerrit_Virtual_Submit
This commit is contained in:
committed by
Laxman Dewangan
parent
a6ff2bcf9e
commit
02b028d02a
@@ -24,14 +24,15 @@
|
||||
#include <drm/drm_prime.h>
|
||||
#include <drm/drm_vblank.h>
|
||||
|
||||
#include "uapi.h"
|
||||
#include "dc.h"
|
||||
#include "drm.h"
|
||||
#include "gem.h"
|
||||
#include "uapi.h"
|
||||
|
||||
#define DRIVER_NAME "tegra"
|
||||
#define DRIVER_DESC "NVIDIA Tegra graphics"
|
||||
#define DRIVER_DATE "20120330"
|
||||
#define DRIVER_MAJOR 0
|
||||
#define DRIVER_MAJOR 1
|
||||
#define DRIVER_MINOR 0
|
||||
#define DRIVER_PATCHLEVEL 0
|
||||
|
||||
@@ -59,6 +60,17 @@ static const struct drm_mode_config_funcs tegra_drm_mode_config_funcs = {
|
||||
.atomic_commit = drm_atomic_helper_commit,
|
||||
};
|
||||
|
||||
static void tegra_atomic_post_commit(struct drm_device *drm,
|
||||
struct drm_atomic_state *old_state)
|
||||
{
|
||||
struct drm_crtc_state *old_crtc_state __maybe_unused;
|
||||
struct drm_crtc *crtc;
|
||||
unsigned int i;
|
||||
|
||||
for_each_old_crtc_in_state(old_state, crtc, old_crtc_state, i)
|
||||
tegra_crtc_atomic_post_commit(crtc, old_state);
|
||||
}
|
||||
|
||||
static void tegra_atomic_commit_tail(struct drm_atomic_state *old_state)
|
||||
{
|
||||
struct drm_device *drm = old_state->dev;
|
||||
@@ -78,6 +90,8 @@ static void tegra_atomic_commit_tail(struct drm_atomic_state *old_state)
|
||||
} else {
|
||||
drm_atomic_helper_commit_tail_rpm(old_state);
|
||||
}
|
||||
|
||||
tegra_atomic_post_commit(drm, old_state);
|
||||
}
|
||||
|
||||
static const struct drm_mode_config_helper_funcs
|
||||
@@ -95,6 +109,7 @@ static int tegra_drm_open(struct drm_device *drm, struct drm_file *filp)
|
||||
|
||||
idr_init_base(&fpriv->legacy_contexts, 1);
|
||||
xa_init_flags(&fpriv->contexts, XA_FLAGS_ALLOC1);
|
||||
xa_init(&fpriv->syncpoints);
|
||||
mutex_init(&fpriv->lock);
|
||||
filp->driver_priv = fpriv;
|
||||
|
||||
@@ -107,20 +122,6 @@ static void tegra_drm_context_free(struct tegra_drm_context *context)
|
||||
kfree(context);
|
||||
}
|
||||
|
||||
static struct host1x_bo *
|
||||
host1x_bo_lookup(struct drm_file *file, u32 handle)
|
||||
{
|
||||
struct drm_gem_object *gem;
|
||||
struct tegra_bo *bo;
|
||||
|
||||
gem = drm_gem_object_lookup(file, handle);
|
||||
if (!gem)
|
||||
return NULL;
|
||||
|
||||
bo = to_tegra_bo(gem);
|
||||
return &bo->base;
|
||||
}
|
||||
|
||||
static int host1x_reloc_copy_from_user(struct host1x_reloc *dest,
|
||||
struct drm_tegra_reloc __user *src,
|
||||
struct drm_device *drm,
|
||||
@@ -151,11 +152,11 @@ static int host1x_reloc_copy_from_user(struct host1x_reloc *dest,
|
||||
|
||||
dest->flags = HOST1X_RELOC_READ | HOST1X_RELOC_WRITE;
|
||||
|
||||
dest->cmdbuf.bo = host1x_bo_lookup(file, cmdbuf);
|
||||
dest->cmdbuf.bo = tegra_gem_lookup(file, cmdbuf);
|
||||
if (!dest->cmdbuf.bo)
|
||||
return -ENOENT;
|
||||
|
||||
dest->target.bo = host1x_bo_lookup(file, target);
|
||||
dest->target.bo = tegra_gem_lookup(file, target);
|
||||
if (!dest->target.bo)
|
||||
return -ENOENT;
|
||||
|
||||
@@ -193,7 +194,7 @@ int tegra_drm_submit(struct tegra_drm_context *context,
|
||||
return -EINVAL;
|
||||
|
||||
job = host1x_job_alloc(context->channel, args->num_cmdbufs,
|
||||
args->num_relocs);
|
||||
args->num_relocs, false);
|
||||
if (!job)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -238,7 +239,7 @@ int tegra_drm_submit(struct tegra_drm_context *context,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
bo = host1x_bo_lookup(file, cmdbuf.handle);
|
||||
bo = tegra_gem_lookup(file, cmdbuf.handle);
|
||||
if (!bo) {
|
||||
err = -ENOENT;
|
||||
goto fail;
|
||||
@@ -743,13 +744,15 @@ static const struct drm_ioctl_desc tegra_drm_ioctls[] = {
|
||||
DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_CHANNEL_SUBMIT, tegra_drm_ioctl_channel_submit,
|
||||
DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_GEM_CREATE, tegra_drm_ioctl_gem_create,
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_SYNCPOINT_ALLOCATE, tegra_drm_ioctl_syncpoint_allocate,
|
||||
DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_GEM_MMAP, tegra_drm_ioctl_gem_mmap,
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_SYNCPOINT_FREE, tegra_drm_ioctl_syncpoint_free,
|
||||
DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_SYNCPOINT_WAIT, tegra_drm_ioctl_syncpoint_wait,
|
||||
DRM_RENDER_ALLOW),
|
||||
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_GEM_CREATE_LEGACY, tegra_gem_create, DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_GEM_MMAP_LEGACY, tegra_gem_mmap, DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_GEM_CREATE, tegra_gem_create, DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_GEM_MMAP, tegra_gem_mmap, DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_SYNCPT_READ, tegra_syncpt_read,
|
||||
DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(TEGRA_SYNCPT_INCR, tegra_syncpt_incr,
|
||||
@@ -868,7 +871,7 @@ static const struct drm_driver tegra_drm_driver = {
|
||||
static struct drm_driver tegra_drm_driver = {
|
||||
#endif
|
||||
.driver_features = DRIVER_MODESET | DRIVER_GEM |
|
||||
DRIVER_ATOMIC | DRIVER_RENDER,
|
||||
DRIVER_ATOMIC | DRIVER_RENDER | DRIVER_SYNCOBJ,
|
||||
.open = tegra_drm_open,
|
||||
.postclose = tegra_drm_postclose,
|
||||
.lastclose = drm_fb_helper_lastclose,
|
||||
@@ -1348,8 +1351,10 @@ static const struct of_device_id host1x_drm_subdevs[] = {
|
||||
{ .compatible = "nvidia,tegra30-hdmi", },
|
||||
{ .compatible = "nvidia,tegra30-gr2d", },
|
||||
{ .compatible = "nvidia,tegra30-gr3d", },
|
||||
{ .compatible = "nvidia,tegra114-dc", },
|
||||
{ .compatible = "nvidia,tegra114-dsi", },
|
||||
{ .compatible = "nvidia,tegra114-hdmi", },
|
||||
{ .compatible = "nvidia,tegra114-gr2d", },
|
||||
{ .compatible = "nvidia,tegra114-gr3d", },
|
||||
{ .compatible = "nvidia,tegra124-dc", },
|
||||
{ .compatible = "nvidia,tegra124-sor", },
|
||||
|
||||
Reference in New Issue
Block a user