if (IS_ERR(vbox))
                return PTR_ERR(vbox);
 
-       vbox->ddev.pdev = pdev;
        pci_set_drvdata(pdev, vbox);
        mutex_init(&vbox->hw_mutex);
 
 static int vbox_pm_suspend(struct device *dev)
 {
        struct vbox_private *vbox = dev_get_drvdata(dev);
+       struct pci_dev *pdev = to_pci_dev(dev);
        int error;
 
        error = drm_mode_config_helper_suspend(&vbox->ddev);
        if (error)
                return error;
 
-       pci_save_state(vbox->ddev.pdev);
-       pci_disable_device(vbox->ddev.pdev);
-       pci_set_power_state(vbox->ddev.pdev, PCI_D3hot);
+       pci_save_state(pdev);
+       pci_disable_device(pdev);
+       pci_set_power_state(pdev, PCI_D3hot);
 
        return 0;
 }
 static int vbox_pm_resume(struct device *dev)
 {
        struct vbox_private *vbox = dev_get_drvdata(dev);
+       struct pci_dev *pdev = to_pci_dev(dev);
 
-       if (pci_enable_device(vbox->ddev.pdev))
+       if (pci_enable_device(pdev))
                return -EIO;
 
        return drm_mode_config_helper_resume(&vbox->ddev);
 
 
 int vbox_irq_init(struct vbox_private *vbox)
 {
+       struct pci_dev *pdev = to_pci_dev(vbox->ddev.dev);
+
        INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker);
        vbox_update_mode_hints(vbox);
 
-       return drm_irq_install(&vbox->ddev, vbox->ddev.pdev->irq);
+       return drm_irq_install(&vbox->ddev, pdev->irq);
 }
 
 void vbox_irq_fini(struct vbox_private *vbox)
 
  *          Hans de Goede <hdegoede@redhat.com>
  */
 
+#include <linux/pci.h>
 #include <linux/vbox_err.h>
+
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_damage_helper.h>
 
 static int vbox_accel_init(struct vbox_private *vbox)
 {
+       struct pci_dev *pdev = to_pci_dev(vbox->ddev.dev);
        struct vbva_buffer *vbva;
        unsigned int i;
 
        /* Take a command buffer for each screen from the end of usable VRAM. */
        vbox->available_vram_size -= vbox->num_crtcs * VBVA_MIN_BUFFER_SIZE;
 
-       vbox->vbva_buffers = pci_iomap_range(vbox->ddev.pdev, 0,
+       vbox->vbva_buffers = pci_iomap_range(pdev, 0,
                                             vbox->available_vram_size,
                                             vbox->num_crtcs *
                                             VBVA_MIN_BUFFER_SIZE);
 
 int vbox_hw_init(struct vbox_private *vbox)
 {
+       struct pci_dev *pdev = to_pci_dev(vbox->ddev.dev);
        int ret = -ENOMEM;
 
        vbox->full_vram_size = inl(VBE_DISPI_IOPORT_DATA);
 
        /* Map guest-heap at end of vram */
        vbox->guest_heap =
-           pci_iomap_range(vbox->ddev.pdev, 0, GUEST_HEAP_OFFSET(vbox),
+           pci_iomap_range(pdev, 0, GUEST_HEAP_OFFSET(vbox),
                            GUEST_HEAP_SIZE);
        if (!vbox->guest_heap)
                return -ENOMEM;
 
        struct drm_vram_mm *vmm;
        int ret;
        struct drm_device *dev = &vbox->ddev;
+       struct pci_dev *pdev = to_pci_dev(dev->dev);
 
-       vmm = drm_vram_helper_alloc_mm(dev, pci_resource_start(dev->pdev, 0),
+       vmm = drm_vram_helper_alloc_mm(dev, pci_resource_start(pdev, 0),
                                       vbox->available_vram_size);
        if (IS_ERR(vmm)) {
                ret = PTR_ERR(vmm);
                return ret;
        }
 
-       vbox->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0),
-                                        pci_resource_len(dev->pdev, 0));
+       vbox->fb_mtrr = arch_phys_wc_add(pci_resource_start(pdev, 0),
+                                        pci_resource_len(pdev, 0));
        return 0;
 }