diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2018-12-16 21:19:20 -0800 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-01-08 16:28:48 +0100 |
commit | 8aff03ca6b1078dd6a77b3836320329380351b22 (patch) | |
tree | 71c2b79bdc7b631b1c0ca631f9c5085c2a27dd5b /drivers/pci/pcie-designware-host.c | |
parent | e24f672e4fed0995f77c66b963f14d3d87c9ee67 (diff) | |
download | barebox-8aff03ca6b1078dd6a77b3836320329380351b22.tar.gz barebox-8aff03ca6b1078dd6a77b3836320329380351b22.tar.xz |
PCI: dwc: designware: Handle ->host_init() failures
Port of a Linux commit 4a301766f5263dd94c1b95d1b1bbdf338afb1a37
In several dwc-based drivers, ->host_init() can fail, so make sure to
propagate and handle this to avoid continuing operation of a driver or
hardware in an invalid state.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Joao Pinto <jpinto@synopsys.com>
Acked-by: Jingoo Han <jingoohan1@gmail.com>
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/pci/pcie-designware-host.c')
-rw-r--r-- | drivers/pci/pcie-designware-host.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/pci/pcie-designware-host.c b/drivers/pci/pcie-designware-host.c index 5de9cd8ea3..e98560818c 100644 --- a/drivers/pci/pcie-designware-host.c +++ b/drivers/pci/pcie-designware-host.c @@ -164,8 +164,11 @@ int __init dw_pcie_host_init(struct pcie_port *pp) if (ret) pci->num_viewport = 2; - if (pp->ops->host_init) - pp->ops->host_init(pp); + if (pp->ops->host_init) { + ret = pp->ops->host_init(pp); + if (ret) + return ret; + } pp->pci.parent = dev; pp->pci.pci_ops = &dw_pcie_ops; |