#include <linux/vgaarb.h>
 
 #include <drm/drm_cache.h>
+#include <drm/drm_client_event.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_device.h>
 #include <drm/drm_file.h>
  * Called at driver suspend.
  */
 int radeon_suspend_kms(struct drm_device *dev, bool suspend,
-                      bool fbcon, bool freeze)
+                      bool notify_clients, bool freeze)
 {
        struct radeon_device *rdev;
        struct pci_dev *pdev;
                pci_set_power_state(pdev, PCI_D3hot);
        }
 
-       if (fbcon) {
+       if (notify_clients) {
                console_lock();
-               radeon_fbdev_set_suspend(rdev, 1);
+               drm_client_dev_suspend(dev, true);
                console_unlock();
        }
        return 0;
  * Returns 0 for success or an error on failure.
  * Called at driver resume.
  */
-int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
+int radeon_resume_kms(struct drm_device *dev, bool resume, bool notify_clients)
 {
        struct drm_connector *connector;
        struct radeon_device *rdev = dev->dev_private;
        if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
                return 0;
 
-       if (fbcon) {
+       if (notify_clients) {
                console_lock();
        }
        if (resume) {
                pci_set_power_state(pdev, PCI_D0);
                pci_restore_state(pdev);
                if (pci_enable_device(pdev)) {
-                       if (fbcon)
+                       if (notify_clients)
                                console_unlock();
                        return -1;
                }
        /* reset hpd state */
        radeon_hpd_init(rdev);
        /* blat the mode back in */
-       if (fbcon) {
+       if (notify_clients) {
                drm_helper_resume_force_mode(dev);
                /* turn on display hw */
                drm_modeset_lock_all(dev);
        if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled)
                radeon_pm_compute_clocks(rdev);
 
-       if (fbcon) {
-               radeon_fbdev_set_suspend(rdev, 0);
+       if (notify_clients) {
+               drm_client_dev_resume(dev, true);
                console_unlock();
        }
 
 
        return ret;
 }
 
-void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state)
-{
-       if (rdev_to_drm(rdev)->fb_helper)
-               drm_fb_helper_set_suspend(rdev_to_drm(rdev)->fb_helper, state);
-}
-
 bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj)
 {
        struct drm_fb_helper *fb_helper = rdev_to_drm(rdev)->fb_helper;
 
                                    struct drm_fb_helper_surface_size *sizes);
 #define RADEON_FBDEV_DRIVER_OPS \
        .fbdev_probe = radeon_fbdev_driver_fbdev_probe
-void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state);
 bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj);
 #else
 #define RADEON_FBDEV_DRIVER_OPS \
        .fbdev_probe = NULL
-static inline void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state)
-{ }
 static inline bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj)
 {
        return false;