diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_fbdev.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_fbdev.c | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c index 720d16bce7e8..b8e4cdec28c3 100644 --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c | |||
@@ -86,11 +86,11 @@ static struct fb_ops omap_fb_ops = { | |||
86 | /* Note: to properly handle manual update displays, we wrap the | 86 | /* Note: to properly handle manual update displays, we wrap the |
87 | * basic fbdev ops which write to the framebuffer | 87 | * basic fbdev ops which write to the framebuffer |
88 | */ | 88 | */ |
89 | .fb_read = fb_sys_read, | 89 | .fb_read = drm_fb_helper_sys_read, |
90 | .fb_write = fb_sys_write, | 90 | .fb_write = drm_fb_helper_sys_write, |
91 | .fb_fillrect = sys_fillrect, | 91 | .fb_fillrect = drm_fb_helper_sys_fillrect, |
92 | .fb_copyarea = sys_copyarea, | 92 | .fb_copyarea = drm_fb_helper_sys_copyarea, |
93 | .fb_imageblit = sys_imageblit, | 93 | .fb_imageblit = drm_fb_helper_sys_imageblit, |
94 | 94 | ||
95 | .fb_check_var = drm_fb_helper_check_var, | 95 | .fb_check_var = drm_fb_helper_check_var, |
96 | .fb_set_par = drm_fb_helper_set_par, | 96 | .fb_set_par = drm_fb_helper_set_par, |
@@ -179,10 +179,10 @@ static int omap_fbdev_create(struct drm_fb_helper *helper, | |||
179 | 179 | ||
180 | mutex_lock(&dev->struct_mutex); | 180 | mutex_lock(&dev->struct_mutex); |
181 | 181 | ||
182 | fbi = framebuffer_alloc(0, dev->dev); | 182 | fbi = drm_fb_helper_alloc_fbi(helper); |
183 | if (!fbi) { | 183 | if (IS_ERR(fbi)) { |
184 | dev_err(dev->dev, "failed to allocate fb info\n"); | 184 | dev_err(dev->dev, "failed to allocate fb info\n"); |
185 | ret = -ENOMEM; | 185 | ret = PTR_ERR(fbi); |
186 | goto fail_unlock; | 186 | goto fail_unlock; |
187 | } | 187 | } |
188 | 188 | ||
@@ -190,7 +190,6 @@ static int omap_fbdev_create(struct drm_fb_helper *helper, | |||
190 | 190 | ||
191 | fbdev->fb = fb; | 191 | fbdev->fb = fb; |
192 | helper->fb = fb; | 192 | helper->fb = fb; |
193 | helper->fbdev = fbi; | ||
194 | 193 | ||
195 | fbi->par = helper; | 194 | fbi->par = helper; |
196 | fbi->flags = FBINFO_DEFAULT; | 195 | fbi->flags = FBINFO_DEFAULT; |
@@ -198,12 +197,6 @@ static int omap_fbdev_create(struct drm_fb_helper *helper, | |||
198 | 197 | ||
199 | strcpy(fbi->fix.id, MODULE_NAME); | 198 | strcpy(fbi->fix.id, MODULE_NAME); |
200 | 199 | ||
201 | ret = fb_alloc_cmap(&fbi->cmap, 256, 0); | ||
202 | if (ret) { | ||
203 | ret = -ENOMEM; | ||
204 | goto fail_unlock; | ||
205 | } | ||
206 | |||
207 | drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->depth); | 200 | drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->depth); |
208 | drm_fb_helper_fill_var(fbi, helper, sizes->fb_width, sizes->fb_height); | 201 | drm_fb_helper_fill_var(fbi, helper, sizes->fb_width, sizes->fb_height); |
209 | 202 | ||
@@ -236,8 +229,9 @@ fail_unlock: | |||
236 | fail: | 229 | fail: |
237 | 230 | ||
238 | if (ret) { | 231 | if (ret) { |
239 | if (fbi) | 232 | |
240 | framebuffer_release(fbi); | 233 | drm_fb_helper_release_fbi(helper); |
234 | |||
241 | if (fb) { | 235 | if (fb) { |
242 | drm_framebuffer_unregister_private(fb); | 236 | drm_framebuffer_unregister_private(fb); |
243 | drm_framebuffer_remove(fb); | 237 | drm_framebuffer_remove(fb); |
@@ -312,17 +306,11 @@ void omap_fbdev_free(struct drm_device *dev) | |||
312 | struct omap_drm_private *priv = dev->dev_private; | 306 | struct omap_drm_private *priv = dev->dev_private; |
313 | struct drm_fb_helper *helper = priv->fbdev; | 307 | struct drm_fb_helper *helper = priv->fbdev; |
314 | struct omap_fbdev *fbdev; | 308 | struct omap_fbdev *fbdev; |
315 | struct fb_info *fbi; | ||
316 | 309 | ||
317 | DBG(); | 310 | DBG(); |
318 | 311 | ||
319 | fbi = helper->fbdev; | 312 | drm_fb_helper_unregister_fbi(helper); |
320 | 313 | drm_fb_helper_release_fbi(helper); | |
321 | /* only cleanup framebuffer if it is present */ | ||
322 | if (fbi) { | ||
323 | unregister_framebuffer(fbi); | ||
324 | framebuffer_release(fbi); | ||
325 | } | ||
326 | 314 | ||
327 | drm_fb_helper_fini(helper); | 315 | drm_fb_helper_fini(helper); |
328 | 316 | ||