{
        intel_fbdev_set_suspend(&container_of(work,
                                              struct drm_i915_private,
-                                             fbdev_suspend_work)->drm,
+                                             display.fbdev.suspend_work)->drm,
                                FBINFO_STATE_RUNNING,
                                true);
 }
                return ret;
        }
 
-       dev_priv->fbdev = ifbdev;
-       INIT_WORK(&dev_priv->fbdev_suspend_work, intel_fbdev_suspend_worker);
+       dev_priv->display.fbdev.fbdev = ifbdev;
+       INIT_WORK(&dev_priv->display.fbdev.suspend_work, intel_fbdev_suspend_worker);
 
        return 0;
 }
 
 void intel_fbdev_initial_config_async(struct drm_device *dev)
 {
-       struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
+       struct intel_fbdev *ifbdev = to_i915(dev)->display.fbdev.fbdev;
 
        if (!ifbdev)
                return;
 
 void intel_fbdev_unregister(struct drm_i915_private *dev_priv)
 {
-       struct intel_fbdev *ifbdev = dev_priv->fbdev;
+       struct intel_fbdev *ifbdev = dev_priv->display.fbdev.fbdev;
 
        if (!ifbdev)
                return;
 
-       cancel_work_sync(&dev_priv->fbdev_suspend_work);
+       cancel_work_sync(&dev_priv->display.fbdev.suspend_work);
        if (!current_is_async())
                intel_fbdev_sync(ifbdev);
 
 
 void intel_fbdev_fini(struct drm_i915_private *dev_priv)
 {
-       struct intel_fbdev *ifbdev = fetch_and_zero(&dev_priv->fbdev);
+       struct intel_fbdev *ifbdev = fetch_and_zero(&dev_priv->display.fbdev.fbdev);
 
        if (!ifbdev)
                return;
  */
 static void intel_fbdev_hpd_set_suspend(struct drm_i915_private *i915, int state)
 {
-       struct intel_fbdev *ifbdev = i915->fbdev;
+       struct intel_fbdev *ifbdev = i915->display.fbdev.fbdev;
        bool send_hpd = false;
 
        mutex_lock(&ifbdev->hpd_lock);
 void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous)
 {
        struct drm_i915_private *dev_priv = to_i915(dev);
-       struct intel_fbdev *ifbdev = dev_priv->fbdev;
+       struct intel_fbdev *ifbdev = dev_priv->display.fbdev.fbdev;
        struct fb_info *info;
 
        if (!ifbdev || !ifbdev->vma)
                 * ourselves, so only flush outstanding work upon suspend!
                 */
                if (state != FBINFO_STATE_RUNNING)
-                       flush_work(&dev_priv->fbdev_suspend_work);
+                       flush_work(&dev_priv->display.fbdev.suspend_work);
 
                console_lock();
        } else {
                        /* Don't block our own workqueue as this can
                         * be run in parallel with other i915.ko tasks.
                         */
-                       schedule_work(&dev_priv->fbdev_suspend_work);
+                       schedule_work(&dev_priv->display.fbdev.suspend_work);
                        return;
                }
        }
 
 void intel_fbdev_output_poll_changed(struct drm_device *dev)
 {
-       struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
+       struct intel_fbdev *ifbdev = to_i915(dev)->display.fbdev.fbdev;
        bool send_hpd;
 
        if (!ifbdev)
 
 void intel_fbdev_restore_mode(struct drm_device *dev)
 {
-       struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
+       struct intel_fbdev *ifbdev = to_i915(dev)->display.fbdev.fbdev;
 
        if (!ifbdev)
                return;