Patch[bttv-0.7.98]: Quartzsight/Bt832 detect, 3Dfx Voodoo100 etc.

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



Hi, this patch adds:

* Support 3Dfx VoodooTV 100 (which is an STB OEM card) [PCI-Subsystem ID 121A:3060] (untested)
* more Cards
* Detect and Hexdump Bt832 for Quartzsight Digital Camera, as found on Pixelview Rev. 4E
   (TODO: make it work!)

Gerd, please apply, as further help on quartzsight would be appreciated.

Do you have any sample code for Bt848/Bt878 setup to interface
to a digital quartzsight camera in YUV or YCrCb?

Regards, Gunther
diff -Nur bttv-0.7.98/Cards bttv0798/Cards
--- bttv-0.7.98/Cards	Fri Sep 13 11:26:16 2002
+++ bttv0798/Cards	Sat Sep 14 18:32:15 2002
@@ -327,12 +327,43 @@
 
    PCB      PCI-ID      Model-Name      Eeprom  Tuner  Sound    Country
    --------------------------------------------------------------------
-   M1A8-A      --       AVer TV-Phone           FM1216  --
+   M101.C   ISA !
+   M108-B      Bt848                     --     FR1236		 US   (2),(3)
+   M1A8-A      Bt848    AVer TV-Phone           FM1216  --
    M168-T   1461:0003   AVerTV Studio   48:17   FM1216 TDA9840T  D    (1) w/FM w/Remote
    M168-U   1461:0004   TVCapture98     40:11   FI1216   --      D    w/Remote
    M168II-B 1461:0003   Medion MD9592   48:16   FM1216 TDA9873H  D    w/FM
 
    (1) Daughterboard MB68-A with TDA9820T and TDA9840T
+   (2) Sony NE41S soldered (stereo sound?)
+   (3) Daughterboard M118-A w/ pic 16c54 and 4 MHz quartz
+ 
+   US site has different drivers for (as of 09/2002):
+   EZ Capture/InterCam PCI (BT-848 chip)
+   EZ Capture/InterCam PCI (BT-878 chip)
+   TV-Phone (BT-848 chip)
+   TV98 (BT-848 chip)
+   TV98 With Remote (BT-848 chip)
+   TV98 (BT-878 chip)
+   TV98 With Remote (BT-878)
+   TV/FM98 (BT-878 chip)
+   AVerTV
+   AverTV Stereo
+   AVerTV Studio
+
+   DE hat diverse Treiber fuer diese Modelle (Stand 09/2002):
+   TVPhone (848) mit Philips tuner FR12X6 (w/ FM radio)
+   TVPhone (848) mit Philips tuner FM12X6 (w/ FM radio)
+   TVCapture (848) w/Philips tuner FI12X6
+   TVCapture (848) non-Philips tuner
+   TVCapture98 (Bt878)
+   TVPhone98 (Bt878)
+   AVerTV und TVCapture98 w/VCR (Bt 878)
+   AVerTVStudio und TVPhone98 w/VCR (Bt878)
+   AVerTV GO Serie (Kein SVideo Input)
+   AVerTV98 (BT-878 chip)
+   AVerTV98 mit Fernbedienung (BT-878 chip)
+   AVerTV/FM98 (BT-878 chip)
 
 Aimslab
 -------
@@ -384,7 +415,7 @@
    Mediafocus I (zr36120/zr36125, drp3510, Sat. analog + ADR Radio)
    Mediafocus II (saa7146, Sat. analog)
          SatADR Rev 2.1 (saa7146a, saa7113h, stv0056a, msp3400c, drp3510a, BSKE3-307A)
-   SkyStar 1 DVB  (AV7110)
+   SkyStar 1 DVB  (AV7110) = Technotrend Premium
    SkyStar 2 DVB  (B2C2) (=Sky2PC)
 
 Siemens
@@ -513,8 +544,10 @@
 
 STB
 ---
