OSDN Git Service

PCI: designware: Wait for link to come up with consistent style
[uclinux-h8/linux.git] / drivers / pci / host / pci-layerscape.c
index 4a6e62f..b2328ea 100644 (file)
@@ -62,22 +62,27 @@ static int ls_pcie_link_up(struct pcie_port *pp)
        return 1;
 }
 
+static int ls_pcie_establish_link(struct pcie_port *pp)
+{
+       unsigned int retries;
+
+       for (retries = 0; retries < 200; retries++) {
+               if (dw_pcie_link_up(pp))
+                       return 0;
+               usleep_range(100, 1000);
+       }
+
+       dev_err(pp->dev, "phy link never came up\n");
+       return -EINVAL;
+}
+
 static void ls_pcie_host_init(struct pcie_port *pp)
 {
        struct ls_pcie *pcie = to_ls_pcie(pp);
-       int count = 0;
        u32 val;
 
        dw_pcie_setup_rc(pp);
-
-       while (!ls_pcie_link_up(pp)) {
-               usleep_range(100, 1000);
-               count++;
-               if (count >= 200) {
-                       dev_err(pp->dev, "phy link never came up\n");
-                       return;
-               }
-       }
+       ls_pcie_establish_link(pp);
 
        /*
         * LS1021A Workaround for internal TKT228622