|
@@ -1687,6 +1687,28 @@ s32 i2c_smbus_write_word_data(struct i2c_client *client, u8 command, u16 value)
|
|
|
}
|
|
|
EXPORT_SYMBOL(i2c_smbus_write_word_data);
|
|
|
|
|
|
+/**
|
|
|
+ * i2c_smbus_process_call - SMBus "process call" protocol
|
|
|
+ * @client: Handle to slave device
|
|
|
+ * @command: Byte interpreted by slave
|
|
|
+ * @value: 16-bit "word" being written
|
|
|
+ *
|
|
|
+ * This executes the SMBus "process call" protocol, returning negative errno
|
|
|
+ * else a 16-bit unsigned "word" received from the device.
|
|
|
+ */
|
|
|
+s32 i2c_smbus_process_call(struct i2c_client *client, u8 command, u16 value)
|
|
|
+{
|
|
|
+ union i2c_smbus_data data;
|
|
|
+ int status;
|
|
|
+ data.word = value;
|
|
|
+
|
|
|
+ status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
|
|
|
+ I2C_SMBUS_WRITE, command,
|
|
|
+ I2C_SMBUS_PROC_CALL, &data);
|
|
|
+ return (status < 0) ? status : data.word;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(i2c_smbus_process_call);
|
|
|
+
|
|
|
/**
|
|
|
* i2c_smbus_read_block_data - SMBus "block read" protocol
|
|
|
* @client: Handle to slave device
|