diff options
-rw-r--r-- | drivers/pci/host/pci-layerscape.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/host/pci-layerscape.c index bb5894fb81d6..434b116f1a7e 100644 --- a/drivers/pci/host/pci-layerscape.c +++ b/drivers/pci/host/pci-layerscape.c @@ -62,23 +62,30 @@ static int ls_pcie_link_up(struct pcie_port *pp) return 1; } -static void ls_pcie_host_init(struct pcie_port *pp) +static int ls_pcie_establish_link(struct pcie_port *pp) { - struct ls_pcie *pcie = to_ls_pcie(pp); int count = 0; - u32 val; - - dw_pcie_setup_rc(pp); while (!dw_pcie_link_up(pp)) { usleep_range(100, 1000); count++; if (count >= 200) { dev_err(pp->dev, "phy link never came up\n"); - return; + return -EINVAL; } } + return 0; +} + +static void ls_pcie_host_init(struct pcie_port *pp) +{ + struct ls_pcie *pcie = to_ls_pcie(pp); + u32 val; + + dw_pcie_setup_rc(pp); + ls_pcie_establish_link(pp); + /* * LS1021A Workaround for internal TKT228622 * to fix the INTx hang issue |