mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	PCI/PM: Drop unused runtime PM support code for PCIe ports
Since commit de7d5f729c ("PCI/PM: Disable runtime PM of PCIe ports") the
runtime PM support code for PCIe ports in portdrv_pci.c has never been
used, so drop it entirely.
If we are to support runtime PM of PCIe ports, it will have to be done in a
different way most likely anyway.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
			
			
This commit is contained in:
		
							parent
							
								
									52addcf9d6
								
							
						
					
					
						commit
						fe9a743a26
					
				
					 1 changed files with 0 additions and 74 deletions
				
			
		| 
						 | 
					@ -93,77 +93,6 @@ static int pcie_port_resume_noirq(struct device *dev)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_PM_RUNTIME
 | 
					 | 
				
			||||||
struct d3cold_info {
 | 
					 | 
				
			||||||
	bool no_d3cold;
 | 
					 | 
				
			||||||
	unsigned int d3cold_delay;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int pci_dev_d3cold_info(struct pci_dev *pdev, void *data)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct d3cold_info *info = data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	info->d3cold_delay = max_t(unsigned int, pdev->d3cold_delay,
 | 
					 | 
				
			||||||
				   info->d3cold_delay);
 | 
					 | 
				
			||||||
	if (pdev->no_d3cold)
 | 
					 | 
				
			||||||
		info->no_d3cold = true;
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int pcie_port_runtime_suspend(struct device *dev)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct pci_dev *pdev = to_pci_dev(dev);
 | 
					 | 
				
			||||||
	struct d3cold_info d3cold_info = {
 | 
					 | 
				
			||||||
		.no_d3cold	= false,
 | 
					 | 
				
			||||||
		.d3cold_delay	= PCI_PM_D3_WAIT,
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * If any subordinate device disable D3cold, we should not put
 | 
					 | 
				
			||||||
	 * the port into D3cold.  The D3cold delay of port should be
 | 
					 | 
				
			||||||
	 * the max of that of all subordinate devices.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	pci_walk_bus(pdev->subordinate, pci_dev_d3cold_info, &d3cold_info);
 | 
					 | 
				
			||||||
	pdev->no_d3cold = d3cold_info.no_d3cold;
 | 
					 | 
				
			||||||
	pdev->d3cold_delay = d3cold_info.d3cold_delay;
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int pcie_port_runtime_resume(struct device *dev)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int pci_dev_pme_poll(struct pci_dev *pdev, void *data)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	bool *pme_poll = data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (pdev->pme_poll)
 | 
					 | 
				
			||||||
		*pme_poll = true;
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int pcie_port_runtime_idle(struct device *dev)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct pci_dev *pdev = to_pci_dev(dev);
 | 
					 | 
				
			||||||
	bool pme_poll = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * If any subordinate device needs pme poll, we should keep
 | 
					 | 
				
			||||||
	 * the port in D0, because we need port in D0 to poll it.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	pci_walk_bus(pdev->subordinate, pci_dev_pme_poll, &pme_poll);
 | 
					 | 
				
			||||||
	/* Delay for a short while to prevent too frequent suspend/resume */
 | 
					 | 
				
			||||||
	if (!pme_poll)
 | 
					 | 
				
			||||||
		pm_schedule_suspend(dev, 10);
 | 
					 | 
				
			||||||
	return -EBUSY;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define pcie_port_runtime_suspend	NULL
 | 
					 | 
				
			||||||
#define pcie_port_runtime_resume	NULL
 | 
					 | 
				
			||||||
#define pcie_port_runtime_idle		NULL
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct dev_pm_ops pcie_portdrv_pm_ops = {
 | 
					static const struct dev_pm_ops pcie_portdrv_pm_ops = {
 | 
				
			||||||
	.suspend	= pcie_port_device_suspend,
 | 
						.suspend	= pcie_port_device_suspend,
 | 
				
			||||||
	.resume		= pcie_port_device_resume,
 | 
						.resume		= pcie_port_device_resume,
 | 
				
			||||||
| 
						 | 
					@ -172,9 +101,6 @@ static const struct dev_pm_ops pcie_portdrv_pm_ops = {
 | 
				
			||||||
	.poweroff	= pcie_port_device_suspend,
 | 
						.poweroff	= pcie_port_device_suspend,
 | 
				
			||||||
	.restore	= pcie_port_device_resume,
 | 
						.restore	= pcie_port_device_resume,
 | 
				
			||||||
	.resume_noirq	= pcie_port_resume_noirq,
 | 
						.resume_noirq	= pcie_port_resume_noirq,
 | 
				
			||||||
	.runtime_suspend = pcie_port_runtime_suspend,
 | 
					 | 
				
			||||||
	.runtime_resume = pcie_port_runtime_resume,
 | 
					 | 
				
			||||||
	.runtime_idle	= pcie_port_runtime_idle,
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PCIE_PORTDRV_PM_OPS	(&pcie_portdrv_pm_ops)
 | 
					#define PCIE_PORTDRV_PM_OPS	(&pcie_portdrv_pm_ops)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue