summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/nouveau_display.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2020-02-06 11:19:41 +0100
committerBen Skeggs <bskeggs@redhat.com>2020-05-22 11:11:14 +1000
commit183405879255919c879edb37db70becfac9a4033 (patch)
treeb1b9dc14a885253078b00810d6b8097fc7531195 /drivers/gpu/drm/nouveau/nouveau_display.c
parent84c862b572f88dd41dfd06df63454fb1010fee05 (diff)
drm/nouveau/kms: Remove field nvbo from struct nouveau_framebuffer
The buffer object stored in nvbo is also available GEM object in obj[0] of struct drm_framebuffer. Therefore remove nvbo in favor obj[0] and replace all references accordingly. This may require an additional cast. With this change we can already replace nouveau_user_framebuffer_destroy() and nouveau_user_framebuffer_create_handle() with generic GEM helpers. Calls to nouveau_framebuffer_new() receive a GEM object. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_display.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.c35
1 files changed, 6 insertions, 29 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index 700817dc4fa0..408b92243629 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -31,6 +31,7 @@
#include <drm/drm_crtc_helper.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_fourcc.h>
+#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_vblank.h>
@@ -179,37 +180,15 @@ nouveau_display_vblank_init(struct drm_device *dev)
return 0;
}
-static void
-nouveau_user_framebuffer_destroy(struct drm_framebuffer *drm_fb)
-{
- struct nouveau_framebuffer *fb = nouveau_framebuffer(drm_fb);
-
- if (fb->nvbo)
- drm_gem_object_put_unlocked(&fb->nvbo->bo.base);
-
- drm_framebuffer_cleanup(drm_fb);
- kfree(fb);
-}
-
-static int
-nouveau_user_framebuffer_create_handle(struct drm_framebuffer *drm_fb,
- struct drm_file *file_priv,
- unsigned int *handle)
-{
- struct nouveau_framebuffer *fb = nouveau_framebuffer(drm_fb);
-
- return drm_gem_handle_create(file_priv, &fb->nvbo->bo.base, handle);
-}
-
static const struct drm_framebuffer_funcs nouveau_framebuffer_funcs = {
- .destroy = nouveau_user_framebuffer_destroy,
- .create_handle = nouveau_user_framebuffer_create_handle,
+ .destroy = drm_gem_fb_destroy,
+ .create_handle = drm_gem_fb_create_handle,
};
int
nouveau_framebuffer_new(struct drm_device *dev,
const struct drm_mode_fb_cmd2 *mode_cmd,
- struct nouveau_bo *nvbo,
+ struct drm_gem_object *gem,
struct nouveau_framebuffer **pfb)
{
struct nouveau_drm *drm = nouveau_drm(dev);
@@ -240,7 +219,7 @@ nouveau_framebuffer_new(struct drm_device *dev,
return -ENOMEM;
drm_helper_mode_fill_fb_struct(dev, &fb->base, mode_cmd);
- fb->nvbo = nvbo;
+ fb->base.obj[0] = gem;
ret = drm_framebuffer_init(dev, &fb->base, &nouveau_framebuffer_funcs);
if (ret)
@@ -254,16 +233,14 @@ nouveau_user_framebuffer_create(struct drm_device *dev,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
struct nouveau_framebuffer *fb;
- struct nouveau_bo *nvbo;
struct drm_gem_object *gem;
int ret;
gem = drm_gem_object_lookup(file_priv, mode_cmd->handles[0]);
if (!gem)
return ERR_PTR(-ENOENT);
- nvbo = nouveau_gem_object(gem);
- ret = nouveau_framebuffer_new(dev, mode_cmd, nvbo, &fb);
+ ret = nouveau_framebuffer_new(dev, mode_cmd, gem, &fb);
if (ret == 0)
return &fb->base;