forked from mirrors/linux
		
	PCI / PM: Skip bridges in pci_enable_wake()
PCI bridges only have a reason to generate wakeup signals on behalf of devices below them, so avoid preparing bridges for wakeup directly in pci_enable_wake(). Also drop the pci_has_subordinate() check from pci_pm_default_resume() as this will be done by pci_enable_wake() itself now. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
		
							parent
							
								
									16f73eb02d
								
							
						
					
					
						commit
						baecc470d5
					
				
					 2 changed files with 8 additions and 3 deletions
				
			
		| 
						 | 
					@ -647,9 +647,7 @@ static int pci_legacy_resume(struct device *dev)
 | 
				
			||||||
static void pci_pm_default_resume(struct pci_dev *pci_dev)
 | 
					static void pci_pm_default_resume(struct pci_dev *pci_dev)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pci_fixup_device(pci_fixup_resume, pci_dev);
 | 
						pci_fixup_device(pci_fixup_resume, pci_dev);
 | 
				
			||||||
 | 
						pci_enable_wake(pci_dev, PCI_D0, false);
 | 
				
			||||||
	if (!pci_has_subordinate(pci_dev))
 | 
					 | 
				
			||||||
		pci_enable_wake(pci_dev, PCI_D0, false);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void pci_pm_default_suspend(struct pci_dev *pci_dev)
 | 
					static void pci_pm_default_suspend(struct pci_dev *pci_dev)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1912,6 +1912,13 @@ int pci_enable_wake(struct pci_dev *dev, pci_power_t state, bool enable)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int ret = 0;
 | 
						int ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * Bridges can only signal wakeup on behalf of subordinate devices,
 | 
				
			||||||
 | 
						 * but that is set up elsewhere, so skip them.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						if (pci_has_subordinate(dev))
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Don't do the same thing twice in a row for one device. */
 | 
						/* Don't do the same thing twice in a row for one device. */
 | 
				
			||||||
	if (!!enable == !!dev->wakeup_prepared)
 | 
						if (!!enable == !!dev->wakeup_prepared)
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue