fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / video / i810 / i810_main.c
index a6ca02f..b55a12d 100644 (file)
@@ -1554,15 +1554,17 @@ static struct fb_ops i810fb_ops __devinitdata = {
 /***********************************************************************
  *                         Power Management                            *
  ***********************************************************************/
-static int i810fb_suspend(struct pci_dev *dev, pm_message_t state)
+static int i810fb_suspend(struct pci_dev *dev, pm_message_t mesg)
 {
        struct fb_info *info = pci_get_drvdata(dev);
        struct i810fb_par *par = info->par;
 
-       par->cur_state = state.event;
+       par->cur_state = mesg.event;
 
-       if (state.event == PM_EVENT_FREEZE) {
-               dev->dev.power.power_state = state;
+       switch (mesg.event) {
+       case PM_EVENT_FREEZE:
+       case PM_EVENT_PRETHAW:
+               dev->dev.power.power_state = mesg;
                return 0;
        }
 
@@ -1578,7 +1580,7 @@ static int i810fb_suspend(struct pci_dev *dev, pm_message_t state)
 
        pci_save_state(dev);
        pci_disable_device(dev);
-       pci_set_power_state(dev, pci_choose_state(dev, state));
+       pci_set_power_state(dev, pci_choose_state(dev, mesg));
        release_console_sem();
 
        return 0;
@@ -1600,7 +1602,10 @@ static int i810fb_resume(struct pci_dev *dev)
        acquire_console_sem();
        pci_set_power_state(dev, PCI_D0);
        pci_restore_state(dev);
-       pci_enable_device(dev);
+
+       if (pci_enable_device(dev))
+               goto fail;
+
        pci_set_master(dev);
        agp_bind_memory(par->i810_gtt.i810_fb_memory,
                        par->fb.offset);
@@ -1609,6 +1614,7 @@ static int i810fb_resume(struct pci_dev *dev)
        i810fb_set_par(info);
        fb_set_suspend (info, 0);
        info->fbops->fb_blank(VESA_NO_BLANKING, info);
+fail:
        release_console_sem();
        return 0;
 }