i2c: i2c-cdns: Reorder timeout loop for interrupt waiting
authorMoritz Fischer <moritz.fischer@ettus.com>
Mon, 16 Jan 2017 17:50:45 +0000 (09:50 -0800)
committerHeiko Schocher <hs@denx.de>
Wed, 18 Jan 2017 05:38:14 +0000 (06:38 +0100)
Reorder the timeout loop such that we first check if the
condition is already true, and then call udelay() so if
the condition is already true, break early.

Reviewed-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: u-boot@lists.denx.de
drivers/i2c/i2c-cdns.c

index c1d64273c50bca27d125e6c9fbee117e0d48a8ff..1c9fda8f66767bd13d18ac48e4639e3a303500e9 100644 (file)
@@ -130,10 +130,10 @@ static u32 cdns_i2c_wait(struct cdns_i2c_regs *cdns_i2c, u32 mask)
        int timeout, int_status;
 
        for (timeout = 0; timeout < 100; timeout++) {
-               udelay(100);
                int_status = readl(&cdns_i2c->interrupt_status);
                if (int_status & mask)
                        break;
+               udelay(100);
        }
 
        /* Clear interrupt status flags */