Commit eaf33c40 authored by Frank Schaefer's avatar Frank Schaefer Committed by Mauro Carvalho Chehab
Browse files

[media] em28xx: fix the i2c adapter functionality flags



I2C_FUNC_SMBUS_EMUL includes flag I2C_FUNC_SMBUS_WRITE_BLOCK_DATA which signals
that up to 31 data bytes can be written to the ic2 client.
But the EM2800 supports only i2c messages with max. 4 data bytes.
I2C_FUNC_IC2 should be set if a master_xfer function pointer is provided in
struct i2c_algorithm.

Signed-off-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 2fcc82d8
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -445,7 +445,11 @@ static int em28xx_i2c_eeprom(struct em28xx *dev, unsigned char *eedata, int len)
 */
static u32 functionality(struct i2c_adapter *adap)
{
	return I2C_FUNC_SMBUS_EMUL;
	struct em28xx *dev = adap->algo_data;
	u32 func_flags = I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
	if (dev->board.is_em2800)
		func_flags &= ~I2C_FUNC_SMBUS_WRITE_BLOCK_DATA;
	return func_flags;
}

static struct i2c_algorithm em28xx_algo = {