|
@@ -2281,14 +2281,14 @@ static int pci_dev_check_d3cold(struct pci_dev *dev, void *data)
|
|
|
/*
|
|
|
* pci_bridge_d3_update - Update bridge D3 capabilities
|
|
|
* @dev: PCI device which is changed
|
|
|
- * @remove: Is the device being removed
|
|
|
*
|
|
|
* Update upstream bridge PM capabilities accordingly depending on if the
|
|
|
* device PM configuration was changed or the device is being removed. The
|
|
|
* change is also propagated upstream.
|
|
|
*/
|
|
|
-static void pci_bridge_d3_update(struct pci_dev *dev, bool remove)
|
|
|
+void pci_bridge_d3_update(struct pci_dev *dev)
|
|
|
{
|
|
|
+ bool remove = !device_is_registered(&dev->dev);
|
|
|
struct pci_dev *bridge;
|
|
|
bool d3cold_ok = true;
|
|
|
|
|
@@ -2315,35 +2315,10 @@ static void pci_bridge_d3_update(struct pci_dev *dev, bool remove)
|
|
|
if (bridge->bridge_d3 != d3cold_ok) {
|
|
|
bridge->bridge_d3 = d3cold_ok;
|
|
|
/* Propagate change to upstream bridges */
|
|
|
- pci_bridge_d3_update(bridge, false);
|
|
|
+ pci_bridge_d3_update(bridge);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * pci_bridge_d3_device_changed - Update bridge D3 capabilities on change
|
|
|
- * @dev: PCI device that was changed
|
|
|
- *
|
|
|
- * If a device is added or its PM configuration, such as is it allowed to
|
|
|
- * enter D3cold, is changed this function updates upstream bridge PM
|
|
|
- * capabilities accordingly.
|
|
|
- */
|
|
|
-void pci_bridge_d3_device_changed(struct pci_dev *dev)
|
|
|
-{
|
|
|
- pci_bridge_d3_update(dev, false);
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * pci_bridge_d3_device_removed - Update bridge D3 capabilities on remove
|
|
|
- * @dev: PCI device being removed
|
|
|
- *
|
|
|
- * Function updates upstream bridge PM capabilities based on other devices
|
|
|
- * still left on the bus.
|
|
|
- */
|
|
|
-void pci_bridge_d3_device_removed(struct pci_dev *dev)
|
|
|
-{
|
|
|
- pci_bridge_d3_update(dev, true);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* pci_d3cold_enable - Enable D3cold for device
|
|
|
* @dev: PCI device to handle
|
|
@@ -2356,7 +2331,7 @@ void pci_d3cold_enable(struct pci_dev *dev)
|
|
|
{
|
|
|
if (dev->no_d3cold) {
|
|
|
dev->no_d3cold = false;
|
|
|
- pci_bridge_d3_device_changed(dev);
|
|
|
+ pci_bridge_d3_update(dev);
|
|
|
}
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(pci_d3cold_enable);
|
|
@@ -2373,7 +2348,7 @@ void pci_d3cold_disable(struct pci_dev *dev)
|
|
|
{
|
|
|
if (!dev->no_d3cold) {
|
|
|
dev->no_d3cold = true;
|
|
|
- pci_bridge_d3_device_changed(dev);
|
|
|
+ pci_bridge_d3_update(dev);
|
|
|
}
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(pci_d3cold_disable);
|