drm/armada: Use drm_fb_helper_lastclose() and _poll_changed()
authorNoralf Trønnes <noralf@tronnes.org>
Tue, 5 Dec 2017 18:24:56 +0000 (19:24 +0100)
committerNoralf Trønnes <noralf@tronnes.org>
Fri, 8 Dec 2017 12:03:52 +0000 (13:03 +0100)
This driver can use drm_fb_helper_lastclose() as its .lastclose callback.
It can also use drm_fb_helper_output_poll_changed() as its
.output_poll_changed callback.

Cc: Russell King <linux@armlinux.org.uk>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Russell King <rmk+kernel@armlinux.org.uk>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20171205182504.41923-4-noralf@tronnes.org
drivers/gpu/drm/armada/armada_drm.h
drivers/gpu/drm/armada/armada_drv.c
drivers/gpu/drm/armada/armada_fb.c
drivers/gpu/drm/armada/armada_fbdev.c

index b064879ecdbd1073a379dbb438854094cdd30f80..cc4c557c9f66421737c77bd4dd92e977ab4fc75a 100644 (file)
@@ -84,7 +84,6 @@ void armada_drm_queue_unref_work(struct drm_device *,
 extern const struct drm_mode_config_funcs armada_drm_mode_config_funcs;
 
 int armada_fbdev_init(struct drm_device *);
-void armada_fbdev_lastclose(struct drm_device *);
 void armada_fbdev_fini(struct drm_device *);
 
 int armada_overlay_plane_create(struct drm_device *, unsigned long);
index e857b88a9799427e701ffb8f119a5572e3e3ab72..4b11b6b52f1debe27a974e85d67e1826ba6eeb2b 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/module.h>
 #include <linux/of_graph.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_helper.h>
 #include <drm/drm_of.h>
 #include "armada_crtc.h"
 #include "armada_drm.h"
@@ -54,15 +55,10 @@ static struct drm_ioctl_desc armada_ioctls[] = {
        DRM_IOCTL_DEF_DRV(ARMADA_GEM_PWRITE, armada_gem_pwrite_ioctl, 0),
 };
 
-static void armada_drm_lastclose(struct drm_device *dev)
-{
-       armada_fbdev_lastclose(dev);
-}
-
 DEFINE_DRM_GEM_FOPS(armada_drm_fops);
 
 static struct drm_driver armada_drm_driver = {
-       .lastclose              = armada_drm_lastclose,
+       .lastclose              = drm_fb_helper_lastclose,
        .gem_free_object_unlocked = armada_gem_free_object,
        .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
index a38d5a0892a97d0e2c7debd50621fa10d6f9c704..ac92bce07ecd92aedffe35ea481df054e24175b8 100644 (file)
@@ -154,16 +154,7 @@ static struct drm_framebuffer *armada_fb_create(struct drm_device *dev,
        return ERR_PTR(ret);
 }
 
-static void armada_output_poll_changed(struct drm_device *dev)
-{
-       struct armada_private *priv = dev->dev_private;
-       struct drm_fb_helper *fbh = priv->fbdev;
-
-       if (fbh)
-               drm_fb_helper_hotplug_event(fbh);
-}
-
 const struct drm_mode_config_funcs armada_drm_mode_config_funcs = {
        .fb_create              = armada_fb_create,
-       .output_poll_changed    = armada_output_poll_changed,
+       .output_poll_changed    = drm_fb_helper_output_poll_changed,
 };
index a2ce83f8480009e5bdc29988da10fdff614bf6dd..2a59db0994b2e704d92edb5b0ca1b03d1888737b 100644 (file)
@@ -159,14 +159,6 @@ int armada_fbdev_init(struct drm_device *dev)
        return ret;
 }
 
-void armada_fbdev_lastclose(struct drm_device *dev)
-{
-       struct armada_private *priv = dev->dev_private;
-
-       if (priv->fbdev)
-               drm_fb_helper_restore_fbdev_mode_unlocked(priv->fbdev);
-}
-
 void armada_fbdev_fini(struct drm_device *dev)
 {
        struct armada_private *priv = dev->dev_private;