efifb: Check efifb_pci_dev before using it
[linux-2.6-microblaze.git] / drivers / video / fbdev / efifb.c
index b80ba3d..8ea8f07 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/platform_device.h>
 #include <linux/printk.h>
 #include <linux/screen_info.h>
+#include <linux/pm_runtime.h>
 #include <video/vga.h>
 #include <asm/efi.h>
 #include <drm/drm_utils.h> /* For drm_get_panel_orientation_quirk */
@@ -574,6 +575,8 @@ static int efifb_probe(struct platform_device *dev)
                goto err_fb_dealoc;
        }
        fb_info(info, "%s frame buffer device\n", info->fix.id);
+       if (efifb_pci_dev)
+               pm_runtime_get_sync(&efifb_pci_dev->dev);
        return 0;
 
 err_fb_dealoc:
@@ -600,6 +603,8 @@ static int efifb_remove(struct platform_device *pdev)
        unregister_framebuffer(info);
        sysfs_remove_groups(&pdev->dev.kobj, efifb_groups);
        framebuffer_release(info);
+       if (efifb_pci_dev)
+               pm_runtime_put(&efifb_pci_dev->dev);
 
        return 0;
 }