aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pci/pcie/pme.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c
index 717529331dac..2dd1c68e6de8 100644
--- a/drivers/pci/pcie/pme.c
+++ b/drivers/pci/pcie/pme.c
@@ -433,6 +433,17 @@ static int pcie_pme_resume(struct pcie_device *srv)
433 return 0; 433 return 0;
434} 434}
435 435
436/**
437 * pcie_pme_remove - Prepare PCIe PME service device for removal.
438 * @srv - PCIe service device to remove.
439 */
440static void pcie_pme_remove(struct pcie_device *srv)
441{
442 pcie_pme_suspend(srv);
443 free_irq(srv->irq, srv);
444 kfree(get_service_data(srv));
445}
446
436static struct pcie_port_service_driver pcie_pme_driver = { 447static struct pcie_port_service_driver pcie_pme_driver = {
437 .name = "pcie_pme", 448 .name = "pcie_pme",
438 .port_type = PCI_EXP_TYPE_ROOT_PORT, 449 .port_type = PCI_EXP_TYPE_ROOT_PORT,
@@ -441,6 +452,7 @@ static struct pcie_port_service_driver pcie_pme_driver = {
441 .probe = pcie_pme_probe, 452 .probe = pcie_pme_probe,
442 .suspend = pcie_pme_suspend, 453 .suspend = pcie_pme_suspend,
443 .resume = pcie_pme_resume, 454 .resume = pcie_pme_resume,
455 .remove = pcie_pme_remove,
444}; 456};
445 457
446/** 458/**