-   TV PCI (Temic4032FY5, tda9850??)
-   other variants?
+   STB bt878 == Gateway 6000704 
+   STB Gateway 6000699 (bt848)
+   STB Gateway 6000402 (bt848)
+   STB TV130 PCI
 
 Videologic
 ----------
@@ -525,6 +558,16 @@
 ------------
    TT-SAT PCI (PCB "Sat-PCI Rev.:1.3.1"; zr36125, vpx3225d, stc0056a, Tuner:BSKE6-155A
    TT-DVB-Sat
+    This card is sold as OEM from:
+	Siemens DVB-s Card
+	Hauppauge WinTV DVB-S
+	Technisat SkyStar 1 DVB
+	Galaxis DVB Sat
+    Now this card is called TT-PCline Premium Family
+   TT-Budget
+    This card is sold as OEM from:
+	Hauppauge WinTV Nova
+	Satelco Standard PCI (DVB-S)
    TT-DVB-C PCI
 
 Teles
@@ -564,10 +607,13 @@
 Hauppauge
 ---------
    many many WinTV models ...
-   WinTV DVBs
-   WinTV NOVA
+   WinTV DVBs = Tehcnotrend Premium
+   WinTV NOVA = Technotrend Budget
    WinTV NOVA-CI
    WinTV-Nexus-s
+   WinTV PVR
+   WinTV PVR 250
+   WinTV PVR 450
 
 Matrix-Vision
 -------------
@@ -656,6 +702,10 @@
 Satelco
 -------
    TV-FM =KNC1 saa7134
+   Standard PCI (DVB-S) = Technotrend Budget
+   Standard PCI (DVB-S) w/ CI
+   Satelco Hoghend PCI (DVB-S) = Technotrend Premium
+
 
 Sensoray www.sensoray.com
 --------
@@ -690,3 +740,13 @@
 www.sknet-web.co.jp
 -------------------
    SKnet Monster TV (saa7134)
+
+A-Max www.amaxhk.com (Colormax, Amax, Napa)
+-------------------
+   APAC Viewcomp 878
+
+Cybertainment
+-------------
+   CyberMail AV Video Email Kit w/ PCI Capture Card (capture only)
+   CyberMail Xtreme
+  These are Flyvideo
diff -Nur bttv-0.7.98/Changes bttv0798/Changes
--- bttv-0.7.98/Changes	Fri Sep 13 11:26:16 2002
+++ bttv0798/Changes	Sun Sep 15 21:25:22 2002
@@ -1,3 +1,10 @@
+bttv-0.7.99
+-----------
+ * Support 3Dfx VoodooTV 100 (which is an STB OEM card) [PCI-Subsystem ID 121A:3060]
+ * more Cards
+ * Detect and Hexdump Bt832 for Quartzsight Digital Camera, as found on Pixelview Rev. 4E
+    (TODO: make it work!)
+
 bttv-0.7.98
 -----------
  * Support and autodetect Terratec Active Radio Upgrade (TEA5757,OM5610,Matchbox).
diff -Nur bttv-0.7.98/driver/Make.config bttv0798/driver/Make.config
--- bttv-0.7.98/driver/Make.config	Wed Sep 11 12:54:07 2002
+++ bttv0798/driver/Make.config	Sat Sep 14 20:22:30 2002
@@ -6,7 +6,7 @@
 
 obj-m		:= tuner.o tvaudio.o tvmixer.o \
 		   msp3400.o tda7432.o tda9875.o tda9887.o dpl3518.o \
-		   pci-reserve.o
+		   pci-reserve.o bt832.o
 
 # conditional stuff
 ifneq ($(VERSION).$(PATCHLEVEL),2.5)
diff -Nur bttv-0.7.98/driver/bt832.c bttv0798/driver/bt832.c
--- bttv-0.7.98/driver/bt832.c	Thu Jan  1 01:00:00 1970
+++ bttv0798/driver/bt832.c	Sun Sep 15 21:14:33 2002
@@ -0,0 +1,249 @@
+/* Driver for Bt832 CMOS Camera Video Processor
+    i2c-adresses: 0x88 or 0x8a
+
+  The BT832 interfaces to a Quartzsight Digital Camera (352x288, 25 or 30 fps)
+  via a 9 pin connector ( 4-wire SDATA, 2-wire i2c, SCLK, VCC, GND).
+  It outputs an 8-bit 4:2:2 YUV or YCrCb video signal which can be directly
+  connected to bt848/bt878 GPIO pins on this purpose.
+  (see: VLSI Vision Ltd. www.vvl.co.uk for camera datasheets)
+  
+  Supported Cards:
+  -  Pixelview Rev.4E: 0x8a
+		GPIO 0x400000 toggles Bt832 RESET, and the chip changes to i2c 0x88 !
+
+  (c) Gunther Mayer, 2002
+
+  STATUS:
+  - detect chip and hexdump
+  - reset chip and leave low power mode
+  - detect camera present
+
+  TODO:
+  - make it work (find correct setup for Bt832 and Bt878)
+*/
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/i2c.h>
+#include <linux/types.h>
+#include <linux/videodev.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/slab.h>
+
+#include "id.h"
+#include "audiochip.h"
+#include "bttv.h"
+#include "bt832.h"
+
+    
+
+/* Addresses to scan */
+static unsigned short normal_i2c[] = {I2C_CLIENT_END};
+static unsigned short normal_i2c_range[] = {I2C_BT832_ALT1>>1,I2C_BT832_ALT2>>1,I2C_CLIENT_END};
+static unsigned short probe[2]        = { I2C_CLIENT_END, I2C_CLIENT_END };
+static unsigned short probe_range[2]  = { I2C_CLIENT_END, I2C_CLIENT_END };
+static unsigned short ignore[2]       = { I2C_CLIENT_END, I2C_CLIENT_END };
+static unsigned short ignore_range[2] = { I2C_CLIENT_END, I2C_CLIENT_END };
+static unsigned short force[2]        = { I2C_CLIENT_END, I2C_CLIENT_END };
+static struct i2c_client_address_data addr_data = {
+	normal_i2c, normal_i2c_range, 
+	probe, probe_range, 
+	ignore, ignore_range, 
+	force
+};
+
+/* ---------------------------------------------------------------------- */
+
+#define dprintk     if (debug) printk
+
+static int bt832_detach(struct i2c_client *client);
+
+
+static struct i2c_driver driver;
+static struct i2c_client client_template;
+
+struct bt832 {
+        struct i2c_client client;
+};
+
+int bt832_hexdump(struct i2c_client *i2c_client_s, unsigned char *buf)
+{
+	int i,rc;
+	buf[0]=0x80; // start at register 0 with auto-increment
+        if (1 != (rc = i2c_master_send(i2c_client_s,buf,1)))
+                printk("bt832: i2c i/o error: rc == %d (should be 1)\n",rc);
+
+        for(i=0;i<65;i++)
+                buf[i]=0;
+        if (65 != (rc=i2c_master_recv(i2c_client_s,buf,65)))
+                printk("bt832: i2c i/o error: rc == %d (should be 65)\n",rc);
+
+        // Note: On READ the first byte is the current index
+        //  (e.g. 0x80, what we just wrote)
+
+        if(1) {
+                int i;
+                printk("BT832 hexdump:\n");
+                for(i=1;i<65;i++) {
+			if(i!=1) {
+			  if(((i-1)%8)==0) printk(" ");
+                          if(((i-1)%16)==0) printk("\n");
+			}
+                        printk(" %02x",buf[i]);
+                }
+                printk("\n");
+        }
+	return 0;
+}
+
+// Return: 1 (is a bt832), 0 (No bt832 here)
+int bt832_init(struct i2c_client *i2c_client_s)
+{
+	unsigned char *buf;
+	int rc;
+
+	buf=kmalloc(65,GFP_KERNEL);
+	bt832_hexdump(i2c_client_s,buf);
+	
+	if(buf[0x40] != 0x31) {
+		printk("bt832: this i2c chip is no bt832 (id=%02x). Detaching.\n",buf[0x40]);
+		kfree(buf);
+		return 0;
+	}
+
+	// Leave low power mode:
+	printk("Bt832: leave low power mode.\n");
+	buf[0]=BT832_CAM_SETUP0; //0x39 57
+	buf[1]=0x08;
+	if (2 != (rc = i2c_master_send(i2c_client_s,buf,2)))
+                printk("bt832: i2c i/o error: rc == %d (should be 2)\n",rc);
+
+	printk("Bt832: Camera Present: %s\n",
+		(buf[1+BT832_CAM_STATUS] & BT832_56_CAMERA_PRESENT) ? "yes":"no");
+		
+
+	kfree(buf);
+	return 1;
+}
+
+
+
+static int bt832_attach(struct i2c_adapter *adap, int addr,
+			  unsigned short flags, int kind)
+{
+	struct bt832 *t;
+
+	printk("bt832_attach\n");
+
+        client_template.adapter = adap;
+        client_template.addr    = addr;
+
+        printk("bt832: chip found @ 0x%x\n", addr<<1);
+
+        if (NULL == (t = kmalloc(sizeof(*t), GFP_KERNEL)))
+                return -ENOMEM;
+	memset(t,0,sizeof(*t));
+	t->client = client_template;
+        t->client.data = t;
+        i2c_attach_client(&t->client);
+
+	MOD_INC_USE_COUNT;
+	if(! bt832_init(&t->client)) {
+		bt832_detach(&t->client);
+		return -1;
+	}
+        
+	return 0;
+}
+
+static int bt832_probe(struct i2c_adapter *adap)
+{
+	int rc;
+
+	printk("bt832_probe\n");
+
+	switch (adap->id) {
+	case I2C_ALGO_BIT | I2C_HW_B_BT848:
+	case I2C_ALGO_BIT | I2C_HW_B_RIVA:
+	case I2C_ALGO_SAA7134:
+		printk("bt832: probing %s i2c adapter [id=0x%x]\n",
+		       adap->name,adap->id);
+		rc = i2c_probe(adap, &addr_data, bt832_attach);
+		break;
+	default:
+		printk("bt832: ignoring %s i2c adapter [id=0x%x]\n",
+		       adap->name,adap->id);
+		rc = 0;
+		/* nothing */
+	}
+	return rc;
+}
+
+static int bt832_detach(struct i2c_client *client)
+{
+	struct bt832 *t = (struct bt832*)client->data;
+
+	printk("bt832: detach.\n");
+	i2c_detach_client(client);
+	kfree(t);
+	MOD_DEC_USE_COUNT;
+	return 0;
+}
+
+static int
+bt832_command(struct i2c_client *client, unsigned int cmd, void *arg)
+{
+	struct bt832 *t = (struct bt832*)client->data;
+
+	printk("bt832: command %x\n",cmd);
+
+        switch (cmd) {
+		case BT832_HEXDUMP: {
+			unsigned char *buf;
+			buf=kmalloc(65,GFP_KERNEL);
+			bt832_hexdump(&t->client,buf);
+			kfree(buf);
+		}
+		break;
+		case BT832_REATTACH:
+			printk("bt832: re-attach\n");
+			i2c_del_driver(&driver);
+			i2c_add_driver(&driver);
+		break;
+	}
+	return 0;
+}
+
+/* ----------------------------------------------------------------------- */
+
+static struct i2c_driver driver = {
+        name:           "i2c bt832 driver",
+        id:             -1, /* FIXME */
+        flags:          I2C_DF_NOTIFY,
+        attach_adapter: bt832_probe,
+        detach_client:  bt832_detach,
+        command:        bt832_command,
+};
+static struct i2c_client client_template =
+{
+        name:   "bt832",
+	flags:  I2C_CLIENT_ALLOW_USE,
+        driver: &driver,
+};
+
+
+int bt832_init_module(void)
+{
+	i2c_add_driver(&driver);
+	return 0;
+}
+
+static void bt832_cleanup_module(void)
+{
+	i2c_del_driver(&driver);
+}
+
+module_init(bt832_init_module);
+module_exit(bt832_cleanup_module);
+
diff -Nur bttv-0.7.98/driver/bt832.h bttv0798/driver/bt832.h
--- bttv-0.7.98/driver/bt832.h	Thu Jan  1 01:00:00 1970
+++ bttv0798/driver/bt832.h	Sun Sep 15 20:49:25 2002
@@ -0,0 +1,114 @@
+/* Bt832 CMOS Camera Video Processor (VP)
+
+ The Bt832 CMOS Camera Video Processor chip connects a Quartsight CMOS 
+  color digital camera directly to video capture devices via an 8-bit,
+  4:2:2 YUV or YCrCb video interface.
+
+ i2c adresses: 0x88 or 0x8a
+ */
+
+/* The 64 registers: */
+
+// Input Processor
+#define BT832_OFFSET 0
+#define BT832_RCOMP	1
+#define BT832_G1COMP	2
+#define BT832_G2COMP	3
+#define BT832_BCOMP	4
+// Exposures:
+#define BT832_FINEH	5
+#define BT832_FINEL	6
+#define BT832_COARSEH	7
+#define BT832_COARSEL   8
+#define BT832_CAMGAIN	9
+// Main Processor:
+#define BT832_M00	10
+#define BT832_M01	11
+#define BT832_M02	12
+#define BT832_M10	13
+#define BT832_M11	14
+#define BT832_M12	15
+#define BT832_M20	16
+#define BT832_M21	17
+#define BT832_M22	18
+#define BT832_APCOR	19
+#define BT832_GAMCOR	20
+// Level Accumulator Inputs
+#define BT832_VPCONTROL2	21
+#define BT832_ZONECODE0	22
+#define BT832_ZONECODE1	23
+#define BT832_ZONECODE2	24
+#define BT832_ZONECODE3	25
+// Level Accumulator Outputs:
+#define BT832_RACC	26
+#define BT832_GACC	27
+#define BT832_BACC	28
+#define BT832_BLACKACC	29
+#define BT832_EXP_AGC	30
+#define BT832_LACC0	31
+#define BT832_LACC1	32
+#define BT832_LACC2	33
+#define BT832_LACC3	34
+#define BT832_LACC4	35
+#define BT832_LACC5	36
+#define BT832_LACC6	37
+#define BT832_LACC7	38
+// System:
+#define BT832_VP_CONTROL0	39
+#define BT832_VP_CONTROL1	40
+#define BT832_THRESH	41
+#define BT832_VP_TESTCONTROL0	42
+#define BT832_VP_DMCODE	43
+#define BT832_ACB_CONFIG	44
+#define BT832_ACB_GNBASE	45
+#define BT832_ACB_MU	46
+#define BT832_CAM_TEST0	47
+#define BT832_AEC_CONFIG	48
+#define BT832_AEC_TL	49
+#define BT832_AEC_TC	50
+#define BT832_AEC_TH	51
+// Status:
+#define BT832_VP_STATUS	52
+#define BT832_VP_LINECOUNT	53
+#define BT832_CAM_DEVICEL	54 // e.g. 0x19
+#define BT832_CAM_DEVICEH	55 // e.g. 0x40  == 0x194 Mask0, 0x194 = 404 decimal (VVL-404 camera)
+#define BT832_CAM_STATUS		56
+ #define BT832_56_CAMERA_PRESENT 0x20
+//Camera Setups:
+#define BT832_CAM_SETUP0	57
+#define BT832_CAM_SETUP1	58
+#define BT832_CAM_SETUP2	59
+#define BT832_CAM_SETUP3	60
+// System:
+#define BT832_DEFCOR		61
+#define BT832_VP_TESTCONTROL1	62
+#define BT832_DEVICE_ID		63
+# define BT832_DEVICE_ID__31		0x31 // Bt832 has ID 0x31
+
+/* STMicroelectronivcs VV5404 camera module 
+   i2c: 0x20: sensor address
+   i2c: 0xa0: eeprom for ccd defect map
+ */
+#define VV5404_device_h		0x00  // 0x19
+#define VV5404_device_l		0x01  // 0x40
+#define VV5404_status0		0x02
+#define VV5404_linecountc	0x03 // current line counter
+#define VV5404_linecountl	0x04
+#define VV5404_setup0		0x10
+#define VV5404_setup1		0x11
+#define VV5404_setup2		0x12
+#define VV5404_setup4		0x14
+#define VV5404_setup5		0x15
+#define VV5404_fine_h		0x20  // fine exposure
+#define VV5404_fine_l		0x21
+#define VV5404_coarse_h		0x22  //coarse exposure
+#define VV5404_coarse_l		0x23
+#define VV5404_gain		0x24 // ADC pre-amp gain setting
+#define VV5404_clk_div		0x25
+#define VV5404_cr		0x76 // control register
+#define VV5404_as0		0x77 // ADC setup register
+
+
+// IOCTL
+#define BT832_HEXDUMP   _IOR('b',1,int)
+#define BT832_REATTACH	_IOR('b',2,int)
diff -Nur bttv-0.7.98/driver/bttv-cards.c bttv0798/driver/bttv-cards.c
--- bttv-0.7.98/driver/bttv-cards.c	Fri Sep 13 13:41:17 2002
+++ bttv0798/driver/bttv-cards.c	Sun Sep 15 21:21:16 2002
@@ -37,6 +37,7 @@
 
 #include "bttvp.h"
 #include "tuner.h"
+#include "bt832.h"
 
 /* fwd decl */
 static void boot_msp34xx(struct bttv *btv, int pin);
@@ -147,6 +148,7 @@
 	{ 0x001c11bd, BTTV_PINNACLE,      "Pinnacle PCTV Sat" },
 
 	{ 0x3000121a, BTTV_VOODOOTV_FM,   "3Dfx VoodooTV FM/ VoodooTV 200" },
+	{ 0x3060121a, BTTV_STB2,	  "3Dfx VoodooTV 100/ STB OEM" },
 	
 	{ 0x3000144f, BTTV_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" },
 	{ 0x3002144f, BTTV_MAGICTVIEW061, "(Askey Magic/others) TView99 CPH05x" },
@@ -720,7 +722,7 @@
 },{
 
 /* ---- card 0x28 ---------------------------------- */
-	name:		"STB TV PCI FM, Gateway P/N 6000704 (bt878)",
+	name:		"STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100",
 	video_inputs:	3,
 	audio_inputs:	1,
 	tuner:		0,
@@ -866,8 +868,9 @@
 		GPIO19: U4.A1
 		GPIO20: U5.A1 (second hef4052bt)
 		GPIO21: U4.nEN
+		GPIO22: BT832 Reset Line
 		GPIO23: A5,A0, U5,nEN
-	   Note: At i2c=0x8a is a Bt832 chip (currently misdected as some tda chip!)
+	   Note: At i2c=0x8a is a Bt832 chip, which changes to 0x88 after being reset via GPIO22
 	 */
 },{
 	name:           "Eagle Wireless Capricorn2 (bt878A)",
@@ -1616,10 +1619,16 @@
 		terratec_active_radio_upgrade(btv);
 		break;
 	case BTTV_MAGICTVIEW061:
-		if (btv->cardid == 0x4002144f) {
+		if (btv->cardid == 0x3002144f) {
 			btv->has_radio=1;
 			printk("bttv%d: radio detected by subsystem id (CPH05x)\n",btv->nr);
 		}
+	case BTTV_STB2:
+               if (btv->cardid == 0x3060121a) {
+		// Fix up entry for 3DFX VoodooTV 100, which is an OEM STB card variant.
+                        btv->has_radio=0;
+                       btv->tuner_type=TUNER_TEMIC_NTSC;
+                }
 		break;
 	}
 
@@ -1672,6 +1681,32 @@
 	if (bttv_tvcards[btv->type].audio_hook)
 		btv->audio_hook=bttv_tvcards[btv->type].audio_hook;
 
+	/* detect Bt832 chip for quartzsight digital camera */
+	if((bttv_I2CRead(btv, I2C_BT832_ALT1, "Bt832") >=0) ||
+	   (bttv_I2CRead(btv, I2C_BT832_ALT2, "Bt832") >=0)) {
+		int outbits,databits;
+		request_module("bt832");
+
+		bttv_call_i2c_clients(btv, BT832_HEXDUMP, NULL);
+
+		printk("Reset Bt832 (0x400000 for Pixelview 4E)\n");
+		btwrite(0, BT848_GPIO_DATA);
+		outbits = btread(BT848_GPIO_OUT_EN);
+		databits= btread(BT848_GPIO_DATA);
+		btwrite(0x400000, BT848_GPIO_OUT_EN);
+		udelay(5);
+		btwrite(0x400000, BT848_GPIO_DATA);
+        	udelay(5);
+		btwrite(0, BT848_GPIO_DATA);
+		udelay(5);
+		btwrite(outbits, BT848_GPIO_OUT_EN);
+		btwrite(databits, BT848_GPIO_DATA);
+
+		// bt832 on pixelview changes from i2c 0x8a to 0x88 after
+		// being reset as above. So we must follow by this:
+		bttv_call_i2c_clients(btv, BT832_REATTACH, NULL);
+	}	
+
 	/* try to detect audio/fader chips */
 	if (!bttv_tvcards[btv->type].no_msp34xx &&
 	    bttv_I2CRead(btv, I2C_MSP3400, "MSP34xx") >=0) {
diff -Nur bttv-0.7.98/driver/bttv.h bttv0798/driver/bttv.h
--- bttv-0.7.98/driver/bttv.h	Fri Sep 13 11:26:16 2002
+++ bttv0798/driver/bttv.h	Sun Sep 15 18:15:28 2002
@@ -96,6 +96,8 @@
 /* i2c address list */
 #define I2C_TSA5522        0xc2
 #define I2C_TDA7432        0x8a
+#define I2C_BT832_ALT1	   0x88
+#define I2C_BT832_ALT2	   0x8a // alternate setting
 #define I2C_TDA8425        0x82
 #define I2C_TDA9840        0x84
 #define I2C_TDA9850        0xb6 /* also used by 9855,9873 */
diff -Nur bttv-0.7.98/tools/detect.c bttv0798/tools/detect.c
--- bttv-0.7.98/tools/detect.c	Fri Sep 13 11:26:16 2002
+++ bttv0798/tools/detect.c	Sun Sep 15 21:18:32 2002
@@ -25,7 +25,9 @@
     { 0x34, "Hauppauge IR (pic16c54 external)" },
     { 0x80, "msp34xx/tea6300 sound processor" },
     { 0x82, "TDA8425 audio chip" },
-    { 0x86, "TDA9885/TDA9886/TDA9887 tv and sound demodulator" }
+    { 0x86, "TDA9885/TDA9886/TDA9887 tv and sound demodulator" },
+    { 0x88, "Bt832" },
+    { 0x8a, "TDA7432 or BT832" },
     { 0xa0, "eeprom (bt878, Hauppauge-848)" },
     { 0xb6, "TDA9850/TDA9873/etc. audio chip" },
     { 0xc0, "tuner" },

[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