aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/omap_fbdev.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2018-02-09 02:36:23 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2018-03-01 02:18:18 -0500
commitefd1f06be004a6a384f0482ef76c12bc202e1b8e (patch)
tree9c63f8ac2d2bd50f16def64569e48b47333c28c8 /drivers/gpu/drm/omapdrm/omap_fbdev.c
parente6204a58b9e9ad01ab9c6d4b8b2b8b9c4e38bbba (diff)
drm/omap: cleanup fbdev init/free
omap_fbdev_init() and omap_fbdev_free() use priv->fbdev directly. However, omap_fbdev_init() returns the fbdev, and omap_drv.c also assigns the return value to priv->fbdev. This is slightly confusing. Clean this up by removing the omap_fbdev_init() return value, as we don't care whether fbdev init succeeded or not. Also change omap_drv.c to call omap_fbdev_free() always, and omap_fbdev_free() does the check if fbdev was initialized. While at it, rename omap_fbdev_free() to omap_fbdev_fini() to better match the "init" counterpart. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
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)