Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a82200fb59e7d12a1365199d9fe350bbf74255e4
Commit:     a82200fb59e7d12a1365199d9fe350bbf74255e4
Parent:     d6964aa8d4a418d69da1652121940fabc6b5d591
Author:     Mauro Carvalho Chehab <[EMAIL PROTECTED]>
AuthorDate: Thu Nov 15 11:58:00 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 19:02:12 2008 -0200

    V4L/DVB (6605): Add a modprobe option to manually select audio standard
    
    While there's no public API to define audio standard, adds a hack option for
    select them. This is needed only for NICAM and A2 firmwares, since AM, BTSC 
and
    EAIJ are already properly handled, on firmware version 2.7.
    
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/video/tuner-xc2028.c |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/tuner-xc2028.c 
b/drivers/media/video/tuner-xc2028.c
index 492181d..371e822 100644
--- a/drivers/media/video/tuner-xc2028.c
+++ b/drivers/media/video/tuner-xc2028.c
@@ -28,6 +28,20 @@ static int debug;
 module_param(debug, int, 0644);
 MODULE_PARM_DESC(debug, "enable verbose debug messages");
 
+static char audio_std[8];
+module_param_string(audio_std, audio_std, sizeof(audio_std), 0);
+MODULE_PARM_DESC(audio_std,
+       "Audio standard. XC3028 audio decoder explicitly "
+       "needs to know what audio\n"
+       "standard is needed for some video standards with audio A2 or NICAM.\n"
+       "The valid values are:\n"
+       "A2\n"
+       "A2/A\n"
+       "A2/B\n"
+       "NICAM\n"
+       "NICAM/A\n"
+       "NICAM/B\n");
+
 static LIST_HEAD(xc2028_list);
 /* struct for storing firmware table */
 struct firmware_description {
@@ -180,6 +194,24 @@ void dump_firm_type(unsigned int type)
                printk("SCODE ");
 }
 
+static v4l2_std_id parse_audio_std_option(void)
+{
+       if (strcasecmp(audio_std, "A2"))
+               return V4L2_STD_A2;
+       if (strcasecmp(audio_std, "A2/A"))
+               return V4L2_STD_A2_A;
+       if (strcasecmp(audio_std, "A2/B"))
+               return V4L2_STD_A2_B;
+       if (strcasecmp(audio_std, "NICAM"))
+               return V4L2_STD_NICAM;
+       if (strcasecmp(audio_std, "NICAM/A"))
+               return V4L2_STD_NICAM_A;
+       if (strcasecmp(audio_std, "NICAM/B"))
+               return V4L2_STD_NICAM_B;
+
+       return 0;
+}
+
 static void free_firmware(struct xc2028_data *priv)
 {
        int i;
@@ -613,6 +645,9 @@ static int check_firmware(struct dvb_frontend *fe, enum 
tuner_mode new_mode,
                return 0;
        }
 
+       /* Add audio hack to std mask */
+       std |= parse_audio_std_option();
+
        rc = load_firmware(fe, type, &std);
        if (rc < 0)
                return rc;
-
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