From eebb94ca907d7f6581934fe32f04edab8ec6bb4d Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Wed, 18 Jan 2006 23:14:55 +0100 Subject: [PATCH] --- yaml --- r: 23243 b: refs/heads/master c: 7656032b904b936eca65a41afa1f2b3603195657 h: refs/heads/master i: 23241: 7f296b398f8b361542025aeaef0ab9a2df861b7b 23239: 6b3e11d78aac6dfeb82b851e203a7ddd28dbb8a7 v: v3 --- [refs] | 2 +- trunk/drivers/i2c/i2c-core.c | 15 ++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 1edc32815526..4e3b8e9941cd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 93766d2de6a3f7eead3fda57fd4638b90d6691fa +refs/heads/master: 7656032b904b936eca65a41afa1f2b3603195657 diff --git a/trunk/drivers/i2c/i2c-core.c b/trunk/drivers/i2c/i2c-core.c index 97334433e534..2b0c555aa011 100644 --- a/trunk/drivers/i2c/i2c-core.c +++ b/trunk/drivers/i2c/i2c-core.c @@ -920,12 +920,11 @@ s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command, u8 length, u8 *values) { union i2c_smbus_data data; - int i; + if (length > I2C_SMBUS_BLOCK_MAX) length = I2C_SMBUS_BLOCK_MAX; - for (i = 1; i <= length; i++) - data.block[i] = values[i-1]; data.block[0] = length; + memcpy(&data.block[1], values, length); return i2c_smbus_xfer(client->adapter,client->addr,client->flags, I2C_SMBUS_WRITE,command, I2C_SMBUS_BLOCK_DATA,&data); @@ -935,16 +934,14 @@ s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command, s32 i2c_smbus_read_i2c_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_I2C_BLOCK_DATA,&data)) return -1; - else { - for (i = 1; i <= data.block[0]; i++) - values[i-1] = data.block[i]; - return data.block[0]; - } + + memcpy(values, &data.block[1], data.block[0]); + return data.block[0]; } s32 i2c_smbus_write_i2c_block_data(struct i2c_client *client, u8 command,