Skip to content

Commit

Permalink
V4L/DVB (4688): Fix msp343xG handling (regression from 2.6.16)
Browse files Browse the repository at this point in the history
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.
The workaround for kernel 2.6.18 is to use 'standard=32' as msp3400
module option. Due to broken handling of the 'standard' option in 2.6.17 there is
no workaround possible for that kernel.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Oct 3, 2006
1 parent 587c03d commit de98cda
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
2 changes: 2 additions & 0 deletions drivers/media/video/msp3400-driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -904,6 +904,8 @@ static int msp_attach(struct i2c_adapter *adapter, int address, int kind)
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) {
Expand Down
1 change: 1 addition & 0 deletions drivers/media/video/msp3400-driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
5 changes: 3 additions & 2 deletions drivers/media/video/msp3400-kthreads.c
Original file line number Diff line number Diff line change
Expand Up @@ -960,9 +960,10 @@ int msp34xxg_thread(void *data)

/* setup the chip*/
msp34xxg_reset(client);
state->std = state->radio ? 0x40 : msp_standard;
/* start autodetect */
state->std = state->radio ? 0x40 :
(state->force_btsc && msp_standard == 1) ? 32 : msp_standard;
msp_write_dem(client, 0x20, state->std);
/* start autodetect */
if (state->std != 1)
goto unmute;

Expand Down

0 comments on commit de98cda

Please sign in to comment.