Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b932ccb5 authored by Dave Airlie's avatar Dave Airlie
Browse files

drm: add support for passing state into the suspend hooks.



fix i915 driver to use state for hibernate save avoidance.

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent da636ad6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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 *);
+1 −1
Original line number Diff line number Diff line
@@ -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;
}
+9 −4
Original line number Diff line number Diff line
@@ -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);

	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;
}