Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Nov 2005 23:43:05 +0000
From:      Danny Pansters <danny@ricin.com>
To:        freebsd-multimedia@freebsd.org
Subject:   Bktr on FreeBSD-6.0: Hauppauge WinCast/TV (Bt878) card detection is broken.
Message-ID:  <200511052343.06171.danny@ricin.com>

next in thread | raw e-mail | index | archive | help
--Boundary-00=_KOUbDDCuo4BWdQN
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Card details:

Hauppauge WinTV, year 2000
Tuner: WinTV PAL-B/G-I 44354 Rev A242
Capture: Conexant Bt878KHF

This is when using the module (with or without setting sysctls) on 6.0, 
clearly the detection is wrong, tv apps fail:

bktr_mem: memory holder loaded
bktr0: <BrookTree 878> mem 0xdfefe000-0xdfefefff irq 19 at device 3.0 on pci6
bktr0: [GIANT-LOCKED]
bktr0: Warning - card vendor 0x0272 (model 0x13eb) unknown.
bktr0: Pinnacle/Miro TV, Temic NTSC tuner, remote control.

This is when card and tuner are overridden in kernel on 6.0, now the driver 
shows the correct things, but doesn't seem to use them because tv apps still 
fail:

bktr0: <BrookTree 878> mem 0xdfefe000-0xdfefefff irq 19 at device 3.0 on pci6
bktr0: [GIANT-LOCKED]
bktr0: Hauppauge WinCast/TV, Philips FR1216 PAL FM tuner, msp3400c stereo, 
remote control.

This is when using the module (no sysctls needed) on a 5.3-RELEASE test box (I 
know I've used this card succesfully on 5.3) it's correct:

bktr_mem: memory holder loaded
bktr0: <BrookTree 878> mem 0xef000000-0xef000fff at device 13.0 on pci2
bktr0: [GIANT-LOCKED]
bktr0: Hauppauge Model 44354 A242
bktr0: Detected a MSP3415D-B3 at 0x80
bktr0: Hauppauge WinCast/TV, Philips FR1216 PAL FM tuner, msp3400c stereo, 
remote control.

So for my WinTV card bktr is (was) broken on 6.0. Anyone else seen this? I 
have the feeling that it's the EEPROM telling bktr unexpected things. There's 
no vendor 0x0272 in pci_vendors, it must be 0x0070, Hauppauge.

In 5.3 could it be using PCI register, not EEPROM, for detection of this card?

Dumb workaround I'm using now (with module, no sysctls set) attached.

--Boundary-00=_KOUbDDCuo4BWdQN
Content-Type: text/x-diff;
  charset="us-ascii";
  name="bktr_card.c.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="bktr_card.c.diff"

--- bktr_card.c.orig	Sat Nov  5 18:51:41 2005
+++ bktr_card.c	Sat Nov  5 18:56:46 2005
@@ -593,6 +593,7 @@
 #define PCI_VENDOR_IODATA	0x10fc
 #define PCI_VENDOR_PINNACLE_ALT	0xBD11	/* They got their own ID backwards? */
 #define PCI_VENDOR_PINNACLE_NEW	0x11BD
+#define PCI_VENDOR_HAUPPAUGE_ALT	0x0272
 
 #define MODEL_IODATA_GV_BCTV3_PCI	0x4020
 
@@ -685,7 +686,8 @@
 		    goto checkTuner;
 		}
 
-		if (subsystem_vendor_id == PCI_VENDOR_HAUPPAUGE) {
+		if ((subsystem_vendor_id == PCI_VENDOR_HAUPPAUGE)
+		 || (subsystem_vendor_id == PCI_VENDOR_HAUPPAUGE_ALT)) {
 		    bktr->card = cards[ (card = CARD_HAUPPAUGE) ];
 		    bktr->card.eepromAddr = eeprom_i2c_address;
 		    bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);

--Boundary-00=_KOUbDDCuo4BWdQN--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511052343.06171.danny>