| 1 | Kernel driver `bt869.o' |
|---|
| 2 | ====================== |
|---|
| 3 | |
|---|
| 4 | Status: 'Beta' and needs further development and testing |
|---|
| 5 | |
|---|
| 6 | Supported chips: |
|---|
| 7 | * Brooktree BT869 Video Modulator chips |
|---|
| 8 | Prefix: 'bt869' |
|---|
| 9 | Addresses scanned: I2C 0x44 - 0x45 |
|---|
| 10 | Datasheet: Publicly available at the brooktree web site |
|---|
| 11 | (www.brooktree.com) |
|---|
| 12 | |
|---|
| 13 | Author: Frodo Looijaard <frodol@dds.nl>, Philip Edelbrock |
|---|
| 14 | <phil@netroedge.com>, Ralph Metzler <rjkm@thp.uni-koeln.de> |
|---|
| 15 | Steve Davies <steve@daviesfam.org> added the 720x576 and |
|---|
| 16 | 720x480 support, and the svideo configuration. |
|---|
| 17 | |
|---|
| 18 | Main Contact: Philip Edelbrock <phil@netroedge.com> |
|---|
| 19 | |
|---|
| 20 | Module Parameters |
|---|
| 21 | ----------------- |
|---|
| 22 | * force: short array (min = 1, max = 48) |
|---|
| 23 | List of adapter,address pairs to boldly assume to be present |
|---|
| 24 | * force_bt869: short array (min = 1, max = 48) |
|---|
| 25 | List of adapter,address pairs which are unquestionably assumed to contain |
|---|
| 26 | a `bt869' chip |
|---|
| 27 | * ignore: short array (min = 1, max = 48) |
|---|
| 28 | List of adapter,address pairs not to scan |
|---|
| 29 | * ignore_range: short array (min = 1, max = 48) |
|---|
| 30 | List of adapter,start-addr,end-addr triples not to scan |
|---|
| 31 | * probe: short array (min = 1, max = 48) |
|---|
| 32 | List of adapter,address pairs to scan additionally |
|---|
| 33 | * probe_range: short array (min = 1, max = 48) |
|---|
| 34 | List of adapter,start-addr,end-addr triples to scan additionally |
|---|
| 35 | |
|---|
| 36 | |
|---|
| 37 | Description |
|---|
| 38 | ----------- |
|---|
| 39 | |
|---|
| 40 | This driver provides some access to the Brooktree bt869 found on some |
|---|
| 41 | video cards (like the 'Voodoo3 3000'). Typically, the output can be |
|---|
| 42 | either an s-video connection or composite video. Resolutions |
|---|
| 43 | supported using the chip's built in configurations are 640x480 or |
|---|
| 44 | 800x600. In addition, a 720x576 PAL mode and a 720x480 NTSC mode, |
|---|
| 45 | both without overscan compensation, are supported - a convenient |
|---|
| 46 | configuration for video playback. |
|---|
| 47 | |
|---|
| 48 | Other possible implementations may allow for double resolutions with some |
|---|
| 49 | decimations (e.g., a monitor running at 1280x960 but the TV out getting every |
|---|
| 50 | other pixel for 640x480). |
|---|
| 51 | |
|---|
| 52 | |
|---|
| 53 | Driver Features |
|---|
| 54 | --------------- |
|---|
| 55 | Standards: (US) NTSC or PAL |
|---|
| 56 | Resolutions: 640x480, 800x600, 720x576 (PAL only), 720x480 (NTSC only) |
|---|
| 57 | Depths: 16, 24 or 32 bits |
|---|
| 58 | Colorbars: Switch on the built-in color bar generator. (FYI- using a blue |
|---|
| 59 | filter, you should see only alternating bright stripes of equal brightness. |
|---|
| 60 | Adjust your TV's color and saturation if this isn't the case.) |
|---|
| 61 | SVideo: composite or s-video output. Also, theoretically, RGB output, though |
|---|
| 62 | this isn't tested and will require that your card presents all three DAC outputs |
|---|
| 63 | (the 3dfx Voodoo3 doesn't) |
|---|
| 64 | |
|---|
| 65 | In your XF86Config file, you should have these entries for NTSC output: |
|---|
| 66 | |
|---|
| 67 | ModeLine "640x480NTSC" 28.195793 640 656 658 784 480 520 525 600 |
|---|
| 68 | ModeLine "720x480NTSC" 27.5 720 744 800 872 480 483 485 525 |
|---|
| 69 | ModeLine "800x600NTSC" 38.769241 800 812 814 880 600 646 649 735 |
|---|
| 70 | |
|---|
| 71 | or for PAL |
|---|
| 72 | |
|---|
| 73 | ModeLine "640x480PAL" 29.50 640 675 678 944 480 530 535 625 |
|---|
| 74 | ModeLine "720x576PAL" 27.50 720 744 800 880 576 581 583 625 |
|---|
| 75 | ModeLine "800x600PAL" 36.00 800 818 820 960 600 653 655 750 |
|---|
| 76 | |
|---|
| 77 | Also, don't forget to add these modes to the resolutions list in the |
|---|
| 78 | 'screen' sections of XF86Config. You can change modes on the fly in X by |
|---|
| 79 | pressing (usually) ctrl-alt-+ or ctrl-alt-(minus) with + and - being the |
|---|
| 80 | keys on your numeric 10-key pad. |
|---|
| 81 | |
|---|
| 82 | BTW- My monitor doesn't like these entries very much, and as I've read: |
|---|
| 83 | don't run your monitor out of spec or else it will burst into fire. So, |
|---|
| 84 | having the monitor turned on while in any of these modes is at your own |
|---|
| 85 | risk. (I've never heard of a monitor breaking from this, but it seems to |
|---|
| 86 | be fashionable to warn about it.) |
|---|
| 87 | |
|---|
| 88 | |
|---|
| 89 | Chip Features |
|---|
| 90 | ------------- |
|---|
| 91 | The chip is very flexible and customizable for many standards. Right |
|---|
| 92 | now the driver sticks with the chip's built in NTSC and PAL standards, |
|---|
| 93 | with the addition of the 720x576PAL and 720x480NTSC modes. It also |
|---|
| 94 | does some other wacky stuff like closed-captioning, Macro-vision |
|---|
| 95 | copy-protection, and other things. Check out the datasheet for more |
|---|
| 96 | info. |
|---|
| 97 | |
|---|
| 98 | |
|---|
| 99 | Issues |
|---|
| 100 | ------ |
|---|
| 101 | The depth register doesn't seem to do much? If you have troubles or |
|---|
| 102 | aren't sure the output is working, turn the color-bars on. If they display |
|---|
| 103 | OK, then the chip is syncing correctly. The next thing to try is the depth |
|---|
| 104 | setting. Lastly, turning off your computer and back on with your TV |
|---|
| 105 | connected but you monitor not, may force the video card to configure and |
|---|
| 106 | use the BT869 as your primary output device (all bets are off once X is |
|---|
| 107 | started). Let me know if you have problems which you can't figure out |
|---|
| 108 | (phil@netroedge.com). |
|---|
| 109 | |
|---|
| 110 | -------------------------------- |
|---|
| 111 | |
|---|
| 112 | On May 3rd, 2001 (My birthday, as it happens to be :') Tomi Ollila sent me |
|---|
| 113 | a how-to from a user's perspective on using the BT869 with a 3Dfx card. |
|---|
| 114 | It should also provide insight for other video card users who have a |
|---|
| 115 | BT869 on board. Here is his document: |
|---|
| 116 | |
|---|
| 117 | |
|---|
| 118 | How-To |
|---|
| 119 | ------ |
|---|
| 120 | |
|---|
| 121 | |
|---|
| 122 | This text describes my successful attempt to eventually get the TV-Out |
|---|
| 123 | feature of 3DFX Voodoo 3 3000 (PAL) working in a Linux environment. |
|---|
| 124 | I've successfully configured the 800x600 mode -- And currently I am |
|---|
| 125 | not interested in 640x480 -- hardware scaling rules in all cases |
|---|
| 126 | I need the tv-out. My monitor works much less worse w/ 800x600PAL... |
|---|
| 127 | |
|---|
| 128 | All the information is based on my best knowledge but there might be |
|---|
| 129 | some mistakes. In any case, THE ENTIRE RISK OF USING THIS INFORMATION |
|---|
| 130 | IS WITH YOU, AND NO ONE ELSE IS LIABLE OF ANY PROBLEMS ENCOUNTERED. |
|---|
| 131 | Please fix any mistakes, inaccuracies, writing errors, etc. you |
|---|
| 132 | notice in this document. |
|---|
| 133 | |
|---|
| 134 | I was about to write briefly, but sorry due to limited resources |
|---|
| 135 | I did not have time to write briefly (too much thinking ;). |
|---|
| 136 | Well, browse through the text and skip all irrelevant parts |
|---|
| 137 | to proceed... |
|---|
| 138 | |
|---|
| 139 | Tomi Ollila <too@iki.fi> |
|---|
| 140 | |
|---|
| 141 | |
|---|
| 142 | The first time I got the the tv-out working I was working w/ Linux kernel |
|---|
| 143 | 2.4.3. Now I am redoing the work w/ Linux 2.4.4 and recording the steps |
|---|
| 144 | in this document. Description of my system and software used is as follows: |
|---|
| 145 | |
|---|
| 146 | RedHat 7.0 linux distribution (probably any distribution will do, since |
|---|
| 147 | all of the needed software is compiled from packages that are not RH-pagkaged) |
|---|
| 148 | (maybe if anything is important, are modutils-2.3.14-3 and kernel-headers-2.4.0-0.26) |
|---|
| 149 | |
|---|
| 150 | XFree-4.0.3. I don't see any reason anyone uses any older. HW acceleration |
|---|
| 151 | of Voodoo3 3000 works out of the box with this. Also Windowed!!! |
|---|
| 152 | |
|---|
| 153 | lm_sensors-2.5.5: Get this or newer. I have not used any older. |
|---|
| 154 | |
|---|
| 155 | i2c-2.5.5: Probably 2.4.x -kernel distributions has recent enough version |
|---|
| 156 | of i2c. Since I also have IOmega BUZ and it's (working) versions require |
|---|
| 157 | i2c-old, I cannot use the one's kernel provided. Since I cannot say anything |
|---|
| 158 | about not using this i2c as separate package I suggest you do the same |
|---|
| 159 | and compile this also. |
|---|
| 160 | |
|---|
| 161 | I have used kgcc that comes in RedHat 7.0 -distribution to compile all |
|---|
| 162 | stuff. Probably all other recent gcc -compilers will produce good results |
|---|
| 163 | also: kgcc -v outputs: |
|---|
| 164 | Reading specs from /usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/specs |
|---|
| 165 | gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) |
|---|
| 166 | |
|---|
| 167 | -- |
|---|
| 168 | |
|---|
| 169 | 1) The work starts w/ kernel compilation (or skip to step 2, I quess it will |
|---|
| 170 | work w/ any recent 2.2 and 2.4 -kernels) |
|---|
| 171 | |
|---|
| 172 | # run make config, make menuconfig or make xconfig (I suggest 'xconfig') |
|---|
| 173 | |
|---|
| 174 | For sure you need kernel module support and /proc -filesystem support |
|---|
| 175 | (XXX add more absolute requirements) |
|---|
| 176 | |
|---|
| 177 | Now I cannot say for sure, if following things needs to be compiled |
|---|
| 178 | at kernel compilation time or does i2c-2.5.5 bring all these: |
|---|
| 179 | character devices->i2c support->i2c support |
|---|
| 180 | character devices->i2c support->i2c bit-banging interfaces (*) |
|---|
| 181 | character devices->i2c support->i2c devices (**) |
|---|
| 182 | character devices->/dev/agpart support |
|---|
| 183 | character devices->Direct Rendering Manager (XFree86 DRI support) (+) |
|---|
| 184 | character devices->3dfx banshee/Voodoo3+ |
|---|
| 185 | |
|---|
| 186 | make above as modules. |
|---|
| 187 | |
|---|
| 188 | (*) I already forgot why I wanted some special attention for this |
|---|
| 189 | (**) It seems I never need this |
|---|
| 190 | (+) Hmm, It seems I have compiled this as part of the kernel binary |
|---|
| 191 | |
|---|
| 192 | There is of course lot of other options you need to choose but these |
|---|
| 193 | are probably the ones needed... |
|---|
| 194 | |
|---|
| 195 | # run make dep |
|---|
| 196 | # run make bzImage |
|---|
| 197 | # run make modules |
|---|
| 198 | # run make modules_install (as root) |
|---|
| 199 | # copy arch/i386/boot/bzImage to /boot/vmlinuz-2.4.4 (as root) |
|---|
| 200 | # edit /etc/lilo.conf and run lilo (as root) |
|---|
| 201 | |
|---|
| 202 | 2) In order to (the most easiest way) compile separate i2c and lm_sensors |
|---|
| 203 | -package, symlink your linux source tree to /usr/src/linux (unless it is |
|---|
| 204 | there already) and do the following |
|---|
| 205 | |
|---|
| 206 | # tar zxvf i2c-2.5.5.tar.gz |
|---|
| 207 | # cd i2c-2.5.5 |
|---|
| 208 | # make |
|---|
| 209 | # make install (as root) |
|---|
| 210 | # cd .. |
|---|
| 211 | # tar zxvf lm_sensors-2.5.5.tar.gz |
|---|
| 212 | # cd lm_sensors-2.5.5 |
|---|
| 213 | # make |
|---|
| 214 | # make install (as root) |
|---|
| 215 | # cd .. |
|---|
| 216 | |
|---|
| 217 | Now you have all necessary modules installed on the system (and |
|---|
| 218 | /usr/local/bin/sensors and /usr/local/sbin/sensors-detect). |
|---|
| 219 | |
|---|
| 220 | But there is some configuration missing in order to activate |
|---|
| 221 | the needed functionality of the modules... |
|---|
| 222 | |
|---|
| 223 | 3) Now, before going any further, let's take a look the modifications that |
|---|
| 224 | is required in XFree86 -configuration so that X is ready for the |
|---|
| 225 | tv-out functionality next time it is started. |
|---|
| 226 | |
|---|
| 227 | XFree86-4.x uses the configuration file /etc/X11/XF86Config-4. Older |
|---|
| 228 | configuration files needed "ModeLine"s for all display resolutions |
|---|
| 229 | that are needed, but XFree86 version 4 can figure out those by itself. |
|---|
| 230 | But what it cannot figure out, are some special ModeLines that may |
|---|
| 231 | be reguired in various cases... and this is one of these. |
|---|
| 232 | |
|---|
| 233 | For Voodoo 3 3000 TV out feature, special modelines are needed for |
|---|
| 234 | the supported resolutions, 640x480 and 800x600 (there might be others |
|---|
| 235 | but I don't know enough of the issue. In this document, I only |
|---|
| 236 | activate the 800x600 mode. |
|---|
| 237 | |
|---|
| 238 | Make backup copy of your /etc/X11/XF86Config-4 in case you accidentally |
|---|
| 239 | screw something up so you can then reuse the old file if this happens. |
|---|
| 240 | |
|---|
| 241 | Open /etc/X11/XF86Config-4 in your favourite editor and find line |
|---|
| 242 | that contains `Section "Monitor"'. At the end of that section, |
|---|
| 243 | just before line `EndSection', add the following lines: |
|---|
| 244 | |
|---|
| 245 | ModeLine "640x480PAL" 29.50 640 675 678 944 480 530 535 625 |
|---|
| 246 | ModeLine "800x600PAL" 36.00 800 818 820 960 600 653 655 750 |
|---|
| 247 | |
|---|
| 248 | Then, find lines that starts with something like: |
|---|
| 249 | |
|---|
| 250 | Section "Screen" |
|---|
| 251 | Identifier "Screen0" |
|---|
| 252 | Device "3Dfx Interactive, Inc.|Voodoo 3" |
|---|
| 253 | Monitor "<Your monitor>" |
|---|
| 254 | DefaultDepth 16 |
|---|
| 255 | ... |
|---|
| 256 | Subsection "Display" |
|---|
| 257 | Depth 16 |
|---|
| 258 | # Modes "1024x768" "640x480" "800x600" "800x600PAL" #"400x300" |
|---|
| 259 | Modes "1024x768" "800x600PAL" |
|---|
| 260 | EndSubSection |
|---|
| 261 | |
|---|
| 262 | Make sure that `DefaultDepth' is set 16 (I don't know if any other works) |
|---|
| 263 | Then you notice there my resolutions as `Modes' -lines. I have outcommented |
|---|
| 264 | the first `Modes' -line so that testing is easier. You can do what |
|---|
| 265 | you widh here, just make sure to add that `"800x600PAL"' -line there. |
|---|
| 266 | Save the file and exit editor. |
|---|
| 267 | |
|---|
| 268 | |
|---|
| 269 | 4) It's is time to reboot (with new kernel), that is the easiest way to |
|---|
| 270 | continue. |
|---|
| 271 | |
|---|
| 272 | 5) After rebooting, and X startup `lsmod' in my machine output following: |
|---|
| 273 | Module Size Used by |
|---|
| 274 | tdfx 54536 1 |
|---|
| 275 | es1371 28500 0 |
|---|
| 276 | ac97_codec 8808 0 [es1371] |
|---|
| 277 | |
|---|
| 278 | tdfx -module was loaded by X, and sound module by some RH -startup script. |
|---|
| 279 | |
|---|
| 280 | Now you could run /usr/local/sbin/sensors-detect. After that was run in |
|---|
| 281 | my PII class -machine it suggested I add the following: |
|---|
| 282 | |
|---|
| 283 | to /etc/modules.conf |
|---|
| 284 | alias char-major-89 i2c-dev |
|---|
| 285 | |
|---|
| 286 | to some startup script (i choose append to /etc/rc.local) |
|---|
| 287 | # I2C adapter drivers |
|---|
| 288 | /sbin/modprobe i2c-piix4 |
|---|
| 289 | /sbin/modprobe i2c-voodoo3 |
|---|
| 290 | # I2C chip drivers |
|---|
| 291 | /sbin/modprobe w83781d |
|---|
| 292 | /sbin/modprobe eeprom |
|---|
| 293 | |
|---|
| 294 | (you run the prg and add the stuff it suggests) |
|---|
| 295 | |
|---|
| 296 | Let's now /sbin/modprobe -v i2c-voodoo3. Now I have: |
|---|
| 297 | |
|---|
| 298 | Module Size Used by |
|---|
| 299 | i2c-voodoo3 3012 0 (unused) |
|---|
| 300 | i2c-algo-bit 7796 2 [i2c-voodoo3] |
|---|
| 301 | i2c-core 12844 0 [i2c-algo-bit] |
|---|
| 302 | tdfx 54536 1 |
|---|
| 303 | es1371 28500 0 |
|---|
| 304 | ac97_codec 8808 0 [es1371] |
|---|
| 305 | |
|---|
| 306 | I think this is the only one of the above that is required for the task. |
|---|
| 307 | (If that is not true, I'll revise this text and you never know I though |
|---|
| 308 | such a thing) |
|---|
| 309 | |
|---|
| 310 | Now, turn on your TV set (unless it is already open) and make sure it |
|---|
| 311 | is getting (either s-video or composite... I personally have only |
|---|
| 312 | tested composite) input from your voodoo3 card. Don't change any |
|---|
| 313 | screen resolution just yet... |
|---|
| 314 | |
|---|
| 315 | You notice the tv set screen is still blank. Changing screen resolutions |
|---|
| 316 | won't do any change on that, don't bother trying. |
|---|
| 317 | |
|---|
| 318 | So, how to continue from there. The answer was found looking through |
|---|
| 319 | all the files that are found with zsh command line in lm_sensors dir: |
|---|
| 320 | grep -i voodoo3 **/*(.) | less |
|---|
| 321 | The file doc/chips/bt869 contains interesting information, with it |
|---|
| 322 | and some other information I found somewhere else, don't remember |
|---|
| 323 | either, I did: |
|---|
| 324 | |
|---|
| 325 | modprobe -v bt869 (or insmod /lib/modules/2.x.x/misc/bt869) |
|---|
| 326 | |
|---|
| 327 | NOW! you should see some noise on your TV-Set screen. |
|---|
| 328 | |
|---|
| 329 | and `lsmod' returns (on my machine) |
|---|
| 330 | |
|---|
| 331 | Module Size Used by |
|---|
| 332 | bt869 5392 0 (unused) |
|---|
| 333 | i2c-voodoo3 3012 0 (unused) |
|---|
| 334 | sensors 6140 0 [bt869] |
|---|
| 335 | i2c-algo-bit 7796 2 [i2c-voodoo3] |
|---|
| 336 | i2c-core 12844 0 [bt869 sensors i2c-algo-bit] |
|---|
| 337 | tdfx 54536 1 |
|---|
| 338 | es1371 28500 0 |
|---|
| 339 | ac97_codec 8808 0 [es1371] |
|---|
| 340 | |
|---|
| 341 | If you now try to change mode to `800x600PAL' The noise pattern just |
|---|
| 342 | changes. That's because there are various parameters for bt869 to |
|---|
| 343 | make it operate in different systems. |
|---|
| 344 | |
|---|
| 345 | The configuration entries for bt869 live somewhere in `proc' filesystem |
|---|
| 346 | and since it is so hard to remember, the following commands helps out: |
|---|
| 347 | |
|---|
| 348 | # find /proc -name "bt869*" -print |
|---|
| 349 | |
|---|
| 350 | In my system that output: /proc/sys/dev/sensors/bt869-i2c-0-44. Since |
|---|
| 351 | the last few characters may be different on your system I'll use... |
|---|
| 352 | |
|---|
| 353 | # ls /proc/sys/dev/sensors/bt869* ... and this outputs: |
|---|
| 354 | |
|---|
| 355 | colorbars: Output colorbars instead of display data. Default `0'. |
|---|
| 356 | depth: Display depth. Seems to be `16' on my system. |
|---|
| 357 | half: No idea. Default `0'. |
|---|
| 358 | ntsc: 1: use NTSC, 0: use PAL. Default: `1'. |
|---|
| 359 | res; Screen resolution to use. Defaut: `640 480'. |
|---|
| 360 | status: Outputs some status info I do not know what that is. |
|---|
| 361 | |
|---|
| 362 | For me, in order to get TV sync with incoming signal (or is it Voodoo3 |
|---|
| 363 | that needs syncing), I first put colorbars on, and when I get colorbars |
|---|
| 364 | visible I shut colorbars off -- and then I have part of my 1024x768 |
|---|
| 365 | displayed on TV-screen. Normal WIMP screen doesn't look so nice, but |
|---|
| 366 | games, pictures, etc. Looks just fine. And HW acceleration rules. |
|---|
| 367 | |
|---|
| 368 | Do the following to achieve this: |
|---|
| 369 | |
|---|
| 370 | # echo 1 > /proc/sys/dev/sensors/bt869*/colorbars |
|---|
| 371 | # echo 0 > /proc/sys/dev/sensors/bt869*/ntsc |
|---|
| 372 | # echo 800 600 > /proc/sys/dev/sensors/bt869*/res |
|---|
| 373 | |
|---|
| 374 | Press ctrl-alt-num_keypad_+ |
|---|
| 375 | |
|---|
| 376 | Now you should see vertical colorbars on your TV-Set |
|---|
| 377 | |
|---|
| 378 | # echo 0 > /proc/sys/dev/sensors/bt869*/colorbars |
|---|
| 379 | |
|---|
| 380 | Now (part of) your computer display should be visible on your TV-Set. |
|---|
| 381 | |
|---|
| 382 | |
|---|
| 383 | ... Ok, I did just that... after ctrl-alt-num_keypad_+ I did not get |
|---|
| 384 | synchronized colorbar output visible on my TV. So, at this time I |
|---|
| 385 | re-did... |
|---|
| 386 | |
|---|
| 387 | # echo 1 > /proc/sys/dev/sensors/bt869*/colorbars |
|---|
| 388 | |
|---|
| 389 | ... and got colorbars, and ... |
|---|
| 390 | |
|---|
| 391 | # echo 0 > /proc/sys/dev/sensors/bt869*/colorbars |
|---|
| 392 | |
|---|
| 393 | ... got my computer display visible on my TV. |
|---|
| 394 | |
|---|
| 395 | |
|---|
| 396 | #EOF |
|---|
| 397 | |
|---|