aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx25840
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2007-08-04 04:00:07 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-10-09 21:04:50 -0400
commit89fc4eb924fc8da769083e1680e24c182589d789 (patch)
tree6909b09a6bffabdd4c26969f728a1ae11ef62c33 /drivers/media/video/cx25840
parent94104aa2a88ac2433f7cbde3dbec629263724271 (diff)
V4L/DVB (5993): cx25840: resetting also requires reloading the firmware
Resetting without reloading the firmware is not enough. Sometimes the firmware is 'stuck' and needs to be reloaded. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/cx25840')
-rw-r--r--drivers/media/video/cx25840/cx25840-core.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c
index 9c12bd39cfb5..9f99007d389b 100644
--- a/drivers/media/video/cx25840/cx25840-core.c
+++ b/drivers/media/video/cx25840/cx25840-core.c
@@ -179,7 +179,7 @@ static void cx25836_initialize(struct i2c_client *client)
179 cx25840_and_or(client, 0x15b, ~0x1e, 0x10); 179 cx25840_and_or(client, 0x15b, ~0x1e, 0x10);
180} 180}
181 181
182static void cx25840_initialize(struct i2c_client *client, int loadfw) 182static void cx25840_initialize(struct i2c_client *client)
183{ 183{
184 struct cx25840_state *state = i2c_get_clientdata(client); 184 struct cx25840_state *state = i2c_get_clientdata(client);
185 185
@@ -197,8 +197,7 @@ static void cx25840_initialize(struct i2c_client *client, int loadfw)
197 cx25840_write(client, 0x13c, 0x01); 197 cx25840_write(client, 0x13c, 0x01);
198 cx25840_write(client, 0x13c, 0x00); 198 cx25840_write(client, 0x13c, 0x00);
199 /* 5. */ 199 /* 5. */
200 if (loadfw) 200 cx25840_loadfw(client);
201 cx25840_loadfw(client);
202 /* 6. */ 201 /* 6. */
203 cx25840_write(client, 0x115, 0x8c); 202 cx25840_write(client, 0x115, 0x8c);
204 cx25840_write(client, 0x116, 0x07); 203 cx25840_write(client, 0x116, 0x07);
@@ -638,7 +637,7 @@ static int cx25840_command(struct i2c_client *client, unsigned int cmd,
638 if (state->is_cx25836) 637 if (state->is_cx25836)
639 cx25836_initialize(client); 638 cx25836_initialize(client);
640 else 639 else
641 cx25840_initialize(client, 1); 640 cx25840_initialize(client);
642 } 641 }
643 642
644 switch (cmd) { 643 switch (cmd) {
@@ -841,7 +840,7 @@ static int cx25840_command(struct i2c_client *client, unsigned int cmd,
841 if (state->is_cx25836) 840 if (state->is_cx25836)
842 cx25836_initialize(client); 841 cx25836_initialize(client);
843 else 842 else
844 cx25840_initialize(client, 0); 843 cx25840_initialize(client);
845 break; 844 break;
846 845
847 case VIDIOC_G_CHIP_IDENT: 846 case VIDIOC_G_CHIP_IDENT: