Hi,
this patches
- New card: Hercules SmartTV stereo (unsupported: IR, line in)
- New card: Pace TV and radio card
- includes the compile-fix and tvaudio oops patches

Regards, Gunther
diff -ur bttv-0.7.105/CARDLIST bttv07105/CARDLIST
--- bttv-0.7.105/CARDLIST       Fri Feb 14 12:34:57 2003
+++ bttv07105/CARDLIST  Sun Feb 16 13:54:03 2003
@@ -99,6 +99,8 @@
   card=97 - Euresys Picolo
   card=98 - ProVideo PV150
   card=99 - AD-TVK503
+  card=100 - Hercules Smart TV Stereo
+  card=101 - Pace TV & Radio Card
 
 tuner.o
   type=0 - Temic PAL (4002 FH5)
diff -ur bttv-0.7.105/driver/bttv-cards.c bttv07105/driver/bttv-cards.c
--- bttv-0.7.105/driver/bttv-cards.c    Fri Feb 14 11:43:36 2003
+++ bttv07105/driver/bttv-cards.c       Sun Feb 16 13:56:22 2003
@@ -629,7 +629,7 @@
        .pll            = PLL_28,
        .tuner_type     = -1,
 },{
-       .name           = "Formac iProTV",
+       .name           = "Formac iProTV, Formac ProTV I (bt848)",
        .video_inputs   = 4,
        .audio_inputs   = 1,
        .tuner          = 0,
@@ -1552,7 +1552,7 @@
        .needs_tvaudio  = 0, 
        .pll            = PLL_28,
 },{
-        .name           = "Formac ProTV II",
+        .name           = "Formac ProTV II (bt878)",
         .video_inputs   = 4,
         .audio_inputs   = 1,
         .tuner          = 0,
@@ -1628,6 +1628,45 @@
        .pll            = PLL_28,
        .tuner_type     = 2,
        .audio_hook     = adtvk503_audio,
+},{
+        .name           = "Hercules Smart TV Stereo",
+        .video_inputs   = 4,
+        .audio_inputs   = 1,
+        .tuner          = 0,
+        .svhs           = 2,
+        .gpiomask       = 0x00,
+        .muxsel         = { 2, 3, 1, 1 },
+        .needs_tvaudio  = 1,
+        .no_msp34xx     = 1,
+        .pll            = PLL_28,
+        .tuner_type     = 5,
+       /* Notes:
+          - card lacks subsystem ID
+          - stereo variant w/ daughter board with tda9874a @0xb0
+          - Audio Routing: 
+               always from tda9874 independent of GPIO (?)
+               external line in: unknown
+          - Other chips: em78p156elp @ 0x96 (probably IR remote control)
+                     hef4053 (instead 4052) for unknown function
+       */
+},{
+        .name           = "Pace TV & Radio Card",
+        .video_inputs   = 4,
+        .audio_inputs   = 1,
+        .tuner          = 0,
+        .svhs           = 2,
+        .muxsel         = { 2, 3, 1, 1}, // Tuner, CVid, SVid, CVid over SVid 
+connector
+        .gpiomask       = 0,
+        .no_tda9875     = 1,
+        .no_tda7432     = 1,
+        .tuner_type     = 1,
+        .has_radio      = 1,
+        .pll            = PLL_28,
+        /* Bt878, Bt832, FI1246 tuner; no pci subsystem id
+           only internal line out: (4pin header) RGGL
+           Radio must be decoded by msp3410d (not routed through)*/
+        //         .digital_mode   = DIGITAL_MODE_CAMERA, // todo!
+
 }};
 
 const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
