Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffb97493 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

[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: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 1589037f
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -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)
+3 −3
Original line number Diff line number Diff line
@@ -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);