mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-21 22:19:22 -05:00
Merge branch 'pci/pm'
- Enable starfive controller runtime PM before probing host bridge (Mayank Rana) - Enable runtime power management for host bridges (Krishna chaitanya chundru) * pci/pm: PCI: Enable runtime PM of the host bridge PCI: starfive: Enable controller runtime PM before probing host bridge
This commit is contained in:
@@ -404,6 +404,9 @@ static int starfive_pcie_probe(struct platform_device *pdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
pm_runtime_enable(&pdev->dev);
|
||||
pm_runtime_get_sync(&pdev->dev);
|
||||
|
||||
plda->host_ops = &sf_host_ops;
|
||||
plda->num_events = PLDA_MAX_EVENT_NUM;
|
||||
/* mask doorbell event */
|
||||
@@ -413,11 +416,12 @@ static int starfive_pcie_probe(struct platform_device *pdev)
|
||||
plda->events_bitmap <<= PLDA_NUM_DMA_EVENTS;
|
||||
ret = plda_pcie_host_init(&pcie->plda, &starfive_pcie_ops,
|
||||
&stf_pcie_event);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
pm_runtime_put_sync(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
pm_runtime_enable(&pdev->dev);
|
||||
pm_runtime_get_sync(&pdev->dev);
|
||||
platform_set_drvdata(pdev, pcie);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -3111,6 +3111,17 @@ int pci_host_probe(struct pci_host_bridge *bridge)
|
||||
pcie_bus_configure_settings(child);
|
||||
|
||||
pci_bus_add_devices(bus);
|
||||
|
||||
/*
|
||||
* Ensure pm_runtime_enable() is called for the controller drivers
|
||||
* before calling pci_host_probe(). The PM framework expects that
|
||||
* if the parent device supports runtime PM, it will be enabled
|
||||
* before child runtime PM is enabled.
|
||||
*/
|
||||
pm_runtime_set_active(&bridge->dev);
|
||||
pm_runtime_no_callbacks(&bridge->dev);
|
||||
devm_pm_runtime_enable(&bridge->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_host_probe);
|
||||
|
||||
Reference in New Issue
Block a user