patch(bttv-0.7.105) new cards: hercules smart tv stereo, pace tv and radio

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



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" : "",

[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux