diff mbox

[U-Boot,2/4] i2c: i2c-cdns: Reorder timeout loop for interrupt waiting

Message ID 1482878794-30009-2-git-send-email-moritz.fischer@ettus.com
State Accepted
Commit 0ec0c5864365f3f222e1652aca98cfbd86bae890
Delegated to: Heiko Schocher
Headers show

Commit Message

Moritz Fischer Dec. 27, 2016, 10:46 p.m. UTC
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.

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 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Michal Simek Jan. 2, 2017, 1:43 p.m. UTC | #1
On 27.12.2016 23:46, Moritz Fischer wrote:
> 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.
> 
> 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 | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/i2c-cdns.c b/drivers/i2c/i2c-cdns.c
> index c69e7e8..9a1b520 100644
> --- a/drivers/i2c/i2c-cdns.c
> +++ b/drivers/i2c/i2c-cdns.c
> @@ -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 */
> 

Reviewed-by: Michal Simek <michal.simek@xilinx.com>

Thanks,
Michal
diff mbox

Patch

diff --git a/drivers/i2c/i2c-cdns.c b/drivers/i2c/i2c-cdns.c
index c69e7e8..9a1b520 100644
--- a/drivers/i2c/i2c-cdns.c
+++ b/drivers/i2c/i2c-cdns.c
@@ -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 */