diff options
-rw-r--r-- | drivers/gpu/drm/tegra/drm.h | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/tegra/fb.c | 34 |
2 files changed, 15 insertions, 25 deletions
diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h index 7f9810f026e8..f47a60592334 100644 --- a/drivers/gpu/drm/tegra/drm.h +++ b/drivers/gpu/drm/tegra/drm.h | |||
@@ -29,14 +29,10 @@ | |||
29 | 29 | ||
30 | struct reset_control; | 30 | struct reset_control; |
31 | 31 | ||
32 | struct tegra_fb { | ||
33 | struct drm_framebuffer base; | ||
34 | }; | ||
35 | |||
36 | #ifdef CONFIG_DRM_FBDEV_EMULATION | 32 | #ifdef CONFIG_DRM_FBDEV_EMULATION |
37 | struct tegra_fbdev { | 33 | struct tegra_fbdev { |
38 | struct drm_fb_helper base; | 34 | struct drm_fb_helper base; |
39 | struct tegra_fb *fb; | 35 | struct drm_framebuffer *fb; |
40 | }; | 36 | }; |
41 | #endif | 37 | #endif |
42 | 38 | ||
diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index 5bc8f968284c..57da9683a713 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c | |||
@@ -16,11 +16,6 @@ | |||
16 | #include "gem.h" | 16 | #include "gem.h" |
17 | #include <drm/drm_gem_framebuffer_helper.h> | 17 | #include <drm/drm_gem_framebuffer_helper.h> |
18 | 18 | ||
19 | static inline struct tegra_fb *to_tegra_fb(struct drm_framebuffer *fb) | ||
20 | { | ||
21 | return container_of(fb, struct tegra_fb, base); | ||
22 | } | ||
23 | |||
24 | #ifdef CONFIG_DRM_FBDEV_EMULATION | 19 | #ifdef CONFIG_DRM_FBDEV_EMULATION |
25 | static inline struct tegra_fbdev *to_tegra_fbdev(struct drm_fb_helper *helper) | 20 | static inline struct tegra_fbdev *to_tegra_fbdev(struct drm_fb_helper *helper) |
26 | { | 21 | { |
@@ -99,7 +94,6 @@ int tegra_fb_get_tiling(struct drm_framebuffer *framebuffer, | |||
99 | 94 | ||
100 | static void tegra_fb_destroy(struct drm_framebuffer *framebuffer) | 95 | static void tegra_fb_destroy(struct drm_framebuffer *framebuffer) |
101 | { | 96 | { |
102 | struct tegra_fb *fb = to_tegra_fb(framebuffer); | ||
103 | unsigned int i; | 97 | unsigned int i; |
104 | 98 | ||
105 | for (i = 0; i < framebuffer->format->num_planes; i++) { | 99 | for (i = 0; i < framebuffer->format->num_planes; i++) { |
@@ -114,7 +108,7 @@ static void tegra_fb_destroy(struct drm_framebuffer *framebuffer) | |||
114 | } | 108 | } |
115 | 109 | ||
116 | drm_framebuffer_cleanup(framebuffer); | 110 | drm_framebuffer_cleanup(framebuffer); |
117 | kfree(fb); | 111 | kfree(framebuffer); |
118 | } | 112 | } |
119 | 113 | ||
120 | static const struct drm_framebuffer_funcs tegra_fb_funcs = { | 114 | static const struct drm_framebuffer_funcs tegra_fb_funcs = { |
@@ -122,12 +116,12 @@ static const struct drm_framebuffer_funcs tegra_fb_funcs = { | |||
122 | .create_handle = drm_gem_fb_create_handle, | 116 | .create_handle = drm_gem_fb_create_handle, |
123 | }; | 117 | }; |
124 | 118 | ||
125 | static struct tegra_fb *tegra_fb_alloc(struct drm_device *drm, | 119 | static struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm, |
126 | const struct drm_mode_fb_cmd2 *mode_cmd, | 120 | const struct drm_mode_fb_cmd2 *mode_cmd, |
127 | struct tegra_bo **planes, | 121 | struct tegra_bo **planes, |
128 | unsigned int num_planes) | 122 | unsigned int num_planes) |
129 | { | 123 | { |
130 | struct tegra_fb *fb; | 124 | struct drm_framebuffer *fb; |
131 | unsigned int i; | 125 | unsigned int i; |
132 | int err; | 126 | int err; |
133 | 127 | ||
@@ -135,12 +129,12 @@ static struct tegra_fb *tegra_fb_alloc(struct drm_device *drm, | |||
135 | if (!fb) | 129 | if (!fb) |
136 | return ERR_PTR(-ENOMEM); | 130 | return ERR_PTR(-ENOMEM); |
137 | 131 | ||
138 | drm_helper_mode_fill_fb_struct(drm, &fb->base, mode_cmd); | 132 | drm_helper_mode_fill_fb_struct(drm, fb, mode_cmd); |
139 | 133 | ||
140 | for (i = 0; i < fb->base.format->num_planes; i++) | 134 | for (i = 0; i < fb->format->num_planes; i++) |
141 | fb->base.obj[i] = &planes[i]->gem; | 135 | fb->obj[i] = &planes[i]->gem; |
142 | 136 | ||
143 | err = drm_framebuffer_init(drm, &fb->base, &tegra_fb_funcs); | 137 | err = drm_framebuffer_init(drm, fb, &tegra_fb_funcs); |
144 | if (err < 0) { | 138 | if (err < 0) { |
145 | dev_err(drm->dev, "failed to initialize framebuffer: %d\n", | 139 | dev_err(drm->dev, "failed to initialize framebuffer: %d\n", |
146 | err); | 140 | err); |
@@ -158,7 +152,7 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, | |||
158 | unsigned int hsub, vsub, i; | 152 | unsigned int hsub, vsub, i; |
159 | struct tegra_bo *planes[4]; | 153 | struct tegra_bo *planes[4]; |
160 | struct drm_gem_object *gem; | 154 | struct drm_gem_object *gem; |
161 | struct tegra_fb *fb; | 155 | struct drm_framebuffer *fb; |
162 | int err; | 156 | int err; |
163 | 157 | ||
164 | hsub = drm_format_horz_chroma_subsampling(cmd->pixel_format); | 158 | hsub = drm_format_horz_chroma_subsampling(cmd->pixel_format); |
@@ -194,7 +188,7 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, | |||
194 | goto unreference; | 188 | goto unreference; |
195 | } | 189 | } |
196 | 190 | ||
197 | return &fb->base; | 191 | return fb; |
198 | 192 | ||
199 | unreference: | 193 | unreference: |
200 | while (i--) | 194 | while (i--) |
@@ -275,7 +269,7 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper, | |||
275 | return PTR_ERR(fbdev->fb); | 269 | return PTR_ERR(fbdev->fb); |
276 | } | 270 | } |
277 | 271 | ||
278 | fb = &fbdev->fb->base; | 272 | fb = fbdev->fb; |
279 | helper->fb = fb; | 273 | helper->fb = fb; |
280 | helper->fbdev = info; | 274 | helper->fbdev = info; |
281 | 275 | ||
@@ -376,7 +370,7 @@ static void tegra_fbdev_exit(struct tegra_fbdev *fbdev) | |||
376 | drm_fb_helper_unregister_fbi(&fbdev->base); | 370 | drm_fb_helper_unregister_fbi(&fbdev->base); |
377 | 371 | ||
378 | if (fbdev->fb) | 372 | if (fbdev->fb) |
379 | drm_framebuffer_remove(&fbdev->fb->base); | 373 | drm_framebuffer_remove(fbdev->fb); |
380 | 374 | ||
381 | drm_fb_helper_fini(&fbdev->base); | 375 | drm_fb_helper_fini(&fbdev->base); |
382 | tegra_fbdev_free(fbdev); | 376 | tegra_fbdev_free(fbdev); |