aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7114.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-03-23 19:23:20 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-23 19:23:20 -0500
commit88f07ffb63add018bfafd480ec6a294088277f06 (patch)
tree64b657d06b3ae7de3f87544a85d83d0ed6a7e3a9 /drivers/media/video/saa7114.c
parentb6585dedac232ca79fe978d97a95fdaa6da24f66 (diff)
parent9aa45e34d2948f360f8c0e63d10f49015ca51edd (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb: V4L/DVB (3568k): zoran: Use i2c_master_send when possible V4L/DVB (3568j): adv7175: Drop unused encoder dump command V4L/DVB (3568i): adv7175: Drop unused register cache V4L/DVB (3568h): cpia: correct email address V4L/DVB (3568g): sem2mutex: zoran V4L/DVB (3568f): saa7110: Fix array overrun V4L/DVB (3568e): bt856: Spare memory V4L/DVB (3568d): saa7111.c fix V4L/DVB (3568c): zoran: Init cleanups V4L/DVB (3568b): saa7111: Prevent array overrun V4L/DVB (3568a): saa7114: Fix i2c block write
Diffstat (limited to 'drivers/media/video/saa7114.c')
-rw-r--r--drivers/media/video/saa7114.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/drivers/media/video/saa7114.c b/drivers/media/video/saa7114.c
index ce5a740e923..4a1f841d0c7 100644
--- a/drivers/media/video/saa7114.c
+++ b/drivers/media/video/saa7114.c
@@ -138,9 +138,6 @@ saa7114_write (struct i2c_client *client,
138 u8 reg, 138 u8 reg,
139 u8 value) 139 u8 value)
140{ 140{
141 /*struct saa7114 *decoder = i2c_get_clientdata(client);*/
142
143 /*decoder->reg[reg] = value;*/
144 return i2c_smbus_write_byte_data(client, reg, value); 141 return i2c_smbus_write_byte_data(client, reg, value);
145} 142}
146 143
@@ -156,25 +153,21 @@ saa7114_write_block (struct i2c_client *client,
156 * the adapter understands raw I2C */ 153 * the adapter understands raw I2C */
157 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { 154 if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
158 /* do raw I2C, not smbus compatible */ 155 /* do raw I2C, not smbus compatible */
159 /*struct saa7114 *decoder = i2c_get_clientdata(client);*/
160 struct i2c_msg msg;
161 u8 block_data[32]; 156 u8 block_data[32];
157 int block_len;
162 158
163 msg.addr = client->addr;
164 msg.flags = 0;
165 while (len >= 2) { 159 while (len >= 2) {
166 msg.buf = (char *) block_data; 160 block_len = 0;
167 msg.len = 0; 161 block_data[block_len++] = reg = data[0];
168 block_data[msg.len++] = reg = data[0];
169 do { 162 do {
170 block_data[msg.len++] = 163 block_data[block_len++] = data[1];
171 /*decoder->reg[reg++] =*/ data[1]; 164 reg++;
172 len -= 2; 165 len -= 2;
173 data += 2; 166 data += 2;
174 } while (len >= 2 && data[0] == reg && 167 } while (len >= 2 && data[0] == reg &&
175 msg.len < 32); 168 block_len < 32);
176 if ((ret = i2c_transfer(client->adapter, 169 if ((ret = i2c_master_send(client, block_data,
177 &msg, 1)) < 0) 170 block_len)) < 0)
178 break; 171 break;
179 } 172 }
180 } else { 173 } else {