[linux-dvb] PCI problem with Twinhan Vision Plus DVB-T Clone - Where did the sub-sys/vendor ID go?

Martin Petrovsky mpetrovsky at swiftdsl.com.au
Mon Apr 3 16:17:38 CEST 2006


Hi,

I'm using a Twinhan Vision Plus DVB-T clone (VP3020) in Australia which
is being auto detected and working on one machine, but fails to be
auto-detected and work on another AMD64 machine. On both machines I'm
using the 2.6.16 kernel and I've just downloaded and applied the
hg/v4l-dvb tree on top.

The problem seams to resemble another post where the card failed to work
when inserted with another card. [Post: Twinhan Vision Plus & WinFast
DTV1000-T, Feb06 from Matt Pratt].

The symptom seams to be that the PCI Subsystem ID and Subsystem Vendor
are cleared to zero in the PCI config space of the card. See lspci -xvv
output below.

This causes a "dst_get_device_id: Write not Acknowledged!" in dst.c when
probing for the card. Here is the dmesg output 
modprobe bttv debug=8
modprobe dst verbose=8
dvb_bt8xx debug=8

dmesg output -->
Linux video capture interface: v1.00
i2c-core: driver [tveeprom] registered
bttv: driver version 0.9.16 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:03:07.0, irq: 10, latency: 32, mmio:
0xfdcff000
bttv0: using:  *** UNKNOWN/GENERIC ***  [card=0,autodetected]
bttv0: gpio: en=00000000, out=00000000 in=00fffffe [init]
i2c_adapter i2c-0: adapter [bt878 #0 [sw]] registered
i2c_adapter i2c-0: found normal entry for adapter 0, addr 0x50
i2c_adapter i2c-0: master_xfer[0] W, addr=0x50, len=0
i2c_adapter i2c-0: master_xfer[0] W, addr=0x50, len=0
i2c_adapter i2c-0: client [tveeprom] registered with bus id 0-0050
i2c_adapter i2c-0: master_xfer[0] W, addr=0x50, len=1
i2c_adapter i2c-0: master_xfer[0] R, addr=0x50, len=256
bttv0: using tuner=-1
bttv0: i2c: checking for MSP34xx @ 0x80... <7>i2c_adapter i2c-0:
master_xfer[0] R, addr=0x40, len=1
found
i2c-core: driver [msp3400] registered
i2c_adapter i2c-0: found normal entry for adapter 0, addr 0x40
i2c_adapter i2c-0: master_xfer[0] W, addr=0x40, len=0
i2c_adapter i2c-0: master_xfer[0] W, addr=0x40, len=3
i2c_adapter i2c-0: master_xfer[0] W, addr=0x40, len=3
i2c_adapter i2c-0: master_xfer[0] W, addr=0x40, len=3
i2c_adapter i2c-0: master_xfer[1] R, addr=0x40, len=2
i2c_adapter i2c-0: master_xfer[0] W, addr=0x40, len=3
i2c_adapter i2c-0: master_xfer[1] R, addr=0x40, len=2
i2c_adapter i2c-0: master_xfer[0] W, addr=0x40, len=3
i2c_adapter i2c-0: master_xfer[1] R, addr=0x40, len=2
bttv0: i2c: checking for TDA9875 @ 0xb0... <7>i2c_adapter i2c-0:
master_xfer[0] R, addr=0x58, len=1
found
i2c-core: driver [tda9875] registered
i2c_adapter i2c-0: found normal entry for adapter 0, addr 0x58
i2c_adapter i2c-0: master_xfer[0] W, addr=0x58, len=0
i2c_adapter i2c-0: master_xfer[0] W, addr=0x58, len=0
i2c_adapter i2c-0: master_xfer[0] W, addr=0x58, len=1
i2c_adapter i2c-0: master_xfer[1] R, addr=0x58, len=1
i2c_adapter i2c-0: master_xfer[0] W, addr=0x58, len=1
i2c_adapter i2c-0: master_xfer[1] R, addr=0x58, len=1
tda9875: TDA9875 Rev.0 detected at 0xb0
i2c_adapter i2c-0: master_xfer[0] W, addr=0x58, len=2
i2c_adapter i2c-0: master_xfer[0] W, addr=0x58, len=2
... repeats 34 times
tda9875: init
i2c_adapter i2c-0: client [tda9875] registered with bus id 0-0058
bttv0: i2c: checking for TDA7432 @ 0x8a... <7>i2c_adapter i2c-0:
master_xfer[0] R, addr=0x45, len=1
found
i2c-core: driver [tda7432] registered
i2c_adapter i2c-0: found normal entry for adapter 0, addr 0x45
i2c_adapter i2c-0: master_xfer[0] W, addr=0x45, len=0
i2c_adapter i2c-0: master_xfer[0] W, addr=0x45, len=10
i2c_adapter i2c-0: client [tda7432] registered with bus id 0-0045
tda7432 0-0045: chip found @ 0x8a (bt878 #0 [sw])
bttv0: i2c: checking for TDA9887 @ 0x86... <7>i2c_adapter i2c-0:
master_xfer[0] R, addr=0x43, len=1
found
i2c-core: driver [tda9887] registered
i2c_adapter i2c-0: found normal entry for adapter 0, addr 0x42
i2c_adapter i2c-0: master_xfer[0] W, addr=0x42, len=0
tda9887 0-0042: chip found @ 0x84 (bt878 #0 [sw])
i2c_adapter i2c-0: client [tda9887] registered with bus id 0-0042
i2c_adapter i2c-0: found normal entry for adapter 0, addr 0x43
i2c_adapter i2c-0: master_xfer[0] W, addr=0x43, len=0
tda9887 0-0043: chip found @ 0x86 (bt878 #0 [sw])
i2c_adapter i2c-0: client [tda9887] registered with bus id 0-0043
i2c_adapter i2c-0: found normal entry for adapter 0, addr 0x4b
i2c_adapter i2c-0: master_xfer[0] W, addr=0x4b, len=0
tda9887 0-004b: chip found @ 0x96 (bt878 #0 [sw])
i2c_adapter i2c-0: client [tda9887] registered with bus id 0-004b
bttv0: registered device video0
bttv0: registered device vbi0
i2c_adapter i2c-0: master_xfer[0] W, addr=0x42, len=4
i2c_adapter i2c-0: master_xfer[0] W, addr=0x43, len=4
i2c_adapter i2c-0: master_xfer[0] W, addr=0x4b, len=4
bt878: AUDIO driver version 0.0.0 loaded
bt878: Bt878 AUDIO function found (0).
bt878_probe: card id=[0x0],[ <NULL> ] has DVB functions.
bt878(0): Bt878 (rev 17) at 03:07.1, irq: 10, latency: 32, memory:
0xfdcfe000

Forcing the card type with card=113 tuner=4 pll=1 i2c_hw=1 does not make
much difference:

Linux video capture interface: v1.00
i2c-core: driver [tveeprom] registered
bttv: driver version 0.9.16 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:03:07.0, irq: 10, latency: 32, mmio:
0xfdcff000
bttv0: using: Twinhan DST + clones [card=113,insmod option]
bttv0: gpio: en=00000000, out=00000000 in=00fffffe [init]
i2c_adapter i2c-0: adapter [bt878 #0 [hw]] registered
bttv0: using tuner=4
i2c-core: driver [tuner] registered
bttv0: add subdevice "dvb0"
bt878: AUDIO driver version 0.0.0 loaded
bt878: Bt878 AUDIO function found (0).
bt878_probe: card id=[0x0],[ <NULL> ] has DVB functions.
bt878(0): Bt878 (rev 17) at 03:07.1, irq: 10, latency: 32, memory:
0xfdcfe000
dvb_bt8xx: identified card0 as bttv0
DVB: registering new adapter (bttv0).
rdc_8820_reset: Resetting DST
dst_gpio_outb: mask=[0004], enbb=[0004], outhigh=[0000]
dst_gpio_outb: mask=[0004], enbb=[0004], outhigh=[0004]
dst_comm_init: Initializing DST.
dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]
rdc_reset_state: Resetting state machine
dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]
dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]
writing [ 00 06 00 00 00 00 00 fa ]
i2c_adapter i2c-0: master_xfer[0] W, addr=0x55, len=8
dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]
i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=1
read_dst: reply is 0x0
dst_get_device_id: Write not Acknowledged! [Reply=0x00]
dst_probe: unknown device.
frontend_init: Could not find a Twinhan DST.
dvb-bt8xx: A frontend driver was not found for device 109e/0878
subsystem 0000/0000

I have also tried the acpi=off kernel boot param, I've updated the MB
bios, swapped the card around to different PCI slots with no avail.

Any suggestions?

Oh, here is the lspci -xvv on the stubborn machine:

0000:03:07.0 Multimedia video controller: Brooktree Corporation Bt878
Video Capture (rev 11)
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (4000ns min, 10000ns max)
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at fdcff000 (32-bit, prefetchable) [size=4K]
        Capabilities: <available only to root>
00: 9e 10 6e 03 06 00 90 02 11 00 00 04 00 20 80 00
10: 08 f0 cf fd 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <-- No Sub Sys
ID/VEND
30: 00 00 00 00 44 00 00 00 00 00 00 00 0a 01 10 28

0000:03:07.1 Multimedia controller: Brooktree Corporation Bt878 Audio
Capture (rev 11)
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (1000ns min, 63750ns max)
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at fdcfe000 (32-bit, prefetchable) [size=4K]
        Capabilities: <available only to root>
00: 9e 10 78 08 06 00 90 02 11 00 80 04 00 20 80 00
10: 08 e0 cf fd 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <-- No Sub-Sys
ID/VEND
30: 00 00 00 00 44 00 00 00 00 00 00 00 0a 01 04 ff




And on the machine it works on : 



        Subsystem: Twinhan Technology Co. Ltd VisionPlus DVB card
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
        Latency: 32 (4000ns min, 10000ns max)
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at e7007000 (32-bit, prefetchable) [size=4K]
        Capabilities: <available only to root>
00: 9e 10 6e 03 06 00 90 82 11 00 00 04 00 20 80 00
10: 08 70 00 e7 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 18 01 00   <--- There you are
30: 00 00 00 00 44 00 00 00 00 00 00 00 0b 01 10 28

0000:00:0a.1 Multimedia controller: Brooktree Corporation Bt878 Audio
Capture (rev 11)
        Subsystem: Twinhan Technology Co. Ltd VisionPlus DVB Card
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR+
        Latency: 32 (1000ns min, 63750ns max)
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at e7004000 (32-bit, prefetchable) [size=4K]
        Capabilities: <available only to root>
00: 9e 10 78 08 06 00 90 82 11 00 80 04 00 20 80 00
10: 08 40 00 e7 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 18 01 00   <--- There you are
30: 00 00 00 00 44 00 00 00 00 00 00 00 0b 01 04 ff


Thanks,

Martin P.




More information about the linux-dvb mailing list