aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7114.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/saa7114.c')
-rw-r--r--drivers/media/video/saa7114.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/media/video/saa7114.c b/drivers/media/video/saa7114.c
index 1c29d05307a5..849b54cd5c24 100644
--- a/drivers/media/video/saa7114.c
+++ b/drivers/media/video/saa7114.c
@@ -154,24 +154,21 @@ saa7114_write_block (struct i2c_client *client,
154 * the adapter understands raw I2C */ 154 * the adapter understands raw I2C */
155 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 155 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
156 /* do raw I2C, not smbus compatible */ 156 /* do raw I2C, not smbus compatible */
157 struct i2c_msg msg;
158 u8 block_data[32]; 157 u8 block_data[32];
158 int block_len;
159 159
160 msg.addr = client->addr;
161 msg.flags = 0;
162 while (len >= 2) { 160 while (len >= 2) {
163 msg.buf = (char *) block_data; 161 block_len = 0;
164 msg.len = 0; 162 block_data[block_len++] = reg = data[0];
165 block_data[msg.len++] = reg = data[0];
166 do { 163 do {
167 block_data[msg.len++] = data[1]; 164 block_data[block_len++] = data[1];
168 reg++; 165 reg++;
169 len -= 2; 166 len -= 2;
170 data += 2; 167 data += 2;
171 } while (len >= 2 && data[0] == reg && 168 } while (len >= 2 && data[0] == reg &&
172 msg.len < 32); 169 block_len < 32);
173 if ((ret = i2c_transfer(client->adapter, 170 if ((ret = i2c_master_send(client, block_data,
174 &msg, 1)) < 0) 171 block_len)) < 0)
175 break; 172 break;
176 } 173 }
177 } else { 174 } else {