diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-08-02 06:45:39 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-08-02 06:45:39 +0200 |
commit | 14963b8c461b9d1c310554b414238a6e97d1a8c0 (patch) | |
tree | e055fde63a1db05ee4a2592c338538cf33bf37c8 /commands | |
parent | ed98f1522d2157a0266095b00ab1481da6085337 (diff) | |
parent | f66e9dd041a91c98b15509a7aebe293491e63e8f (diff) | |
download | barebox-14963b8c461b9d1c310554b414238a6e97d1a8c0.tar.gz barebox-14963b8c461b9d1c310554b414238a6e97d1a8c0.tar.xz |
Merge branch 'for-next/i2c' into HEAD
Diffstat (limited to 'commands')
-rw-r--r-- | commands/i2c.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/commands/i2c.c b/commands/i2c.c index 2811f6abeb..d6c5412762 100644 --- a/commands/i2c.c +++ b/commands/i2c.c @@ -75,7 +75,7 @@ static int do_i2c_write(int argc, char *argv[]) int addr = -1, reg = -1, count = -1, verbose = 0, ret, opt, i, bus = 0, wide = 0; u8 *buf; - while ((opt = getopt(argc, argv, "a:b:r:v:w")) > 0) { + while ((opt = getopt(argc, argv, "a:b:r:vw")) > 0) { switch (opt) { case 'a': addr = simple_strtol(optarg, NULL, 0); @@ -90,7 +90,7 @@ static int do_i2c_write(int argc, char *argv[]) verbose = 1; break; case 'w': - wide = 1; + wide = I2C_ADDR_16_BIT; break; } } @@ -113,9 +113,13 @@ static int do_i2c_write(int argc, char *argv[]) for (i = 0; i < count; i++) *(buf + i) = (char) simple_strtol(argv[optind+i], NULL, 16); - ret = i2c_write_reg(&client, reg | (wide ? I2C_ADDR_16_BIT : 0), buf, count); - if (ret != count) + ret = i2c_write_reg(&client, reg | wide, buf, count); + if (ret != count) { + if (verbose) + printf("write aborted, count(%i) != writestatus(%i)\n", + count, ret); goto out; + } ret = 0; if (verbose) { @@ -155,7 +159,7 @@ static int do_i2c_read(int argc, char *argv[]) u8 *buf; int count = -1, addr = -1, reg = -1, verbose = 0, ret, opt, bus = 0, wide = 0; - while ((opt = getopt(argc, argv, "a:b:c:r:v:w")) > 0) { + while ((opt = getopt(argc, argv, "a:b:c:r:vw")) > 0) { switch (opt) { case 'a': addr = simple_strtol(optarg, NULL, 0); @@ -173,7 +177,7 @@ static int do_i2c_read(int argc, char *argv[]) verbose = 1; break; case 'w': - wide = 1; + wide = I2C_ADDR_16_BIT; break; } } @@ -191,7 +195,7 @@ static int do_i2c_read(int argc, char *argv[]) client.addr = addr; buf = xmalloc(count); - ret = i2c_read_reg(&client, reg | (wide ? I2C_ADDR_16_BIT : 0), buf, count); + ret = i2c_read_reg(&client, reg | wide, buf, count); if (ret == count) { int i; if (verbose) |