Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on
the fact that drm_device holds a pointer to the drm_fb_helper structure.
This means that the driver doesn't have to keep track of that.
Also use the drm_fb_helper functions directly.

Cc: Neil Armstrong <narmstr...@baylibre.com>
Signed-off-by: Noralf Trønnes <nor...@tronnes.org>
---
 drivers/gpu/drm/meson/meson_drv.c | 20 +++++---------------
 drivers/gpu/drm/meson/meson_drv.h |  1 -
 2 files changed, 5 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/meson/meson_drv.c 
b/drivers/gpu/drm/meson/meson_drv.c
index 3b804fdaf7a0..35e6ad5b565f 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -35,6 +35,7 @@
 #include <drm/drm_plane_helper.h>
 #include <drm/drm_gem_cma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
+#include <drm/drm_fb_helper.h>
 #include <drm/drm_fb_cma_helper.h>
 #include <drm/drm_rect.h>
 #include <drm/drm_fb_helper.h>
@@ -68,15 +69,8 @@
  * - Powering Up HDMI controller and PHY
  */
 
-static void meson_fb_output_poll_changed(struct drm_device *dev)
-{
-       struct meson_drm *priv = dev->dev_private;
-
-       drm_fbdev_cma_hotplug_event(priv->fbdev);
-}
-
 static const struct drm_mode_config_funcs meson_mode_config_funcs = {
-       .output_poll_changed = meson_fb_output_poll_changed,
+       .output_poll_changed = drm_fb_helper_output_poll_changed,
        .atomic_check        = drm_atomic_helper_check,
        .atomic_commit       = drm_atomic_helper_commit,
        .fb_create           = drm_gem_fb_create,
@@ -254,12 +248,9 @@ static int meson_drv_bind_master(struct device *dev, bool 
has_components)
 
        drm_mode_config_reset(drm);
 
-       priv->fbdev = drm_fbdev_cma_init(drm, 32,
-                                        drm->mode_config.num_connector);
-       if (IS_ERR(priv->fbdev)) {
-               ret = PTR_ERR(priv->fbdev);
+       ret = drm_fb_cma_fbdev_init(drm, 32, 0);
+       if (ret)
                goto free_drm;
-       }
 
        drm_kms_helper_poll_init(drm);
 
@@ -285,11 +276,10 @@ static int meson_drv_bind(struct device *dev)
 static void meson_drv_unbind(struct device *dev)
 {
        struct drm_device *drm = dev_get_drvdata(dev);
-       struct meson_drm *priv = drm->dev_private;
 
        drm_dev_unregister(drm);
        drm_kms_helper_poll_fini(drm);
-       drm_fbdev_cma_fini(priv->fbdev);
+       drm_fb_cma_fbdev_fini(drm);
        drm_mode_config_cleanup(drm);
        drm_dev_unref(drm);
 
diff --git a/drivers/gpu/drm/meson/meson_drv.h 
b/drivers/gpu/drm/meson/meson_drv.h
index 5e8b392b9d1f..746bbdbbdec3 100644
--- a/drivers/gpu/drm/meson/meson_drv.h
+++ b/drivers/gpu/drm/meson/meson_drv.h
@@ -33,7 +33,6 @@ struct meson_drm {
 
        struct drm_device *drm;
        struct drm_crtc *crtc;
-       struct drm_fbdev_cma *fbdev;
        struct drm_plane *primary_plane;
 
        /* Components Data */
-- 
2.14.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to