aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/omap_fbdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_fbdev.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_fbdev.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
index 632ebcf2165f..be94480326d7 100644
--- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
+++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
@@ -242,7 +242,7 @@ static struct drm_fb_helper *get_fb(struct fb_info *fbi)
242} 242}
243 243
244/* initialize fbdev helper */ 244/* initialize fbdev helper */
245struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev) 245void omap_fbdev_init(struct drm_device *dev)
246{ 246{
247 struct omap_drm_private *priv = dev->dev_private; 247 struct omap_drm_private *priv = dev->dev_private;
248 struct omap_fbdev *fbdev = NULL; 248 struct omap_fbdev *fbdev = NULL;
@@ -260,10 +260,8 @@ struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
260 drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs); 260 drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs);
261 261
262 ret = drm_fb_helper_init(dev, helper, priv->num_connectors); 262 ret = drm_fb_helper_init(dev, helper, priv->num_connectors);
263 if (ret) { 263 if (ret)
264 dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret);
265 goto fail; 264 goto fail;
266 }
267 265
268 ret = drm_fb_helper_single_add_all_connectors(helper); 266 ret = drm_fb_helper_single_add_all_connectors(helper);
269 if (ret) 267 if (ret)
@@ -275,7 +273,7 @@ struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
275 273
276 priv->fbdev = helper; 274 priv->fbdev = helper;
277 275
278 return helper; 276 return;
279 277
280fini: 278fini:
281 drm_fb_helper_fini(helper); 279 drm_fb_helper_fini(helper);
@@ -283,12 +281,9 @@ fail:
283 kfree(fbdev); 281 kfree(fbdev);
284 282
285 dev_warn(dev->dev, "omap_fbdev_init failed\n"); 283 dev_warn(dev->dev, "omap_fbdev_init failed\n");
286 /* well, limp along without an fbdev.. maybe X11 will work? */
287
288 return NULL;
289} 284}
290 285
291void omap_fbdev_free(struct drm_device *dev) 286void omap_fbdev_fini(struct drm_device *dev)
292{ 287{
293 struct omap_drm_private *priv = dev->dev_private; 288 struct omap_drm_private *priv = dev->dev_private;
294 struct drm_fb_helper *helper = priv->fbdev; 289 struct drm_fb_helper *helper = priv->fbdev;
@@ -296,11 +291,14 @@ void omap_fbdev_free(struct drm_device *dev)
296 291
297 DBG(); 292 DBG();
298 293
294 if (!helper)
295 return;
296
299 drm_fb_helper_unregister_fbi(helper); 297 drm_fb_helper_unregister_fbi(helper);
300 298
301 drm_fb_helper_fini(helper); 299 drm_fb_helper_fini(helper);
302 300
303 fbdev = to_omap_fbdev(priv->fbdev); 301 fbdev = to_omap_fbdev(helper);
304 302
305 /* unpin the GEM object pinned in omap_fbdev_create() */ 303 /* unpin the GEM object pinned in omap_fbdev_create() */
306 if (fbdev->bo) 304 if (fbdev->bo)