diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2007-08-04 04:00:07 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-10-09 21:04:50 -0400 |
commit | 89fc4eb924fc8da769083e1680e24c182589d789 (patch) | |
tree | 6909b09a6bffabdd4c26969f728a1ae11ef62c33 /drivers | |
parent | 94104aa2a88ac2433f7cbde3dbec629263724271 (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')
-rw-r--r-- | drivers/media/video/cx25840/cx25840-core.c | 9 |
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 | ||
182 | static void cx25840_initialize(struct i2c_client *client, int loadfw) | 182 | static 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: |