|
@@ -257,19 +257,30 @@ static bool check_link_active(struct controller *ctrl)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static void pcie_wait_link_active(struct controller *ctrl)
|
|
|
+static void __pcie_wait_link_active(struct controller *ctrl, bool active)
|
|
|
{
|
|
|
int timeout = 1000;
|
|
|
|
|
|
- if (check_link_active(ctrl))
|
|
|
+ if (check_link_active(ctrl) == active)
|
|
|
return;
|
|
|
while (timeout > 0) {
|
|
|
msleep(10);
|
|
|
timeout -= 10;
|
|
|
- if (check_link_active(ctrl))
|
|
|
+ if (check_link_active(ctrl) == active)
|
|
|
return;
|
|
|
}
|
|
|
- ctrl_dbg(ctrl, "Data Link Layer Link Active not set in 1000 msec\n");
|
|
|
+ ctrl_dbg(ctrl, "Data Link Layer Link Active not %s in 1000 msec\n",
|
|
|
+ active ? "set" : "cleared");
|
|
|
+}
|
|
|
+
|
|
|
+static void pcie_wait_link_active(struct controller *ctrl)
|
|
|
+{
|
|
|
+ __pcie_wait_link_active(ctrl, true);
|
|
|
+}
|
|
|
+
|
|
|
+static void pcie_wait_link_not_active(struct controller *ctrl)
|
|
|
+{
|
|
|
+ __pcie_wait_link_active(ctrl, false);
|
|
|
}
|
|
|
|
|
|
static bool pci_bus_check_dev(struct pci_bus *bus, int devfn)
|