Brooktree Bt878: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(→‎External links: add a working link to the old datasheet; minor info adjustment)
Line 45: Line 45:


== External links ==
== External links ==
* [ Bt878 datasheet]
* [http://www.datasheetcatalog.com/datasheets_pdf/B/T/8/7/BT878.shtml Bt878 datasheet]
* [http://www.domenech.org/bt878a-adc/index-e.htm "Analog to Digital Converter with 16 bits and 448000 Samples per second based in the Bt878A"] has some detailed information about the 878 pinout and how to use it to collect arbitrary analog data.
* [http://www.domenech.org/bt878a-adc/index-e.htm "Analog to Digital Converter with 16 bits and 448000 Samples per second based in the Bt878A"] has some detailed information about the 878A pinout, that should also apply to the 878, and how to use it to collect arbitrary analog data.


[[Category:Chipsets]]
[[Category:Chipsets]]

Revision as of 17:23, 22 January 2012

A PCI interface chipset from Brooktree that provides video decoder functionality.

It is supported under Linux by the bttv kernel driver module.

Overview/Features

The Bt87x chip family were the direct successors of the popular Bt848 family of ICs, and were used by many analog cards produced in the later part of the 1990's; which collectively help constitute the Bttv devices categorization.

Brooktree Heritage

When Brooktree was purchased by Rockwell Semiconductor Systems, the IC family continued to be referred to simply as Bt87x. However, Rockwell Semiconductor Systems was subsequently spun off from its parent company a few years later, and, under the new Conexant Systems, Inc. banner, the ICs would begin to be rebranded in marketing literature as being part of Conexant's Fusion family -- i.e. they started to become referred to as the Fusion Bt878 and Fusion Bt879.

When Conexant would later expand its Fusion lineup with an updated version of the Bt878, the "Bt" part was no longer included in the newer product's nomenclature, and, instead, was released simply as the Fusion 878A.

Hardware Features

The Bt87x chip's design is largely based upon the Bt848A video decoder but are upgraded to also include several audio capture capabilities (summarized in the table below and discussed in further detail later on).

Bt87x decoder family comparison
Featured Bt878 Bt849A
All of Bt848A's features (i.e. Composite, S-Video multi-standard
Video Decoder and PCI bus master)
Yes Yes
Teletext support Yes Yes
TV Audio Yes
mono
Yes
stereo
Audio in Yes
mono
Yes
stereo ?
FM Radio - Yes
stereo


Note: This section below needs to be edited -- It may be mixing the feature sets of the 878 & 878A; remove first person; bias etc.

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.

It has a pretty nice programmable DMA engine. You basically build a very simple RISC program (very RISC - has about 8 instructions) that copies data between the BT848 and your RAM. 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...)

It supports both 'software' and 'hardware' I²C Protocols. Software means that you write to the SCL & SDA lines directly and the CPU/driver has to time everything itself. Hardware means you give it a byte or two to read/write and it goes away and does that and gets back to you with an interrupt when it's done. Unfortunately the hardware I²C does not support writing just one byte (the address byte but no data) so you cannot do safe write or read probes of I²C client addresses (it could confuse an I²C client that does not have sub addresses - e.g. a PLL).

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.

External links