Rewrite a series of goto statements as a sequences of
authorJon Loeliger <jdl@freescale.com>
Thu, 19 Oct 2006 17:02:24 +0000 (12:02 -0500)
committerJon Loeliger <jdl@freescale.com>
Thu, 19 Oct 2006 17:02:24 +0000 (12:02 -0500)
conditional expressions instead.

Use consistent return code 0/-1 for good/bad indicators.

Include one fewer file if the driver isn't used at all.

Signed-off-by: Jon Loeliger <jdl@freescale.com>
drivers/fsl_i2c.c

index 72b2556b286798e12fe6406d172a2fad2a3e44c8..af191915e37f780085bae62edc15813c30ba8784 100644 (file)
  * MA 02111-1307 USA
  */
 
-
 #include <common.h>
-#include <command.h>
 
 #ifdef CONFIG_HARD_I2C
 
+#include <command.h>
 #include <asm/io.h>
 #include <asm/fsl_i2c.h>
 
 #define I2C_TIMEOUT    (CFG_HZ / 4)
-
-#define I2C    ((struct fsl_i2c *)(CFG_IMMR + CFG_I2C_OFFSET))
+#define I2C            ((struct fsl_i2c *)(CFG_IMMR + CFG_I2C_OFFSET))
 
 
 void
@@ -170,24 +168,19 @@ i2c_read(u8 dev, uint addr, int alen, u8 *data, int length)
        int i = 0;
        u8 *a = (u8*)&addr;
 
-       if (i2c_wait4bus () < 0)
-               goto exit;
-
-       if (i2c_write_addr(dev, I2C_WRITE, 0) == 0)
-               goto exit;
-
-       if (__i2c_write(&a[4 - alen], alen) != alen)
-               goto exit;
-
-       if (i2c_write_addr(dev, I2C_READ, 1) == 0)
-               goto exit;
-
-       i = __i2c_read(data, length);
+       if (i2c_wait4bus() >= 0
+           && i2c_write_addr(dev, I2C_WRITE, 0) != 0
+           && __i2c_write(&a[4 - alen], alen) == alen
+           && i2c_write_addr(dev, I2C_READ, 1) != 0) {
+               i = __i2c_read(data, length);
+       }
 
- exit:
        writeb(I2C_CR_MEN, &I2C->cr);
 
-       return !(i == length);
+       if (i == length)
+           return 0;
+
+       return -1;
 }
 
 int
@@ -196,21 +189,18 @@ i2c_write(u8 dev, uint addr, int alen, u8 *data, int length)
        int i = 0;
        u8 *a = (u8*)&addr;
 
-       if (i2c_wait4bus() < 0)
-               goto exit;
-
-       if (i2c_write_addr(dev, I2C_WRITE, 0) == 0)
-               goto exit;
-
-       if (__i2c_write(&a[4 - alen], alen) != alen)
-               goto exit;
-
-       i = __i2c_write(data, length);
+       if (i2c_wait4bus() >= 0
+           && i2c_write_addr(dev, I2C_WRITE, 0) != 0
+           && __i2c_write(&a[4 - alen], alen) == alen) {
+               i = __i2c_write(data, length);
+       }
 
- exit:
        writeb(I2C_CR_MEN, &I2C->cr);
 
-       return !(i == length);
+       if (i == length)
+           return 0;
+
+       return -1;
 }
 
 int