[PATCH] add back i2c_smbus_read_block_data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

This patch just adds back the i2c_smbus_read_block_data, it will be used
with lm93 driver.

This patch originated from Eric J. Bowersox [1], but never made it to mainline.
I just redodiffed the patch.

Signed-off-by: Eric J. Bowersox <ericb at aspsys.com>
Signed-off-by: Rudolf Marek <r.marek at sh.cvut.cz>

Please apply,

Regards
Rudolf

[1] 
http://lists.lm-sensors.org/pipermail/lm-sensors/2005-August/013228.html

diff -Naur a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
--- a/drivers/i2c/i2c-core.c	2005-10-20 08:23:05.000000000 +0200
+++ b/drivers/i2c/i2c-core.c	2005-10-23 18:17:22.731964000 +0200
@@ -984,6 +984,23 @@
 	                      I2C_SMBUS_WORD_DATA,&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;
+	int i;
+	if (i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+		I2C_SMBUS_READ, command,
+		I2C_SMBUS_BLOCK_DATA, &data))
+		return -1;
+	else {
+		for (i = 1; i <= data.block[0]; i++)
+			values[i-1] = data.block[i];
+		return data.block[0];
+	}
+}
+
 s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command,
 			       u8 length, u8 *values)
 {
@@ -1227,6 +1244,7 @@
 EXPORT_SYMBOL(i2c_smbus_write_byte_data);
 EXPORT_SYMBOL(i2c_smbus_read_word_data);
 EXPORT_SYMBOL(i2c_smbus_write_word_data);
+EXPORT_SYMBOL(i2c_smbus_read_block_data);
 EXPORT_SYMBOL(i2c_smbus_write_block_data);
 EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data);
 
diff -Naur a/include/linux/i2c.h b/include/linux/i2c.h
--- a/include/linux/i2c.h	2005-10-20 08:23:05.000000000 +0200
+++ b/include/linux/i2c.h	2005-10-23 18:17:22.735964250 +0200
@@ -95,6 +95,8 @@
 extern s32 i2c_smbus_write_word_data(struct i2c_client * client,
                                      u8 command, u16 value);
 /* Returns the number of bytes transferred */
+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,
 				      u8 *values);




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux