Subject: i2c: Restore i2c_smbus_read_block_data Add back the i2c_smbus_read_block_data helper function, it is needed by the upcoming lm93 hardware monitoring driver and possibly others. Signed-off-by: Jean Delvare --- drivers/i2c/i2c-core.c | 16 ++++++++++++++++ include/linux/i2c.h | 3 +++ 2 files changed, 19 insertions(+) --- linux-2.6.21-rc6.orig/drivers/i2c/i2c-core.c 2007-04-08 11:00:56.000000000 +0200 +++ linux-2.6.21-rc6/drivers/i2c/i2c-core.c 2007-04-08 11:01:18.000000000 +0200 @@ -1298,6 +1298,22 @@ s32 i2c_smbus_write_word_data(struct i2c } EXPORT_SYMBOL(i2c_smbus_write_word_data); +/* Returns the number of read bytes */ +s32 i2c_smbus_read_block_data(struct i2c_client *client, u8 command, + u8 *values) +{ + union i2c_smbus_data data; + + if (i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_READ, command, + I2C_SMBUS_BLOCK_DATA, &data)) + return -1; + + memcpy(values, &data.block[1], data.block[0]); + return data.block[0]; +} +EXPORT_SYMBOL(i2c_smbus_read_block_data); + s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command, u8 length, const u8 *values) { --- linux-2.6.21-rc6.orig/include/linux/i2c.h 2007-04-08 11:00:56.000000000 +0200 +++ linux-2.6.21-rc6/include/linux/i2c.h 2007-04-08 11:01:18.000000000 +0200 @@ -82,6 +82,9 @@ extern s32 i2c_smbus_write_byte_data(str extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command); extern s32 i2c_smbus_write_word_data(struct i2c_client * client, u8 command, u16 value); +/* Returns the number of read bytes */ +extern s32 i2c_smbus_read_block_data(struct i2c_client *client, + u8 command, u8 *values); extern s32 i2c_smbus_write_block_data(struct i2c_client * client, u8 command, u8 length, const u8 *values);