Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bffe4f72 authored by Yinghai Lu's avatar Yinghai Lu Committed by Jesse Barnes
Browse files

PCI: pciehp: Add pcie_wait_link_not_active()



Will use it for link disable status checking.

Signed-off-by: default avatarYinghai Lu <yinghai.lu@oracle.com>
Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
parent 4e2ce405
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -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)