diff options
| -rw-r--r-- | drivers/pci/hotplug/pciehp_hpc.c | 19 | 
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c index a8c1f74a1e3..4ebdc1de2cb 100644 --- a/drivers/pci/hotplug/pciehp_hpc.c +++ b/drivers/pci/hotplug/pciehp_hpc.c @@ -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)  |