Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b331def2d382d7a51c379f336fe80ef87d6674e3
Commit:     b331def2d382d7a51c379f336fe80ef87d6674e3
Parent:     315eb962d2e9438bc10da2488b604f04a1c0006f
Author:     Hans Verkuil <[EMAIL PROTECTED]>
AuthorDate: Mon Dec 18 13:18:28 2006 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Wed Dec 27 14:19:32 2006 -0200

    V4L/DVB (4982): Fix broken audio mode handling for line-in in msp3400.
    
    The wrong matrix was used when an external input was selected instead of
    the tuner input. The rxsubchans field was also not initialized to STEREO
    for an external input. And finally the msp34xxg_detect_stereo() should
    not try to detect stereo for an external input, that code is for the
    tuner input only.
    Together these bugs made it hit 'n miss whether you ever got stereo out
    of the msp3400 for an external input.
    
    Signed-off-by: Hans Verkuil <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/video/msp3400-driver.c   |    6 ++----
 drivers/media/video/msp3400-kthreads.c |   11 ++++++++---
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/media/video/msp3400-driver.c 
b/drivers/media/video/msp3400-driver.c
index e1b56dc..295cb99 100644
--- a/drivers/media/video/msp3400-driver.c
+++ b/drivers/media/video/msp3400-driver.c
@@ -633,10 +633,8 @@ static int msp_command(struct i2c_client *client, unsigned 
int cmd, void *arg)
                        if (((rt->input >> (4 + i * 4)) & 0xf) == 0)
                                extern_input = 0;
                }
-               if (extern_input)
-                       state->mode = MSP_MODE_EXTERN;
-               else
-                       state->mode = MSP_MODE_AM_DETECT;
+               state->mode = extern_input ? MSP_MODE_EXTERN : 
MSP_MODE_AM_DETECT;
+               state->rxsubchans = V4L2_TUNER_SUB_STEREO;
                msp_set_scart(client, sc_in, 0);
                msp_set_scart(client, sc1_out, 1);
                msp_set_scart(client, sc2_out, 2);
diff --git a/drivers/media/video/msp3400-kthreads.c 
b/drivers/media/video/msp3400-kthreads.c
index 4c7f85b..e1821eb 100644
--- a/drivers/media/video/msp3400-kthreads.c
+++ b/drivers/media/video/msp3400-kthreads.c
@@ -483,7 +483,6 @@ int msp3400c_thread(void *data)
                        /* no carrier scan, just unmute */
                        v4l_dbg(1, msp_debug, client, "thread: no carrier 
scan\n");
                        state->scan_in_progress = 0;
-                       state->rxsubchans = V4L2_TUNER_SUB_STEREO;
                        msp_set_audio(client);
                        continue;
                }
@@ -851,12 +850,15 @@ static void msp34xxg_set_source(struct i2c_client 
*client, u16 reg, int in)
                source = 1; /* stereo or A|B */
                matrix = 0x20;
                break;
-       case V4L2_TUNER_MODE_STEREO:
        case V4L2_TUNER_MODE_LANG1:
-       default:
                source = 3; /* stereo or A */
                matrix = 0x00;
                break;
+       case V4L2_TUNER_MODE_STEREO:
+       default:
+               source = 3; /* stereo or A */
+               matrix = 0x20;
+               break;
        }
 
        if (in == MSP_DSP_IN_TUNER)
@@ -1030,6 +1032,9 @@ static int msp34xxg_detect_stereo(struct i2c_client 
*client)
        int is_stereo = status & 0x40;
        int oldrx = state->rxsubchans;
 
+       if (state->mode == MSP_MODE_EXTERN)
+               return 0;
+
        state->rxsubchans = 0;
        if (is_stereo)
                state->rxsubchans = V4L2_TUNER_SUB_STEREO;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to