提交 596c88f4 编写于 作者: P Prakash Mortha 提交者: Jean Delvare

i2c: Restore i2c_smbus_process_call function

Restore the i2c_smbus_process_call() as one driver (for the
Micronas MAP5401) will need it soon.

[JD: Update documentation accordingly.]
Signed-off-by: NPrakash Mortha <pmortha@escient.com>
Signed-off-by: NJean Delvare <khali@linux-fr.org>
上级 a10f9e7c
...@@ -109,8 +109,8 @@ specified through the Comm byte. ...@@ -109,8 +109,8 @@ specified through the Comm byte.
S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P
SMBus Process Call SMBus Process Call: i2c_smbus_process_call()
================== =============================================
This command selects a device register (through the Comm byte), sends This command selects a device register (through the Comm byte), sends
16 bits of data to it, and reads 16 bits of data in return. 16 bits of data to it, and reads 16 bits of data in return.
......
...@@ -606,6 +606,8 @@ SMBus communication ...@@ -606,6 +606,8 @@ SMBus communication
extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command); extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command);
extern s32 i2c_smbus_write_word_data(struct i2c_client * client, extern s32 i2c_smbus_write_word_data(struct i2c_client * client,
u8 command, u16 value); u8 command, u16 value);
extern s32 i2c_smbus_process_call(struct i2c_client *client,
u8 command, u16 value);
extern s32 i2c_smbus_read_block_data(struct i2c_client * client, extern s32 i2c_smbus_read_block_data(struct i2c_client * client,
u8 command, u8 *values); u8 command, u8 *values);
extern s32 i2c_smbus_write_block_data(struct i2c_client * client, extern s32 i2c_smbus_write_block_data(struct i2c_client * client,
...@@ -621,8 +623,6 @@ These ones were removed from i2c-core because they had no users, but could ...@@ -621,8 +623,6 @@ These ones were removed from i2c-core because they had no users, but could
be added back later if needed: be added back later if needed:
extern s32 i2c_smbus_write_quick(struct i2c_client * client, u8 value); extern s32 i2c_smbus_write_quick(struct i2c_client * client, u8 value);
extern s32 i2c_smbus_process_call(struct i2c_client * client,
u8 command, u16 value);
extern s32 i2c_smbus_block_process_call(struct i2c_client *client, extern s32 i2c_smbus_block_process_call(struct i2c_client *client,
u8 command, u8 length, u8 command, u8 length,
u8 *values) u8 *values)
......
...@@ -1687,6 +1687,28 @@ s32 i2c_smbus_write_word_data(struct i2c_client *client, u8 command, u16 value) ...@@ -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); 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 * i2c_smbus_read_block_data - SMBus "block read" protocol
* @client: Handle to slave device * @client: Handle to slave device
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册