Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7b27d45bb50498c86aa87e7ef174b2a0f5b6f361
Commit:     7b27d45bb50498c86aa87e7ef174b2a0f5b6f361
Parent:     4423a9a3395ef652d80d848161444b417f1f78c0
Author:     Ricardo Cerqueira <[EMAIL PROTECTED]>
AuthorDate: Sun Sep 30 13:02:49 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 19:03:48 2008 -0200

    V4L/DVB (6831): Audio routes fix for blackbird boards with the wm8775 ADC
    
    Fix lack of audio on the MPEG-2 stream of wm8775 based blackbirds.
    
    The wm8775 module initializes the audio input at "route 2", which doesn't
    hold true for all boards. The HVR-1300, for example, uses route 1 for
    tuner audio, and route 2 for baseband. So we must route the audio to the
    proper input depending on what video input is being used.
    
    Signed-off-by: Ricardo Cerqueira <[EMAIL PROTECTED]>
    Signed-off-by: Michael Krufky <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/video/cx88/cx88-cards.c |   38 ++++++++++++++++----------------
 drivers/media/video/cx88/cx88-video.c |   16 ++++++++++++-
 drivers/media/video/cx88/cx88.h       |    2 +-
 3 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-cards.c 
b/drivers/media/video/cx88/cx88-cards.c
index f8a786a..d484e5c 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -302,22 +302,22 @@ static const struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_TELEVISION,
                        .vmux   = 0,
                        .gpio0  = 0x0000bde2,
-                       .extadc = 1,
+                       .audioroute = 1,
                },{
                        .type   = CX88_VMUX_COMPOSITE1,
                        .vmux   = 1,
                        .gpio0  = 0x0000bde6,
-                       .extadc = 1,
+                       .audioroute = 1,
                },{
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 2,
                        .gpio0  = 0x0000bde6,
-                       .extadc = 1,
+                       .audioroute = 1,
                }},
                .radio = {
                        .type   = CX88_RADIO,
                        .gpio0  = 0x0000bd62,
-                       .extadc = 1,
+                       .audioroute = 1,
                },
                .mpeg           = CX88_MPEG_BLACKBIRD,
        },
@@ -378,7 +378,7 @@ static const struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 2,
                        .gpio0  = 0x0000fde6, // 0x0000fda6 L,R RCA audio in?
-                       .extadc = 1,
+                       .audioroute = 1,
                }},
                .radio = {
                        .type   = CX88_RADIO,
@@ -549,7 +549,7 @@ static const struct cx88_board cx88_boards[] = {
                .input          = {{
                        .type   = CX88_VMUX_TELEVISION,
                        .vmux   = 0,
-                       .extadc = 1,
+                       .audioroute = 1,
                }},
                .mpeg           = CX88_MPEG_BLACKBIRD,
        },
@@ -672,22 +672,22 @@ static const struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_TELEVISION,
                        .vmux   = 0,
                        .gpio0  = 0x00009d80,
-                       .extadc = 1,
+                       .audioroute = 1,
                },{
                        .type   = CX88_VMUX_COMPOSITE1,
                        .vmux   = 1,
                        .gpio0  = 0x00009d76,
-                       .extadc = 1,
+                       .audioroute = 1,
                },{
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 2,
                        .gpio0  = 0x00009d76,
-                       .extadc = 1,
+                       .audioroute = 1,
                }},
                .radio = {
                        .type   = CX88_RADIO,
                        .gpio0  = 0x00009d00,
-                       .extadc = 1,
+                       .audioroute = 1,
                },
                .mpeg           = CX88_MPEG_BLACKBIRD,
        },
@@ -826,23 +826,23 @@ static const struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_COMPOSITE1,
                        .vmux   = 0,
                        .gpio0  = 0x0000cd73,
-                       .extadc = 1,
+                       .audioroute = 1,
                },{
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 1,
                        .gpio0  = 0x0000cd73,
-                       .extadc = 1,
+                       .audioroute = 1,
                },{
                        .type   = CX88_VMUX_TELEVISION,
                        .vmux   = 3,
                        .gpio0  = 0x0000cdb3,
-                       .extadc = 1,
+                       .audioroute = 1,
                }},
                .radio = {
                        .type   = CX88_RADIO,
                        .vmux   = 2,
                        .gpio0  = 0x0000cdf3,
-                       .extadc = 1,
+                       .audioroute = 1,
                },
                .mpeg           = CX88_MPEG_BLACKBIRD,
        },
@@ -1110,12 +1110,12 @@ static const struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_COMPOSITE1,
                        .vmux   = 1,
                        .gpio0  = 0x3de6,
-                       .extadc = 1,
+                       .audioroute = 1,
                },{
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 2,
                        .gpio0  = 0x3de6,
-                       .extadc = 1,
+                       .audioroute = 1,
                }},
                .radio = {
                        .type   = CX88_RADIO,
@@ -1340,17 +1340,17 @@ static const struct cx88_board cx88_boards[] = {
                        .type   = CX88_VMUX_TELEVISION,
                        .vmux   = 0,
                        .gpio0  = 0xe780,
-                       .extadc = 1,
+                       .audioroute = 1,
                },{
                        .type   = CX88_VMUX_COMPOSITE1,
                        .vmux   = 1,
                        .gpio0  = 0xe780,
-                       .extadc = 1,
+                       .audioroute = 2,
                },{
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 2,
                        .gpio0  = 0xe780,
-                       .extadc = 1,
+                       .audioroute = 2,
                }},
                /* fixme: Add radio support */
                .mpeg           = CX88_MPEG_DVB | CX88_MPEG_BLACKBIRD,
diff --git a/drivers/media/video/cx88/cx88-video.c 
b/drivers/media/video/cx88/cx88-video.c
index 6d5ea8c..1b80f0f 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -394,9 +394,21 @@ int cx88_video_mux(struct cx88_core *core, unsigned int 
input)
 
        if (core->board.mpeg & CX88_MPEG_BLACKBIRD) {
                /* sets sound input from external adc */
-               if (INPUT(input).extadc)
+               if (INPUT(input).audioroute) {
+                       /* The wm8775 module has the "2" route hardwired into
+                          the initialization. Some boards may use different
+                          routes for different inputs. HVR-1300 surely does */
+                       if (core->board.audio_chip &&
+                           core->board.audio_chip == AUDIO_CHIP_WM8775) {
+                               struct v4l2_routing route;
+
+                               route.input = INPUT(input).audioroute;
+                               cx88_call_i2c_clients(core,
+                                       VIDIOC_INT_S_AUDIO_ROUTING,&route);
+                       }
+
                        cx_set(AUD_CTL, EN_I2SIN_ENABLE);
-               else
+               } else
                        cx_clear(AUD_CTL, EN_I2SIN_ENABLE);
        }
        return 0;
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index f10d432..a10f94d 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -228,7 +228,7 @@ struct cx88_input {
        enum cx88_itype type;
        u32             gpio0, gpio1, gpio2, gpio3;
        unsigned int    vmux:2;
-       unsigned int    extadc:1;
+       unsigned int    audioroute;
 };
 
 struct cx88_board {
-
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