drm: add support for passing state into the suspend hooks.
fix i915 driver to use state for hibernate save avoidance. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
da636ad6a0
commit
b932ccb567
@ -568,7 +568,7 @@ struct drm_driver {
|
||||
void (*postclose) (struct drm_device *, struct drm_file *);
|
||||
void (*lastclose) (struct drm_device *);
|
||||
int (*unload) (struct drm_device *);
|
||||
int (*suspend) (struct drm_device *);
|
||||
int (*suspend) (struct drm_device *, pm_message_t state);
|
||||
int (*resume) (struct drm_device *);
|
||||
int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file *file_priv);
|
||||
void (*dma_ready) (struct drm_device *);
|
||||
|
@ -36,7 +36,7 @@ static int drm_sysfs_suspend(struct device *dev, pm_message_t state)
|
||||
printk(KERN_ERR "%s\n", __FUNCTION__);
|
||||
|
||||
if (drm_dev->driver->suspend)
|
||||
return drm_dev->driver->suspend(drm_dev);
|
||||
return drm_dev->driver->suspend(drm_dev, state);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -238,7 +238,7 @@ static void i915_restore_vga(struct drm_device *dev)
|
||||
|
||||
}
|
||||
|
||||
static int i915_suspend(struct drm_device *dev)
|
||||
static int i915_suspend(struct drm_device *dev, pm_message_t state)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
int i;
|
||||
@ -249,6 +249,9 @@ static int i915_suspend(struct drm_device *dev)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (state.event == PM_EVENT_PRETHAW)
|
||||
return 0;
|
||||
|
||||
pci_save_state(dev->pdev);
|
||||
pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB);
|
||||
|
||||
@ -363,9 +366,11 @@ static int i915_suspend(struct drm_device *dev)
|
||||
|
||||
i915_save_vga(dev);
|
||||
|
||||
/* Shut down the device */
|
||||
pci_disable_device(dev->pdev);
|
||||
pci_set_power_state(dev->pdev, PCI_D3hot);
|
||||
if (state.event == PM_EVENT_SUSPEND) {
|
||||
/* Shut down the device */
|
||||
pci_disable_device(dev->pdev);
|
||||
pci_set_power_state(dev->pdev, PCI_D3hot);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user