Commit 19abcd79 authored by Kishon Vijay Abraham I's avatar Kishon Vijay Abraham I Committed by Lorenzo Pieralisi

PCI: cadence: Fix cdns_pcie_{host|ep}_setup() error path

commit bd22885a ("PCI: cadence: Refactor driver to use as a core
library") while refactoring the Cadence PCIe driver to be used as
library, removed pm_runtime_get_sync() from cdns_pcie_ep_setup()
and cdns_pcie_host_setup() but missed to remove the corresponding
pm_runtime_put_sync() in the error path. Fix it here.

Link: https://lore.kernel.org/r/20200722110317.4744-3-kishon@ti.com
Fixes: bd22885a ("PCI: cadence: Refactor driver to use as a core library")
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
parent 5d3d063a
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/pci-epc.h> #include <linux/pci-epc.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/sizes.h> #include <linux/sizes.h>
#include "pcie-cadence.h" #include "pcie-cadence.h"
...@@ -440,8 +439,7 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep) ...@@ -440,8 +439,7 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
epc = devm_pci_epc_create(dev, &cdns_pcie_epc_ops); epc = devm_pci_epc_create(dev, &cdns_pcie_epc_ops);
if (IS_ERR(epc)) { if (IS_ERR(epc)) {
dev_err(dev, "failed to create epc device\n"); dev_err(dev, "failed to create epc device\n");
ret = PTR_ERR(epc); return PTR_ERR(epc);
goto err_init;
} }
epc_set_drvdata(epc, ep); epc_set_drvdata(epc, ep);
...@@ -453,7 +451,7 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep) ...@@ -453,7 +451,7 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
resource_size(pcie->mem_res), PAGE_SIZE); resource_size(pcie->mem_res), PAGE_SIZE);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "failed to initialize the memory space\n"); dev_err(dev, "failed to initialize the memory space\n");
goto err_init; return ret;
} }
ep->irq_cpu_addr = pci_epc_mem_alloc_addr(epc, &ep->irq_phys_addr, ep->irq_cpu_addr = pci_epc_mem_alloc_addr(epc, &ep->irq_phys_addr,
...@@ -472,8 +470,5 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep) ...@@ -472,8 +470,5 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
free_epc_mem: free_epc_mem:
pci_epc_mem_exit(epc); pci_epc_mem_exit(epc);
err_init:
pm_runtime_put_sync(dev);
return ret; return ret;
} }
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_pci.h> #include <linux/of_pci.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include "pcie-cadence.h" #include "pcie-cadence.h"
...@@ -474,7 +473,7 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc) ...@@ -474,7 +473,7 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc)
ret = cdns_pcie_host_init(dev, &resources, rc); ret = cdns_pcie_host_init(dev, &resources, rc);
if (ret) if (ret)
goto err_init; return ret;
list_splice_init(&resources, &bridge->windows); list_splice_init(&resources, &bridge->windows);
bridge->dev.parent = dev; bridge->dev.parent = dev;
...@@ -492,8 +491,5 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc) ...@@ -492,8 +491,5 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc)
err_host_probe: err_host_probe:
pci_free_resource_list(&resources); pci_free_resource_list(&resources);
err_init:
pm_runtime_put_sync(dev);
return ret; return ret;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment