The data link active signal usually takes ~20 uSec to be asserted,
poll the bit more often to avoid useless delays in this function.
Use udelay() instead of usleep() for such a small delay as suggested
by the timer documentation and because this will be used in atomic
context later on when the suspend/resume patches land.

Signed-off-by: Marek Vasut <marek.vasut+rene...@gmail.com>
Cc: Geert Uytterhoeven <geert+rene...@glider.be>
Cc: Lorenzo Pieralisi <lorenzo.pieral...@arm.com>
Cc: Phil Edworthy <phil.edwor...@renesas.com>
Cc: Simon Horman <horms+rene...@verge.net.au>
Cc: Wolfram Sang <w...@the-dreams.de>
Cc: linux-renesas-soc@vger.kernel.org
---
V2: s/content/context in commit message
V3: Add cpu_relax()
V4: Rebase on top of Lorenzo's pci/rcar, fix up the rebase breakage
    induced by patches therein
---
 drivers/pci/host/pcie-rcar.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c
index d6a7e8482dcf..4843a4dc6059 100644
--- a/drivers/pci/host/pcie-rcar.c
+++ b/drivers/pci/host/pcie-rcar.c
@@ -546,13 +546,14 @@ static int rcar_pcie_wait_for_phyrdy(struct rcar_pcie 
*pcie)
 
 static int rcar_pcie_wait_for_dl(struct rcar_pcie *pcie)
 {
-       unsigned int timeout = 10;
+       unsigned int timeout = 10000;
 
        while (timeout--) {
                if ((rcar_pci_read_reg(pcie, PCIETSTR) & DATA_LINK_ACTIVE))
                        return 0;
 
-               msleep(5);
+               udelay(5);
+               cpu_relax();
        }
 
        return -ETIMEDOUT;
-- 
2.16.2

Reply via email to