@@ -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
All other DesignWare-based drivers have a *_establish_link() function. This functionality is trivial for Layerscape, but factor out a ls_pcie_establish_link() for consistency with the other drivers. No functional change. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> --- drivers/pci/host/pci-layerscape.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html