diff options
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/mediatek/mtk_drm_fb.c | 40 |
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 | */ | ||
32 | struct 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 | |||
38 | static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = { | 26 | static 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 | ||
43 | static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev, | 31 | static 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 | ||
134 | unreference: | 122 | unreference: |
135 | drm_gem_object_put_unlocked(gem); | 123 | drm_gem_object_put_unlocked(gem); |