*                 devices
  */
 
-static void omap_fb_output_poll_changed(struct drm_device *dev)
-{
-       struct omap_drm_private *priv = dev->dev_private;
-       DBG("dev=%p", dev);
-       if (priv->fbdev)
-               drm_fb_helper_hotplug_event(priv->fbdev);
-}
-
 static void omap_atomic_wait_for_completion(struct drm_device *dev,
                                            struct drm_atomic_state *old_state)
 {
 
 static const struct drm_mode_config_funcs omap_mode_config_funcs = {
        .fb_create = omap_framebuffer_create,
-       .output_poll_changed = omap_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,
 };
        return 0;
 }
 
-/**
- * lastclose - clean up after all DRM clients have exited
- * @dev: DRM device
- *
- * Take care of cleaning up after all DRM clients have exited.  In the
- * mode setting case, we want to restore the kernel's initial mode (just
- * in case the last client left us in a bad state).
- */
-static void dev_lastclose(struct drm_device *dev)
-{
-       struct omap_drm_private *priv = dev->dev_private;
-       int ret;
-
-       DBG("lastclose: dev=%p", dev);
-
-       if (priv->fbdev) {
-               ret = drm_fb_helper_restore_fbdev_mode_unlocked(priv->fbdev);
-               if (ret)
-                       DBG("failed to restore crtc mode");
-       }
-}
-
 static const struct vm_operations_struct omap_gem_vm_ops = {
        .fault = omap_gem_fault,
        .open = drm_gem_vm_open,
        .driver_features = DRIVER_MODESET | DRIVER_GEM  | DRIVER_PRIME |
                DRIVER_ATOMIC | DRIVER_RENDER,
        .open = dev_open,
-       .lastclose = dev_lastclose,
+       .lastclose = drm_fb_helper_lastclose,
 #ifdef CONFIG_DEBUG_FS
        .debugfs_init = omap_debugfs_init,
 #endif