i2c: dev: Handle 255 byte blocks for i2c ioctl
I2C_SMBUS is limited to 32 bytes due to compatibility with the 32 byte i2c_smbus_data.block I2C_RDWR allows larger transfers if sufficient sized buffers are passed. Signed-off-by: Matt Johnston <matt@codeconstruct.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
13cae4a104
commit
84a107e68b
3 changed files with 83 additions and 14 deletions
|
|
@ -39,12 +39,14 @@
|
|||
|
||||
|
||||
/* This is the structure as used in the I2C_SMBUS ioctl call */
|
||||
#ifndef __KERNEL__
|
||||
struct i2c_smbus_ioctl_data {
|
||||
__u8 read_write;
|
||||
__u8 command;
|
||||
__u32 size;
|
||||
union i2c_smbus_data __user *data;
|
||||
};
|
||||
#endif
|
||||
|
||||
/* This is the structure as used in the I2C_RDWR ioctl call */
|
||||
struct i2c_rdwr_ioctl_data {
|
||||
|
|
|
|||
|
|
@ -109,6 +109,8 @@ struct i2c_msg {
|
|||
#define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000 /* w/ 1-byte reg. addr. */
|
||||
#define I2C_FUNC_SMBUS_HOST_NOTIFY 0x10000000 /* SMBus 2.0 or later */
|
||||
#define I2C_FUNC_SMBUS_V3_BLOCK 0x20000000 /* Device supports 255 byte block */
|
||||
/* Note that I2C_SMBUS ioctl only */
|
||||
/* supports a 32 byte block */
|
||||
|
||||
#define I2C_FUNC_SMBUS_BYTE (I2C_FUNC_SMBUS_READ_BYTE | \
|
||||
I2C_FUNC_SMBUS_WRITE_BYTE)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue