|
@@ -125,24 +125,21 @@ adv7170_write_block (struct i2c_client *client,
|
|
|
if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
|
|
|
/* do raw I2C, not smbus compatible */
|
|
|
struct adv7170 *encoder = i2c_get_clientdata(client);
|
|
|
- struct i2c_msg msg;
|
|
|
u8 block_data[32];
|
|
|
+ int block_len;
|
|
|
|
|
|
- msg.addr = client->addr;
|
|
|
- msg.flags = 0;
|
|
|
while (len >= 2) {
|
|
|
- msg.buf = (char *) block_data;
|
|
|
- msg.len = 0;
|
|
|
- block_data[msg.len++] = reg = data[0];
|
|
|
+ block_len = 0;
|
|
|
+ block_data[block_len++] = reg = data[0];
|
|
|
do {
|
|
|
- block_data[msg.len++] =
|
|
|
+ block_data[block_len++] =
|
|
|
encoder->reg[reg++] = data[1];
|
|
|
len -= 2;
|
|
|
data += 2;
|
|
|
} while (len >= 2 && data[0] == reg &&
|
|
|
- msg.len < 32);
|
|
|
- if ((ret = i2c_transfer(client->adapter,
|
|
|
- &msg, 1)) < 0)
|
|
|
+ block_len < 32);
|
|
|
+ if ((ret = i2c_master_send(client, block_data,
|
|
|
+ block_len)) < 0)
|
|
|
break;
|
|
|
}
|
|
|
} else {
|