Brooktree Bt878: Difference between revisions
(+The BTTV HOWTO) |
m (→Audio Support: its a chip feature, not a card feature; moved to more relevant position in description) |
||
(41 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
A [[PCI interface chipsets|PCI interface chipset]] from [[Brooktree Corporation|Brooktree]] that provides video decoder functionality. |
|||
The "bttv" kernel module talks to BT878 and several related chips, which are used on video cards from many manufacturers. |
|||
It is supported under Linux by the [[bttv]] kernel driver module. |
|||
⚫ | |||
==Overview/Features== |
|||
Started off life as a good old analogue audio+video chip in the [[BT848]] days, used by stacks of different cards (just look at video4linux). 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 MPEG2 transport stream. |
|||
The Bt87x chip family were the direct successors of the popular [[Brooktree Bt848|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 (bt848, bt878)|Bttv devices]] categorization. |
|||
===Brooktree Heritage=== |
|||
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 [[SAA7146]]-based DVB PCI card designs this chipset misuses the analog video input of the chip to sample the [[MPEG2 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. |
|||
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 [[Conexant Fusion 878A|Fusion 878A]]. |
|||
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 i2c 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...) |
|||
⚫ | |||
⚫ | |||
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). |
|||
{| class="wikitable" |
|||
''We should mention here that i2c probing on a per-address basis is inale since most DVB i2c devices have configurable i2c addresses (not to mention that the basic i2c spec only allows 7-bit addresses, so in theory only 127 different devices would be allowed on the market). unfortunately Linux kernel-i2c folks and their addicted fans don't really like the idea of direct access to the i2c Bus like it is common in [[STB]]s 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 [[I2c Protocol]] Specification of the kernel-i2c 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.'' |
|||
|+'''Bt87x decoder family comparison''' |
|||
|- |
|||
! Featured !! Bt878 !! Bt849A |
|||
|- |
|||
| All of Bt848A's features (i.e. Composite, S-Video multi-standard <br> Video Decoder and PCI bus master) || {{Yes}} || {{Yes}} |
|||
|- |
|||
| Teletext support || {{Yes}} || {{Yes}} |
|||
|- |
|||
| Audio in || {{Yes}} <br> mono || {{Yes}} <br> mono |
|||
|- |
|||
| TV Audio || {{Yes}} <br> mono || {{Yes}} <br> stereo |
|||
|- |
|||
| FM Radio || - || {{Yes}} <br> stereo |
|||
|} |
|||
After the [[Brooktree Corporation]] had been aquired by [[Conexant Systems, Inc.]], a version of this chip called ''Conexant Fusion 878'' has been released. |
|||
The Bt878 A/V decoder is a multi-function PCI device; having both a video and audio function that feature direct memory access (DMA)/PCI bus master support. ('function' is a PCI term ... most PCI devices have only one of them...) |
|||
== Driver == |
|||
{{Note|In Linux, the two available PCI functions for the chip are illustrated by the output of the lspci command, whereby one should be returned something like: |
|||
0000:03:04.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11) |
|||
0000:03:04.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11) |
|||
}} |
|||
The DMA controller architecture design could be described as a small and pretty nice programmable RISC engine. Essenitally, you basically build into the device driver software a very simple [[wikipedia:Reduced_instruction_set_computing|RISC]] program (very RISC - has about 8 instructions) that copies data between the BT848 and your RAM. 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, while the I²S bus is only available via the audio function. |
|||
⚫ | The chip supports both 'software' and 'hardware' [[I²C Protocol]]s. 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]]). |
||
The dvb-bt8xx driver conflicts with the ALSA snd-bt78x driver. |
|||
===Audio Support=== |
|||
⚫ | |||
The bt878 and bt879 (the latter no longer in production) include a high-frequency Analog to Digital Converter, supporting both 8 and 16 bits audio at 448000 samples per second, for capturing broadcast audio, as well as line level and mic input sources. In addition, the chips also feature a digital audio interface. |
|||
The chips have a digital audio packetizer and FIFO buffer for DMA audio transport across the PCI bus to the host PC. |
|||
* [http://tldp.org/HOWTO/BTTV/index.html The BTTV HOWTO:] how to configure and use a video tuner card based on the popular Bt848 and Bt878 chipsets within the Linux operating system. |
|||
====Analog Audio==== |
|||
The bt878 audio ADC has three inputs - STV (Sound TV), SML (Sound Mic/Line), and SFM (Sound FM), though the FM input would be relevant only to the 879 chip. |
|||
On the 878 datasheet, the relevant pins are 94, 98, and 100. |
|||
These ADC pins serve the following functions: |
|||
<table padding="5" border="1" cellpadding="5"> |
|||
<tr> <td> Pin </td> <td> Signal </td> <td> I/O </td> <td> Description </td></tr> |
|||
<tr> <td> 100 </td> <td> STV </td> <td> I </td><td> TV sound input from TV tuner. </td> </tr> |
|||
<tr> <td> 98 </td> <td> SFM </td> <td> I </td><td> FM sound input from FM tuner. </td> </tr> |
|||
<tr> <td> 94 </td> <td> SML </td> <td> I </td><td> MIC/line input. </td> </tr> |
|||
</table> |
|||
====Digital Audio==== |
|||
The digital audio interface consists of three input pins: ADATA, ALRCK, and |
|||
ASCLK. Pins 87-89 |
|||
This interface can be used to capture 16-bit I²S style digital audio or generic non-continuous packet synchronized data |
|||
<table padding="5" border="1" cellpadding="5"> |
|||
<tr> <td> Pin </td> <td> Signal </td> <td> I/O </td> <td> Description </td></tr> |
|||
<tr> <td> 89 </td> <td> ASCLK </td> <td> I/O </td> <td> (Audio Serial Clock) Bit serial clock. </td> </tr> |
|||
<tr> <td> 88 </td> <td> ALRCK </td> <td> I/O </td> <td> (Audio Clock) Left/right framing clock. </td> </tr> |
|||
<tr> <td> 87 </td> <td> ADATA </td> <td> I/O </td> <td> (Audio data) Bit serial data. </td> </tr> |
|||
</table> |
|||
⚫ | |||
* [http://www.datasheetcatalog.com/datasheets_pdf/B/T/8/7/BT878.shtml Bt878 datasheet] |
|||
** [http://www.datasheetarchive.com/Bt878KHF-datasheet.html An available errata document] |
|||
* [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 and how to use it to collect arbitrary analog data .. the information should also apply to the 878 in regards to page's discussion |
|||
⚫ | |||
[[Category:Decoder]] |
[[Category:Decoder]] |
||
⚫ |
Latest revision as of 05:42, 25 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).
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 |
Audio in | ✔ Yes mono |
✔ Yes mono |
TV Audio | ✔ Yes mono |
✔ Yes stereo |
FM Radio | - | ✔ Yes stereo |
The Bt878 A/V decoder is a multi-function PCI device; having both a video and audio function that feature direct memory access (DMA)/PCI bus master support. ('function' is a PCI term ... most PCI devices have only one of them...)
0000:03:04.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11) 0000:03:04.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
The DMA controller architecture design could be described as a small and pretty nice programmable RISC engine. Essenitally, you basically build into the device driver software a very simple RISC program (very RISC - has about 8 instructions) that copies data between the BT848 and your RAM. 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, while the I²S bus is only available via the audio function.
The chip 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).
Audio Support
The bt878 and bt879 (the latter no longer in production) include a high-frequency Analog to Digital Converter, supporting both 8 and 16 bits audio at 448000 samples per second, for capturing broadcast audio, as well as line level and mic input sources. In addition, the chips also feature a digital audio interface.
The chips have a digital audio packetizer and FIFO buffer for DMA audio transport across the PCI bus to the host PC.
Analog Audio
The bt878 audio ADC has three inputs - STV (Sound TV), SML (Sound Mic/Line), and SFM (Sound FM), though the FM input would be relevant only to the 879 chip.
On the 878 datasheet, the relevant pins are 94, 98, and 100. These ADC pins serve the following functions:
Pin | Signal | I/O | Description |
100 | STV | I | TV sound input from TV tuner. |
98 | SFM | I | FM sound input from FM tuner. |
94 | SML | I | MIC/line input. |
Digital Audio
The digital audio interface consists of three input pins: ADATA, ALRCK, and ASCLK. Pins 87-89 This interface can be used to capture 16-bit I²S style digital audio or generic non-continuous packet synchronized data
Pin | Signal | I/O | Description |
89 | ASCLK | I/O | (Audio Serial Clock) Bit serial clock. |
88 | ALRCK | I/O | (Audio Clock) Left/right framing clock. |
87 | ADATA | I/O | (Audio data) Bit serial data. |
External links
- Bt878 datasheet
- "Analog to Digital Converter with 16 bits and 448000 Samples per second based in the Bt878A" has some detailed information about the 878A pinout and how to use it to collect arbitrary analog data .. the information should also apply to the 878 in regards to page's discussion