On Mon, Jul 21, 2014 at 02:02:23AM +0200, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > > Since commit de7d5f729c72 (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@xxxxxxxxx> Applied to pci/pm for v3.18, thanks! > --- > drivers/pci/pcie/portdrv_pci.c | 74 ----------------------------------------- > 1 file changed, 74 deletions(-) > > Index: linux-pm/drivers/pci/pcie/portdrv_pci.c > =================================================================== > --- linux-pm.orig/drivers/pci/pcie/portdrv_pci.c > +++ linux-pm/drivers/pci/pcie/portdrv_pci.c > @@ -93,77 +93,6 @@ static int pcie_port_resume_noirq(struct > 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 = { > .suspend = pcie_port_device_suspend, > .resume = pcie_port_device_resume, > @@ -172,9 +101,6 @@ static const struct dev_pm_ops pcie_port > .poweroff = pcie_port_device_suspend, > .restore = pcie_port_device_resume, > .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) > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html