]> Git Repo - linux.git/commitdiff
drm/omap: cleanup fbdev init/free
authorTomi Valkeinen <[email protected]>
Fri, 9 Feb 2018 07:36:23 +0000 (09:36 +0200)
committerTomi Valkeinen <[email protected]>
Thu, 1 Mar 2018 07:18:18 +0000 (09:18 +0200)
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 <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
drivers/gpu/drm/omapdrm/omap_drv.c
drivers/gpu/drm/omapdrm/omap_fbdev.c
drivers/gpu/drm/omapdrm/omap_fbdev.h

index 65a567dcf3ab2408f2fd28d758e01ae0fca5f1e0..4f48b908bdc668b993abd40d59f49e9ec7d8b15f 100644 (file)
@@ -570,7 +570,7 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
        for (i = 0; i < priv->num_crtcs; i++)
                drm_crtc_vblank_off(priv->crtcs[i]);
 
-       priv->fbdev = omap_fbdev_init(ddev);
+       omap_fbdev_init(ddev);
 
        drm_kms_helper_poll_init(ddev);
        omap_modeset_enable_external_hpd();
@@ -588,8 +588,8 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev)
 err_cleanup_helpers:
        omap_modeset_disable_external_hpd();
        drm_kms_helper_poll_fini(ddev);
-       if (priv->fbdev)
-               omap_fbdev_free(ddev);
+
+       omap_fbdev_fini(ddev);
 err_cleanup_modeset:
        drm_mode_config_cleanup(ddev);
        omap_drm_irq_uninstall(ddev);
@@ -615,8 +615,7 @@ static void omapdrm_cleanup(struct omap_drm_private *priv)
        omap_modeset_disable_external_hpd();
        drm_kms_helper_poll_fini(ddev);
 
-       if (priv->fbdev)
-               omap_fbdev_free(ddev);
+       omap_fbdev_fini(ddev);
 
        drm_atomic_helper_shutdown(ddev);
 
index 632ebcf2165f5363fc911c84122637e3ada0aedc..be94480326d7f197efd34cecbc1d831a286f6857 100644 (file)
@@ -242,7 +242,7 @@ static struct drm_fb_helper *get_fb(struct fb_info *fbi)
 }
 
 /* initialize fbdev helper */
-struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
+void omap_fbdev_init(struct drm_device *dev)
 {
        struct omap_drm_private *priv = dev->dev_private;
        struct omap_fbdev *fbdev = NULL;
@@ -260,10 +260,8 @@ struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
        drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs);
 
        ret = drm_fb_helper_init(dev, helper, priv->num_connectors);
-       if (ret) {
-               dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret);
+       if (ret)
                goto fail;
-       }
 
        ret = drm_fb_helper_single_add_all_connectors(helper);
        if (ret)
@@ -275,7 +273,7 @@ struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
 
        priv->fbdev = helper;
 
-       return helper;
+       return;
 
 fini:
        drm_fb_helper_fini(helper);
@@ -283,12 +281,9 @@ fail:
        kfree(fbdev);
 
        dev_warn(dev->dev, "omap_fbdev_init failed\n");
-       /* well, limp along without an fbdev.. maybe X11 will work? */
-
-       return NULL;
 }
 
-void omap_fbdev_free(struct drm_device *dev)
+void omap_fbdev_fini(struct drm_device *dev)
 {
        struct omap_drm_private *priv = dev->dev_private;
        struct drm_fb_helper *helper = priv->fbdev;
@@ -296,11 +291,14 @@ void omap_fbdev_free(struct drm_device *dev)
 
        DBG();
 
+       if (!helper)
+               return;
+
        drm_fb_helper_unregister_fbi(helper);
 
        drm_fb_helper_fini(helper);
 
-       fbdev = to_omap_fbdev(priv->fbdev);
+       fbdev = to_omap_fbdev(helper);
 
        /* unpin the GEM object pinned in omap_fbdev_create() */
        if (fbdev->bo)
index 1f5ba0996a1aa7645b0bdbca006566451c52974f..7dfd843f73f19fae0f65540de9ee0550eed8db30 100644 (file)
@@ -24,14 +24,13 @@ struct drm_device;
 struct drm_fb_helper;
 
 #ifdef CONFIG_DRM_FBDEV_EMULATION
-struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev);
-void omap_fbdev_free(struct drm_device *dev);
+void omap_fbdev_init(struct drm_device *dev);
+void omap_fbdev_fini(struct drm_device *dev);
 #else
-static inline struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
+static inline void omap_fbdev_init(struct drm_device *dev)
 {
-       return NULL;
 }
-static inline void omap_fbdev_free(struct drm_device *dev)
+static inline void omap_fbdev_fini(struct drm_device *dev)
 {
 }
 #endif
This page took 0.066885 seconds and 4 git commands to generate.