Conexant Fusion 878A

It is supported under Linux by the bttv and associated kernel driver modules.

Overview/Features

An updated version of the former Bt878 chipset (which, upon coming under the Conexant banner, was also sometimes known or referred to as the Fusion Bt878). With the newer Fusion 878A's release, the "Bt" (for Brooktree) was dropped from the product nomenclature. Conexant also refers to the 878A chip by the part number CX25878.

One of the updates that the 878A features is the inclusion of support for the handling of MPEG2 TS used by DVB/DTV services.

Note: Output from the lspci command is slightly misleading in that it identifies the 878A chipset by name of the Bt878 chipset, e.g.:

However, the Bt878 name should be reserved for the older chips which only supported analog applications and lacked facilities for digital TV applications. In other words, if you have a 878-based digital TV device, you can be certain that the chip is actually the Fusion 878A, and not the older Bt878

When DVB came along, I guess the manufacturers of the TV cards were used to working with this chip so the digital audio input interface was co-opted to take the MPEG-2 transport stream.

Like the Philips SAA7146 based DVB PCI card designs, this chipset misuses the analog video input of the chip to sample the MPEG-2 Transport Stream in video lines of the framebuffer, programming this is kind of a pain. The original idea behind it was that when you had a window obscured on your display, or you wanted to crop a bit of the input image, you could build a RISC program that just copied the parts of the video lines you wanted, and thus not waste any PCI bandwidth.

The BT878 provides one function each for Video and Audio onto the PCI bus. The two functions have different memory mappings although they have many similar registers - e.g. the I²C bus is only available via the video function and the DVB stream is only available via the audio function. ('function' is a PCI term ... most PCI devices have only one of them...)

We should mention here that I²C probing on a per-address basis is inale since most DVB I²C devices have configurable I²C addresses (not to mention that the basic I²C spec only allows 7-bit addresses, so in theory only 127 different devices would be allowed on the market). unfortunately Linux kernel-I²C folks and their addicted fans don't really like the idea of direct access to the I²C Bus like it is common in STBs and mobile devices. So this "missing feature" or "bug" of the BT878 is not really a chip design flaw but more a misinterpretation of the I²C Protocol Specification of the kernel-I²C folks that had been the cause of some mail threads fought with religious persuasion in the past. See the relevant section in Philosophy and holy Wars or check the linux-dvb mailing list archives.