| From stable-bounces@linux.kernel.org Sun Oct 8 12:56:28 2006 |
| Message-ID: <4529476D.3030009@linuxtv.org> |
| Date: Sun, 08 Oct 2006 14:46:05 -0400 |
| From: Hans Verkuil <hverkuil@xs4all.nl> |
| To: stable@kernel.org |
| Cc: Hans Verkuil <hverkuil@xs4all.nl>, |
| Linux and Kernel Video <video4linux-list@redhat.com>, |
| v4l-dvb maintainer list <v4l-dvb-maintainer@linuxtv.org> |
| Subject: V4L: Fix msp343xG handling regression |
| |
| From: Hans Verkuil <hverkuil@xs4all.nl> |
| |
| The msp3430G and msp3435G models cannot do Automatic Standard Detection, |
| so these should be forced to BTSC. These chips are early production |
| versions for the msp34xxG series and are quite rare. |
| |
| Due to broken handling of the 'standard' option in 2.6.17, there is |
| no workaround possible. |
| |
| Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> |
| Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/media/video/msp3400-driver.c | 2 ++ |
| drivers/media/video/msp3400-driver.h | 1 + |
| drivers/media/video/msp3400-kthreads.c | 7 ++++--- |
| 3 files changed, 7 insertions(+), 3 deletions(-) |
| |
| --- linux-2.6.17.13.orig/drivers/media/video/msp3400-driver.c |
| +++ linux-2.6.17.13/drivers/media/video/msp3400-driver.c |
| @@ -942,6 +942,8 @@ static int msp_attach(struct i2c_adapter |
| state->has_virtual_dolby_surround = msp_revision == 'G' && msp_prod_lo == 1; |
| /* Has Virtual Dolby Surround & Dolby Pro Logic: only in msp34x2 */ |
| state->has_dolby_pro_logic = msp_revision == 'G' && msp_prod_lo == 2; |
| + /* The msp343xG supports BTSC only and cannot do Automatic Standard Detection. */ |
| + state->force_btsc = msp_family == 3 && msp_revision == 'G' && msp_prod_hi == 3; |
| |
| state->opmode = opmode; |
| if (state->opmode == OPMODE_AUTO) { |
| --- linux-2.6.17.13.orig/drivers/media/video/msp3400-driver.h |
| +++ linux-2.6.17.13/drivers/media/video/msp3400-driver.h |
| @@ -64,6 +64,7 @@ struct msp_state { |
| u8 has_sound_processing; |
| u8 has_virtual_dolby_surround; |
| u8 has_dolby_pro_logic; |
| + u8 force_btsc; |
| |
| int radio; |
| int opmode; |
| --- linux-2.6.17.13.orig/drivers/media/video/msp3400-kthreads.c |
| +++ linux-2.6.17.13/drivers/media/video/msp3400-kthreads.c |
| @@ -949,11 +949,12 @@ int msp34xxg_thread(void *data) |
| |
| /* setup the chip*/ |
| msp34xxg_reset(client); |
| - state->std = state->radio ? 0x40 : msp_standard; |
| - if (state->std != 1) |
| - goto unmute; |
| + state->std = state->radio ? 0x40 : |
| + (state->force_btsc && msp_standard == 1) ? 32 : msp_standard; |
| /* start autodetect */ |
| msp_write_dem(client, 0x20, state->std); |
| + if (state->std != 1) |
| + goto unmute; |
| |
| /* watch autodetect */ |
| v4l_dbg(1, msp_debug, client, "started autodetect, waiting for result\n"); |