|
@@ -1489,7 +1489,15 @@ static int intel_runtime_suspend(struct device *device)
|
|
|
* FIXME: We really should find a document that references the arguments
|
|
* FIXME: We really should find a document that references the arguments
|
|
|
* used below!
|
|
* used below!
|
|
|
*/
|
|
*/
|
|
|
- if (IS_HASWELL(dev)) {
|
|
|
|
|
|
|
+ if (IS_BROADWELL(dev)) {
|
|
|
|
|
+ /*
|
|
|
|
|
+ * On Broadwell, if we use PCI_D1 the PCH DDI ports will stop
|
|
|
|
|
+ * being detected, and the call we do at intel_runtime_resume()
|
|
|
|
|
+ * won't be able to restore them. Since PCI_D3hot matches the
|
|
|
|
|
+ * actual specification and appears to be working, use it.
|
|
|
|
|
+ */
|
|
|
|
|
+ intel_opregion_notify_adapter(dev, PCI_D3hot);
|
|
|
|
|
+ } else {
|
|
|
/*
|
|
/*
|
|
|
* current versions of firmware which depend on this opregion
|
|
* current versions of firmware which depend on this opregion
|
|
|
* notification have repurposed the D1 definition to mean
|
|
* notification have repurposed the D1 definition to mean
|
|
@@ -1498,16 +1506,6 @@ static int intel_runtime_suspend(struct device *device)
|
|
|
* the suspend path.
|
|
* the suspend path.
|
|
|
*/
|
|
*/
|
|
|
intel_opregion_notify_adapter(dev, PCI_D1);
|
|
intel_opregion_notify_adapter(dev, PCI_D1);
|
|
|
- } else {
|
|
|
|
|
- /*
|
|
|
|
|
- * On Broadwell, if we use PCI_D1 the PCH DDI ports will stop
|
|
|
|
|
- * being detected, and the call we do at intel_runtime_resume()
|
|
|
|
|
- * won't be able to restore them. Since PCI_D3hot matches the
|
|
|
|
|
- * actual specification and appears to be working, use it. Let's
|
|
|
|
|
- * assume the other non-Haswell platforms will stay the same as
|
|
|
|
|
- * Broadwell.
|
|
|
|
|
- */
|
|
|
|
|
- intel_opregion_notify_adapter(dev, PCI_D3hot);
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
assert_forcewakes_inactive(dev_priv);
|
|
assert_forcewakes_inactive(dev_priv);
|