summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-08-07 06:14:58 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-08-07 06:14:58 +0200
commitf64760777b022e25909e05212b490edb1afdf764 (patch)
tree788bd5f33e7637e42e2ca0290d8089e679ca68ce /commands
parent50d10b224edf190c5b1f7e8d64140265d19c7bbb (diff)
parentf66e9dd041a91c98b15509a7aebe293491e63e8f (diff)
downloadbarebox-f64760777b022e25909e05212b490edb1afdf764.tar.gz
barebox-f64760777b022e25909e05212b490edb1afdf764.tar.xz
Merge branch 'for-next/i2c'
Diffstat (limited to 'commands')
-rw-r--r--commands/i2c.c18
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)