Only in bttv-0.7.105/driver: core
diff -ur bttv-0.7.105/driver/msp3400.c bttv07105/driver/msp3400.c
--- bttv-0.7.105/driver/msp3400.c       Fri Feb 14 11:45:04 2003
+++ bttv07105/driver/msp3400.c  Sun Feb 16 11:21:02 2003
@@ -482,8 +482,7 @@
 /* turn on/off nicam + stereo */
 static void msp3400c_setstereo(struct i2c_client *client, int mode)
 {
-       static char *strmode[] = {
-               [ 0 ... 15 ]           = "invalid",
+       static char *strmode[15] = {
                [ VIDEO_SOUND_MONO ]   = "mono",
                [ VIDEO_SOUND_STEREO ] = "stereo",
                [ VIDEO_SOUND_LANG1  ] = "lang1",
@@ -493,6 +492,11 @@
        int nicam=0; /* channel source: FM/AM or nicam */
        int src=0;
 
+       if(strmode[mode]==NULL) {
+               dprintk("msp3400 invalid mode %d\n",mode);
+               return;
+               }
+
        /* switch demodulator */
        switch (msp->mode) {
        case MSP_MODE_FM_TERRA:
diff -ur bttv-0.7.105/driver/tvaudio.c bttv07105/driver/tvaudio.c
--- bttv-0.7.105/driver/tvaudio.c       Fri Jan  3 18:23:44 2003
+++ bttv07105/driver/tvaudio.c  Sun Feb 16 13:31:23 2003
@@ -982,7 +982,7 @@
        dprintk("tda9874a_checkit(): DIC=0x%X, SIC=0x%X.\n", dic, sic);
 
        if((dic == 0x11)||(dic == 0x07)) {
-               dprintk("tvaudio: found tda9874%s.\n",(dic == 0x11) ? "a (new)":"h 
(old)");
+               printk("tvaudio: found tda9874%s.\n",(dic == 0x11) ? "a":"h");
                tda9874a_dic = dic;     /* remember device id. */
                return 1;
        }
@@ -991,33 +991,39 @@
 
 static int tda9874a_initialize(struct CHIPSTATE *chip)
 {
-       if(tda9874a_SIF != -1) {
-               if(tda9874a_SIF == 1)
-                       tda9874a_GCONR = 0xc0;  /* sound IF input 1 */
-               else if(tda9874a_SIF == 2)
-                       tda9874a_GCONR = 0xc1;  /* sound IF input 2 */
-               else
-                       printk(KERN_WARNING "tda9874a: SIF parameter must be 1 or 
2.\n");
+
+       dprintk("tda9874a_initialize\n");
+
+       if(tda9874a_SIF<1 || tda9874a_SIF>2) {
+               printk(KERN_WARNING "tda9874a_SIF parameter must be 1 or 2. Assuming 
+1.\n");
+               tda9874a_SIF=1;
        }
 
-       if(tda9874a_STD != -1) {
-               if((tda9874a_STD >= 0)&&(tda9874a_STD <= 8)) {
-                       tda9874a_ESP = tda9874a_STD;
-                       tda9874a_mode = (tda9874a_STD < 5) ? 0 : 1;
-               } else {
-                       printk(KERN_WARNING "tda9874a: STD parameter must be between 0 
and 8.\n");
-               }
+       if(tda9874a_SIF == 1)
+               tda9874a_GCONR = 0xc0;  /* sound IF input 1 */
+       else if(tda9874a_SIF == 2)
+               tda9874a_GCONR = 0xc1;  /* sound IF input 2 */
+
+       if(tda9874a_STD<0 || tda9874a_STD>8) {
+               printk(KERN_WARNING "tda9874a_STD parameter must be between 0 and 8. 
+Assuming 0.\n");
+               tda9874a_STD=0;
        }
 
-       if(tda9874a_AMSEL != -1) {
-               if(tda9874a_AMSEL == 0)
-                       tda9874a_NCONR = 0x01; /* auto-mute: analog mono input */
-               else if(tda9874a_AMSEL == 1)
-                       tda9874a_NCONR = 0x05; /* auto-mute: 1st carrier FM or AM */
-               else
-                       printk(KERN_WARNING "tda9874a: AMSEL parameter must be 0 or 
1.\n");
+       if((tda9874a_STD >= 0)&&(tda9874a_STD <= 8)) {
+               tda9874a_ESP = tda9874a_STD;
+               tda9874a_mode = (tda9874a_STD < 5) ? 0 : 1;
        }
 
+       if(tda9874a_AMSEL<0 || tda9874a_AMSEL>1) {
+               printk(KERN_WARNING "tda9874a: AMSEL parameter must be 0 or 1. 
+Assuming 0\n");
+               tda9874a_AMSEL=0;
+       }
+
+       if(tda9874a_AMSEL == 0)
+               tda9874a_NCONR = 0x01; /* auto-mute: analog mono input */
+       else if(tda9874a_AMSEL == 1)
+               tda9874a_NCONR = 0x05; /* auto-mute: 1st carrier FM or AM */
+
        tda9874a_setup(chip);
 
        return 0;
@@ -1358,7 +1364,7 @@
                dprintk("tvaudio: no matching chip description found\n");
                return -EIO;
        }
-       printk("tvaudio: found %s\n",desc->name);
+       printk("tvaudio: found %s @ 0x%x\n",desc->name,addr<<1);
        dprintk("tvaudio: matches:%s%s%s.\n",
                (desc->flags & CHIP_HAS_VOLUME)     ? " volume"      : "",
                (desc->flags & CHIP_HAS_BASSTREBLE) ? " bass/treble" : "",

Reply via email to