|
@@ -15,7 +15,6 @@
|
|
#include <drm/drmP.h>
|
|
#include <drm/drmP.h>
|
|
#include <drm/drm_crtc_helper.h>
|
|
#include <drm/drm_crtc_helper.h>
|
|
|
|
|
|
-#include <linux/anon_inodes.h>
|
|
|
|
#include <linux/component.h>
|
|
#include <linux/component.h>
|
|
|
|
|
|
#include <drm/exynos_drm.h>
|
|
#include <drm/exynos_drm.h>
|
|
@@ -166,10 +165,6 @@ static int exynos_drm_unload(struct drm_device *dev)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static const struct file_operations exynos_drm_gem_fops = {
|
|
|
|
- .mmap = exynos_drm_gem_mmap_buffer,
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
static int exynos_drm_suspend(struct drm_device *dev, pm_message_t state)
|
|
static int exynos_drm_suspend(struct drm_device *dev, pm_message_t state)
|
|
{
|
|
{
|
|
struct drm_connector *connector;
|
|
struct drm_connector *connector;
|
|
@@ -208,7 +203,6 @@ static int exynos_drm_resume(struct drm_device *dev)
|
|
static int exynos_drm_open(struct drm_device *dev, struct drm_file *file)
|
|
static int exynos_drm_open(struct drm_device *dev, struct drm_file *file)
|
|
{
|
|
{
|
|
struct drm_exynos_file_private *file_priv;
|
|
struct drm_exynos_file_private *file_priv;
|
|
- struct file *anon_filp;
|
|
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
|
|
file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
|
|
@@ -221,21 +215,8 @@ static int exynos_drm_open(struct drm_device *dev, struct drm_file *file)
|
|
if (ret)
|
|
if (ret)
|
|
goto err_file_priv_free;
|
|
goto err_file_priv_free;
|
|
|
|
|
|
- anon_filp = anon_inode_getfile("exynos_gem", &exynos_drm_gem_fops,
|
|
|
|
- NULL, 0);
|
|
|
|
- if (IS_ERR(anon_filp)) {
|
|
|
|
- ret = PTR_ERR(anon_filp);
|
|
|
|
- goto err_subdrv_close;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- anon_filp->f_mode = FMODE_READ | FMODE_WRITE;
|
|
|
|
- file_priv->anon_filp = anon_filp;
|
|
|
|
-
|
|
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
-err_subdrv_close:
|
|
|
|
- exynos_drm_subdrv_close(dev, file);
|
|
|
|
-
|
|
|
|
err_file_priv_free:
|
|
err_file_priv_free:
|
|
kfree(file_priv);
|
|
kfree(file_priv);
|
|
file->driver_priv = NULL;
|
|
file->driver_priv = NULL;
|
|
@@ -251,7 +232,6 @@ static void exynos_drm_preclose(struct drm_device *dev,
|
|
static void exynos_drm_postclose(struct drm_device *dev, struct drm_file *file)
|
|
static void exynos_drm_postclose(struct drm_device *dev, struct drm_file *file)
|
|
{
|
|
{
|
|
struct exynos_drm_private *private = dev->dev_private;
|
|
struct exynos_drm_private *private = dev->dev_private;
|
|
- struct drm_exynos_file_private *file_priv;
|
|
|
|
struct drm_pending_vblank_event *v, *vt;
|
|
struct drm_pending_vblank_event *v, *vt;
|
|
struct drm_pending_event *e, *et;
|
|
struct drm_pending_event *e, *et;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
@@ -277,10 +257,6 @@ static void exynos_drm_postclose(struct drm_device *dev, struct drm_file *file)
|
|
}
|
|
}
|
|
spin_unlock_irqrestore(&dev->event_lock, flags);
|
|
spin_unlock_irqrestore(&dev->event_lock, flags);
|
|
|
|
|
|
- file_priv = file->driver_priv;
|
|
|
|
- if (file_priv->anon_filp)
|
|
|
|
- fput(file_priv->anon_filp);
|
|
|
|
-
|
|
|
|
kfree(file->driver_priv);
|
|
kfree(file->driver_priv);
|
|
file->driver_priv = NULL;
|
|
file->driver_priv = NULL;
|
|
}
|
|
}
|
|
@@ -299,8 +275,6 @@ static const struct vm_operations_struct exynos_drm_gem_vm_ops = {
|
|
static const struct drm_ioctl_desc exynos_ioctls[] = {
|
|
static const struct drm_ioctl_desc exynos_ioctls[] = {
|
|
DRM_IOCTL_DEF_DRV(EXYNOS_GEM_CREATE, exynos_drm_gem_create_ioctl,
|
|
DRM_IOCTL_DEF_DRV(EXYNOS_GEM_CREATE, exynos_drm_gem_create_ioctl,
|
|
DRM_UNLOCKED | DRM_AUTH),
|
|
DRM_UNLOCKED | DRM_AUTH),
|
|
- DRM_IOCTL_DEF_DRV(EXYNOS_GEM_MMAP,
|
|
|
|
- exynos_drm_gem_mmap_ioctl, DRM_UNLOCKED | DRM_AUTH),
|
|
|
|
DRM_IOCTL_DEF_DRV(EXYNOS_GEM_GET,
|
|
DRM_IOCTL_DEF_DRV(EXYNOS_GEM_GET,
|
|
exynos_drm_gem_get_ioctl, DRM_UNLOCKED),
|
|
exynos_drm_gem_get_ioctl, DRM_UNLOCKED),
|
|
DRM_IOCTL_DEF_DRV(EXYNOS_VIDI_CONNECTION,
|
|
DRM_IOCTL_DEF_DRV(EXYNOS_VIDI_CONNECTION,
|