summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2013-03-09 10:18:03 +0100
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-03-24 16:10:36 +0100
commitffb9749346b4e3bb567d0d5daa88edae9f8ec8ae (patch)
tree7d8fa0d99143c9dbac2b054b029fce65a6809183
parent[media] saa7115: add support for double-rate ASCLK (diff)
downloadlinux-ffb9749346b4e3bb567d0d5daa88edae9f8ec8ae.tar.xz
linux-ffb9749346b4e3bb567d0d5daa88edae9f8ec8ae.zip
[media] go7007: fix i2c_xfer return codes
The i2c_xfer functions didn't return the proper error codes and (especially important) on success they returned 0 instead of the number of transferred messages. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/staging/media/go7007/go7007-i2c.c20
-rw-r--r--drivers/staging/media/go7007/go7007-usb.c6
2 files changed, 13 insertions, 13 deletions
diff --git a/drivers/staging/media/go7007/go7007-i2c.c b/drivers/staging/media/go7007/go7007-i2c.c
index 39456a36b2c6..1d0a40075e66 100644
--- a/drivers/staging/media/go7007/go7007-i2c.c
+++ b/drivers/staging/media/go7007/go7007-i2c.c
@@ -52,11 +52,11 @@ static DEFINE_MUTEX(adlink_mpg24_i2c_lock);
static int go7007_i2c_xfer(struct go7007 *go, u16 addr, int read,
u16 command, int flags, u8 *data)
{
- int i, ret = -1;
+ int i, ret = -EIO;
u16 val;
if (go->status == STATUS_SHUTDOWN)
- return -1;
+ return -ENODEV;
#ifdef GO7007_I2C_DEBUG
if (read)
@@ -146,7 +146,7 @@ static int go7007_smbus_xfer(struct i2c_adapter *adapter, u16 addr,
struct go7007 *go = i2c_get_adapdata(adapter);
if (size != I2C_SMBUS_BYTE_DATA)
- return -1;
+ return -EIO;
return go7007_i2c_xfer(go, addr, read_write == I2C_SMBUS_READ, command,
flags & I2C_CLIENT_SCCB ? 0x10 : 0x00, &data->byte);
}
@@ -170,26 +170,26 @@ static int go7007_i2c_master_xfer(struct i2c_adapter *adapter,
(msgs[i].flags & I2C_M_RD) ||
!(msgs[i + 1].flags & I2C_M_RD) ||
msgs[i + 1].len != 1)
- return -1;
+ return -EIO;
if (go7007_i2c_xfer(go, msgs[i].addr, 1,
(msgs[i].buf[0] << 8) | msgs[i].buf[1],
0x01, &msgs[i + 1].buf[0]) < 0)
- return -1;
+ return -EIO;
++i;
} else if (msgs[i].len == 3) {
if (msgs[i].flags & I2C_M_RD)
- return -1;
+ return -EIO;
if (msgs[i].len != 3)
- return -1;
+ return -EIO;
if (go7007_i2c_xfer(go, msgs[i].addr, 0,
(msgs[i].buf[0] << 8) | msgs[i].buf[1],
0x01, &msgs[i].buf[2]) < 0)
- return -1;
+ return -EIO;
} else
- return -1;
+ return -EIO;
}
- return 0;
+ return num;
}
static u32 go7007_functionality(struct i2c_adapter *adapter)
diff --git a/drivers/staging/media/go7007/go7007-usb.c b/drivers/staging/media/go7007/go7007-usb.c
index 9dbf5ecd05a2..914b247e9652 100644
--- a/drivers/staging/media/go7007/go7007-usb.c
+++ b/drivers/staging/media/go7007/go7007-usb.c
@@ -876,10 +876,10 @@ static int go7007_usb_i2c_master_xfer(struct i2c_adapter *adapter,
struct go7007_usb *usb = go->hpi_context;
u8 buf[16];
int buf_len, i;
- int ret = -1;
+ int ret = -EIO;
if (go->status == STATUS_SHUTDOWN)
- return -1;
+ return -ENODEV;
mutex_lock(&usb->i2c_lock);
@@ -936,7 +936,7 @@ static int go7007_usb_i2c_master_xfer(struct i2c_adapter *adapter,
memcpy(msgs[i].buf, buf + 1, msgs[i].len);
}
}
- ret = 0;
+ ret = num;
i2c_done:
mutex_unlock(&usb->i2c_lock);