Message ID | 1433543864-7252-1-git-send-email-troy.kisky@boundarydevices.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Saturday, June 06, 2015 at 12:37:44 AM, Troy Kisky wrote: > Currently, the timeout is never detected as count > has a value of -1 if a timeout happens, but the code is checking > for 0. Also, this patch removes the unneeded final wait > if a timeout occurs. > > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> Acked-by: Marek Vasut <marex@denx.de> Best regards, Marek Vasut -- 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
diff --git a/drivers/pci/host/pci-imx6.c b/drivers/pci/host/pci-imx6.c index fdb9536..51be92c 100644 --- a/drivers/pci/host/pci-imx6.c +++ b/drivers/pci/host/pci-imx6.c @@ -398,20 +398,22 @@ static int imx6_pcie_start_link(struct pcie_port *pp) writel(tmp, pp->dbi_base + PCIE_LINK_WIDTH_SPEED_CONTROL); count = 200; - while (count--) { + while (1) { tmp = readl(pp->dbi_base + PCIE_LINK_WIDTH_SPEED_CONTROL); /* Test if the speed change finished. */ - if (!(tmp & PORT_LOGIC_SPEED_CHANGE)) + if (!(tmp & PORT_LOGIC_SPEED_CHANGE)) { + /* Make sure link training is finished as well! */ + ret = imx6_pcie_wait_for_link(pp); + break; + } + if (count-- == 0) { + dev_err(pp->dev, "Speed change timeout\n"); + ret = -EINVAL; break; + } usleep_range(100, 1000); } - /* Make sure link training is finished as well! */ - if (count) - ret = imx6_pcie_wait_for_link(pp); - else - ret = -EINVAL; - if (ret) { dev_err(pp->dev, "Failed to bring link up!\n"); } else {
Currently, the timeout is never detected as count has a value of -1 if a timeout happens, but the code is checking for 0. Also, this patch removes the unneeded final wait if a timeout occurs. Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> --- drivers/pci/host/pci-imx6.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-)