From: Hans Verkuil Date: Sat, 9 Mar 2013 09:18:03 +0000 (-0300) Subject: [media] go7007: fix i2c_xfer return codes X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=ffb9749346b4e3bb567d0d5daa88edae9f8ec8ae;p=openwrt%2Fstaging%2Fblogic.git [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 Signed-off-by: Mauro Carvalho Chehab --- 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);