aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/mediatek/mtk_drm_fb.c40
1 files changed, 14 insertions, 26 deletions
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.c b/drivers/gpu/drm/mediatek/mtk_drm_fb.c
index f130e37123b5..be5f6f1daf55 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_fb.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.c
@@ -23,49 +23,37 @@
23#include "mtk_drm_fb.h" 23#include "mtk_drm_fb.h"
24#include "mtk_drm_gem.h" 24#include "mtk_drm_gem.h"
25 25
26/*
27 * mtk specific framebuffer structure.
28 *
29 * @fb: drm framebuffer object.
30 * @gem_obj: array of gem objects.
31 */
32struct mtk_drm_fb {
33 struct drm_framebuffer base;
34};
35
36#define to_mtk_fb(x) container_of(x, struct mtk_drm_fb, base)
37
38static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = { 26static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = {
39 .create_handle = drm_gem_fb_create_handle, 27 .create_handle = drm_gem_fb_create_handle,
40 .destroy = drm_gem_fb_destroy, 28 .destroy = drm_gem_fb_destroy,
41}; 29};
42 30
43static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev, 31static struct drm_framebuffer *mtk_drm_framebuffer_init(struct drm_device *dev,
44 const struct drm_mode_fb_cmd2 *mode, 32 const struct drm_mode_fb_cmd2 *mode,
45 struct drm_gem_object *obj) 33 struct drm_gem_object *obj)
46{ 34{
47 struct mtk_drm_fb *mtk_fb; 35 struct drm_framebuffer *fb;
48 int ret; 36 int ret;
49 37
50 if (drm_format_num_planes(mode->pixel_format) != 1) 38 if (drm_format_num_planes(mode->pixel_format) != 1)
51 return ERR_PTR(-EINVAL); 39 return ERR_PTR(-EINVAL);
52 40
53 mtk_fb = kzalloc(sizeof(*mtk_fb), GFP_KERNEL); 41 fb = kzalloc(sizeof(*fb), GFP_KERNEL);
54 if (!mtk_fb) 42 if (!fb)
55 return ERR_PTR(-ENOMEM); 43 return ERR_PTR(-ENOMEM);
56 44
57 drm_helper_mode_fill_fb_struct(dev, &mtk_fb->base, mode); 45 drm_helper_mode_fill_fb_struct(dev, fb, mode);
58 46
59 mtk_fb->base.obj[0] = obj; 47 fb->obj[0] = obj;
60 48
61 ret = drm_framebuffer_init(dev, &mtk_fb->base, &mtk_drm_fb_funcs); 49 ret = drm_framebuffer_init(dev, fb, &mtk_drm_fb_funcs);
62 if (ret) { 50 if (ret) {
63 DRM_ERROR("failed to initialize framebuffer\n"); 51 DRM_ERROR("failed to initialize framebuffer\n");
64 kfree(mtk_fb); 52 kfree(fb);
65 return ERR_PTR(ret); 53 return ERR_PTR(ret);
66 } 54 }
67 55
68 return mtk_fb; 56 return fb;
69} 57}
70 58
71/* 59/*
@@ -100,7 +88,7 @@ struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev,
100 struct drm_file *file, 88 struct drm_file *file,
101 const struct drm_mode_fb_cmd2 *cmd) 89 const struct drm_mode_fb_cmd2 *cmd)
102{ 90{
103 struct mtk_drm_fb *mtk_fb; 91 struct drm_framebuffer *fb;
104 struct drm_gem_object *gem; 92 struct drm_gem_object *gem;
105 unsigned int width = cmd->width; 93 unsigned int width = cmd->width;
106 unsigned int height = cmd->height; 94 unsigned int height = cmd->height;
@@ -123,13 +111,13 @@ struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev,
123 goto unreference; 111 goto unreference;
124 } 112 }
125 113
126 mtk_fb = mtk_drm_framebuffer_init(dev, cmd, gem); 114 fb = mtk_drm_framebuffer_init(dev, cmd, gem);
127 if (IS_ERR(mtk_fb)) { 115 if (IS_ERR(fb)) {
128 ret = PTR_ERR(mtk_fb); 116 ret = PTR_ERR(fb);
129 goto unreference; 117 goto unreference;
130 } 118 }
131 119
132 return &mtk_fb->base; 120 return fb;
133 121
134unreference: 122unreference:
135 drm_gem_object_put_unlocked(gem); 123 drm_gem_object_put_unlocked(gem);