1 .. SPDX-License-Identifier: GPL-2.0 2 3 The bttv driver 4 =============== 5 6 bttv and sound mini howto 7 ------------------------- 8 9 There are a lot of different bt848/849/878/879 based boards available. 10 Making video work often is not a big deal, because this is handled 11 completely by the bt8xx chip, which is common on all boards. But 12 sound is handled in slightly different ways on each board. 13 14 To handle the grabber boards correctly, there is a array tvcards[] in 15 bttv-cards.c, which holds the information required for each board. 16 Sound will work only, if the correct entry is used (for video it often 17 makes no difference). The bttv driver prints a line to the kernel 18 log, telling which card type is used. Like this one:: 19 20 bttv0: model: BT848(Hauppauge old) [autodetected] 21 22 You should verify this is correct. If it isn't, you have to pass the 23 correct board type as insmod argument, ``insmod bttv card=2`` for 24 example. The file Documentation/admin-guide/media/bttv-cardlist.rst has a list 25 of valid arguments for card. 26 27 If your card isn't listed there, you might check the source code for 28 new entries which are not listed yet. If there isn't one for your 29 card, you can check if one of the existing entries does work for you 30 (just trial and error...). 31 32 Some boards have an extra processor for sound to do stereo decoding 33 and other nice features. The msp34xx chips are used by Hauppauge for 34 example. If your board has one, you might have to load a helper 35 module like ``msp3400`` to make sound work. If there isn't one for the 36 chip used on your board: Bad luck. Start writing a new one. Well, 37 you might want to check the video4linux mailing list archive first... 38 39 Of course you need a correctly installed soundcard unless you have the 40 speakers connected directly to the grabber board. Hint: check the 41 mixer settings too. ALSA for example has everything muted by default. 42 43 44 How sound works in detail 45 ~~~~~~~~~~~~~~~~~~~~~~~~~ 46 47 Still doesn't work? Looks like some driver hacking is required. 48 Below is a do-it-yourself description for you. 49 50 The bt8xx chips have 32 general purpose pins, and registers to control 51 these pins. One register is the output enable register 52 (``BT848_GPIO_OUT_EN``), it says which pins are actively driven by the 53 bt848 chip. Another one is the data register (``BT848_GPIO_DATA``), where 54 you can get/set the status if these pins. They can be used for input 55 and output. 56 57 Most grabber board vendors use these pins to control an external chip 58 which does the sound routing. But every board is a little different. 59 These pins are also used by some companies to drive remote control 60 receiver chips. Some boards use the i2c bus instead of the gpio pins 61 to connect the mux chip. 62 63 As mentioned above, there is a array which holds the required 64 information for each known board. You basically have to create a new 65 line for your board. The important fields are these two:: 66 67 struct tvcard 68 { 69 [ ... ] 70 u32 gpiomask; 71 u32 audiomux[6]; /* Tuner, Radio, external, internal, mute, stereo */ 72 }; 73 74 gpiomask specifies which pins are used to control the audio mux chip. 75 The corresponding bits in the output enable register 76 (``BT848_GPIO_OUT_EN``) will be set as these pins must be driven by the 77 bt848 chip. 78 79 The ``audiomux[]`` array holds the data values for the different inputs 80 (i.e. which pins must be high/low for tuner/mute/...). This will be 81 written to the data register (``BT848_GPIO_DATA``) to switch the audio 82 mux. 83 84 85 What you have to do is figure out the correct values for gpiomask and 86 the audiomux array. If you have Windows and the drivers four your 87 card installed, you might to check out if you can read these registers 88 values used by the windows driver. A tool to do this is available 89 from http://btwincap.sourceforge.net/download.html. 90 91 You might also dig around in the ``*.ini`` files of the Windows applications. 92 You can have a look at the board to see which of the gpio pins are 93 connected at all and then start trial-and-error ... 94 95 96 Starting with release 0.7.41 bttv has a number of insmod options to 97 make the gpio debugging easier: 98 99 ================= ============================================== 100 bttv_gpio=0/1 enable/disable gpio debug messages 101 gpiomask=n set the gpiomask value 102 audiomux=i,j,... set the values of the audiomux array 103 audioall=a set the values of the audiomux array (one 104 value for all array elements, useful to check 105 out which effect the particular value has). 106 ================= ============================================== 107 108 The messages printed with ``bttv_gpio=1`` look like this:: 109 110 bttv0: gpio: en=00000027, out=00000024 in=00ffffd8 [audio: off] 111 112 en = output _en_able register (BT848_GPIO_OUT_EN) 113 out = _out_put bits of the data register (BT848_GPIO_DATA), 114 i.e. BT848_GPIO_DATA & BT848_GPIO_OUT_EN 115 in = _in_put bits of the data register, 116 i.e. BT848_GPIO_DATA & ~BT848_GPIO_OUT_EN
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.