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

Commit c8958177 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

[PATCH] PCI: Add pci shutdown ability



Now pci drivers can know when the system is going down without having to
add a reboot notifier event.

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 4c0619ad
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -318,6 +318,14 @@ static int pci_device_resume(struct device * dev)
	return 0;
}

static void pci_device_shutdown(struct device *dev)
{
	struct pci_dev *pci_dev = to_pci_dev(dev);
	struct pci_driver *drv = pci_dev->driver;

	if (drv && drv->shutdown)
		drv->shutdown(pci_dev);
}

#define kobj_to_pci_driver(obj) container_of(obj, struct device_driver, kobj)
#define attr_to_driver_attribute(obj) container_of(obj, struct driver_attribute, attr)
@@ -385,6 +393,7 @@ int pci_register_driver(struct pci_driver *drv)
	drv->driver.bus = &pci_bus_type;
	drv->driver.probe = pci_device_probe;
	drv->driver.remove = pci_device_remove;
	drv->driver.shutdown = pci_device_shutdown,
	drv->driver.owner = drv->owner;
	drv->driver.kobj.ktype = &pci_driver_kobj_type;
	pci_init_dynids(&drv->dynids);
+1 −0
Original line number Diff line number Diff line
@@ -671,6 +671,7 @@ struct pci_driver {
	int  (*suspend) (struct pci_dev *dev, pm_message_t state);	/* Device suspended */
	int  (*resume) (struct pci_dev *dev);	                /* Device woken up */
	int  (*enable_wake) (struct pci_dev *dev, pci_power_t state, int enable);   /* Enable wake event */
	void (*shutdown) (struct pci_dev *dev);

	struct device_driver	driver;
	struct pci_dynids dynids;