diff options
author | Jon Loeliger <jdl@freescale.com> | 2006-10-19 12:02:24 -0500 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2006-10-19 12:02:24 -0500 |
commit | 4d45f69e362b05892c9e92a7907e5820995612aa (patch) | |
tree | 789e76a928bbb1d46fc53c7f3d490f6a2715092b | |
parent | 7237c033b02fe295880435f1eb80819a0c987532 (diff) | |
download | u-boot-imx-4d45f69e362b05892c9e92a7907e5820995612aa.zip u-boot-imx-4d45f69e362b05892c9e92a7907e5820995612aa.tar.gz u-boot-imx-4d45f69e362b05892c9e92a7907e5820995612aa.tar.bz2 |
Rewrite a series of goto statements as a sequences of
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>
-rw-r--r-- | drivers/fsl_i2c.c | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/drivers/fsl_i2c.c b/drivers/fsl_i2c.c index 72b2556..af19191 100644 --- a/drivers/fsl_i2c.c +++ b/drivers/fsl_i2c.c @@ -16,18 +16,16 @@ * 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 |