1svgalib.mach32(7)             Svgalib User Manual            svgalib.mach32(7)
2
3
4

NAME

6       svgalib.mach32 - Information on the Mach32 chipset driver
7
8

TABLE OF CONTENTS

10        0. Introduction
11        1. Specifying pixel clocks
12        2. Copyrights
13        3. The mach32info utility
14        4. Third party cards
15        5. Logical linewidth
16        6. Noisy video signals
17        7. The configuration EEPROM
18        8. EEPROM woes
19        9. The Mach32Eeprom command
20       10. Setup of the memory aperture (linear framebuffer)
21       11. Accelerator support and other weird features
22       12. Ramdacs
23       13. Meaning of the detection message from svgalib
24       14. Conclusions
25
26

0. INTRODUCTION

28       The  driver  should allow you to use any of the graph-modes your Mach32
29       card supports. Note that there is no support for <8bpp modes and that I
30       won't  ever implement that because I don't see any reason for doing so.
31       All standard VGA-modes are supported, of course (by using the  standard
32       VGA driver routines).
33
34       If  you configured your Mach32 for a memory aperture and it is at least
35       as big as the memory of your card (that is, not a 1MB  memory  aperture
36       for  a  2MB  card) support for linear frame buffer access of svgalib is
37       given.
38
39       Auto detection of the Mach32 seems not to work  on  all  cards.  That's
40       really  strange since I got the code from the X people. It should be OK
41       regardless of my docs. Well, I fixed that (hopefully). Actually the bug
42       was  found  by Daniel Lee Jackson (djackson@ichips.intel.com).  (Thanks
43       again.. It was so silly... I would have never found it)  If  you  still
44       have problems just put a chipset Mach32 in your config file.
45
46

1. SPECIFYING PIXEL CLOCKS

48       WARNING!  The Mach32 driver needs to know correct clock frequencies for
49       graceful DAC configuration. Wrong clocks may damage your card! However,
50       this  version  contains code for automatic clock detection. Since clock
51       detection is time critical, please do it on a completely  idle  system.
52       Then put the printed out clocks line in your libvga.config(5) file.
53
54       The driver tries to do this for you.  After that, you can restart what‐
55       ever svgalib program you used and you are set. If  you  already  put  a
56       clocks  line  in your config by hand, comment it out to have the driver
57       check your clocks.
58
59       Since clock probing is time critical, values differ from time to  time,
60       you  may  try  it  multiple  times and see which values seem to be most
61       exact. You can also compare them with  the  standard  clock  chips  for
62       Mach32 cards in libvga.config(5)).
63
64       The clock probing relies on the 7th clock being 44.9MHz as this is what
65       Xfree does.  If this is not true (and it is  not  always),  probing  is
66       hosed.  See  libvga.config(5)  for  a list of the clocks used by common
67       svgalib cards.
68
69

2. COPYRIGHTS

71       Some tiny routines are copied from Xfree86. The clock detection code is
72       almost  just  copied.  So  I  repeat the copyright statements for these
73       parts here:
74
75       Copyright 1992 by Orest Zborowski <obz@Kodak.com>
76       Copyright 1993 by David Wexelblat <dwex@goblin.org>
77
78       Permission to use, copy, modify, distribute, and sell this software and
79       its  documentation  for any purpose is hereby granted without fee, pro‐
80       vided that the above copyright notice appear in  all  copies  and  that
81       both  that  copyright  notice and this permission notice appear in sup‐
82       porting documentation, and that the names of Orest Zborowski and  David
83       Wexelblat not be used in advertising or publicity pertaining to distri‐
84       bution of the software  without  specific,  written  prior  permission.
85       Orest  Zborowski  and David Wexelblat make no representations about the
86       suitability of this software for any purpose. It is  provided  "as  is"
87       without express or implied warranty.
88
89       Orest Zborowski and David Wexelblat disclaim all warranties with regard
90       to this software, including all implied warranties  of  merchantability
91       and  fitness,  in  no event shall Orest Zborowski or David Wexelblat be
92       liable for any special, indirect or consequential damages or  any  dam‐
93       ages whatsoever resulting from loss of use, data or profits, whether in
94       an action of contract, negligence or other tortious action, arising out
95       of or in connection with the use or performance of this software.
96
97       Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
98       Copyright 1993 by Kevin E. Martin, Chapel Hill, North Carolina.
99
100       Permission to use, copy, modify, distribute, and sell this software and
101       its documentation for any purpose is hereby granted without  fee,  pro‐
102       vided  that  the  above  copyright notice appear in all copies and that
103       both that copyright notice and this permission notice  appear  in  sup‐
104       porting documentation, and that the name of Thomas Roell not be used in
105       advertising or publicity pertaining to  distribution  of  the  software
106       without  specific, written prior permission. Thomas Roell makes no rep‐
107       resentations about the suitability of this software for any purpose. It
108       is provided "as is" without express or implied warranty.
109
110       Thomas  Roell,  Kevin E. Martin, and Rickard E. Faith disclaim all war‐
111       ranties with regard to this software, including all implied  warranties
112       of merchantability and fitness, in no event shall the authors be liable
113       for any special, indirect or consequential damages or any damages what‐
114       soever  resulting  from  loss  of  use,  data or profits, whether in an
115       action of contract, negligence or other tortious action, arising out of
116       or in connection with the use or performance of this software.
117
118       Author:  Thomas Roell, roell@informatik.tu-muenchen.de
119
120       Rewritten for the 8514/A by Kevin E. Martin (martin@cs.unc.edu)
121       Modified for the Mach-8 by Rickard E. Faith (faith@cs.unc.edu)
122       Rewritten for the Mach32 by Kevin E. Martin (martin@cs.unc.edu)
123
124       And here is my own copyright:
125
126       This  driver is free software; you can redistribute it and/or modify it
127       without any restrictions. This library is distributed in the hope  that
128       it will be useful, but without any warranty.
129
130       Copyright 1994 by Michael Weller
131
132       Email addresses as of this writing:
133
134       eowmob@exp-math.uni-essen.de mat42b@spi.power.uni-essen.de
135
136       Michael  Weller  disclaims all warranties with regard to this software,
137       including all implied warranties of merchantability and fitness, in  no
138       event  shall Michael Weller be liable for any special, indirect or con‐
139       sequential damages or any damages whatsoever  resulting  from  loss  of
140       use,  data  or profits, whether in an action of contract, negligence or
141       other tortious action, arising out of or in connection with the use  or
142       performance of this software.
143
144

3. THE MACH32INFO UTILITY

146       The mach32info(6) utility or demo reads out all configuration registers
147       and the configuration EEPROM of your Mach32 card. If there is a problem
148       with  the  particular card you have, compile and run the utility in the
149       mach32/ directory of the svgalib distribution and send it's  stdout  to
150       me  This might also be useful if you need a lot of options (e.g. clocks
151       on new models?) to get it to work so that this can  be  done  automati‐
152       cally in future versions.
153
154

4. THIRD PARTY CARDS

156       I  got  a  few  reports about AST systems with onboard Mach32.  They do
157       feature an incompatible EEPROM setup, but I think I  got  around  that.
158       Nevertheless  the  Mach32 chipset driver doesn't work out of the box on
159       any AST system I heard of.
160
161       Since original ATI Mach32 demos and tools don't work as well,  I've  to
162       claim  that  the  Mach32 on these AST systems does not conform to ATI's
163       Mach32 docs.  Fortunately, Vernon  C.  Hoxie  <vern@zebra.alphacdc.com>
164       found  a work around after years (really!) of investigating. AST Mach32
165       seems to work now. The work around was also submitted to Xfree and will
166       be  incorporated  to allow running it on the AST hardware too in recent
167       versions. Please read on the misc_ctl command below.
168
169       Dell users should have a look at the  vendor,  ramdac,  and  svgaclocks
170       commands below (if they have problems with the default settings).
171
172
173   Commands to support third party cards
174       I  had  to  learn  that  those  cards seem to use not only non standard
175       clocks for the Mach32, but also for the included SVGA.  However,  since
176       people  often  like  to  use proprietary, non standard VGA (read 80x25)
177       textmodes, the Mach32 driver has to set the included SVGA to a VGA com‐
178       patible clock frequency. Otherwise svgalib has problems using plain VGA
179       modes. This screws VGA modes up if these clocks have  different  values
180       on third party Mach32 cards.
181
182
183       svgaclocks n
184              with n a number between 0 and 31 to select the svga clocks to be
185              used in vga modes. The bits of n refer to specific ATI  register
186              bits  to  complicated  to explain here. Even if I would, I can't
187              tell which clocks they would select on  your  third  party  card
188              (which is the actual problem)
189
190              svgaclocks 9 is the default setting and correct for original ATI
191              cards.
192
193              Often svgaclocks 0 (Dell cards) works.
194
195       svgaclocks keep
196              is special in that the driver will not touch any  SVGA  timings.
197              This  requires  the  Mach32  SVGA part to be in a VGA compatible
198              mode when the svgalib application is started, that is, you  must
199              use 80x25 (maybe 80x50) console textmodes.
200
201       As  I  mentioned  already,  Vernon  C.  Hoxie <vern@zebra.alphacdc.com>
202       really seems to have located the reason for the  Mach32  AST  problems.
203       Any access to MISC_CTL locks up the card & system. Fortunately MISC_CTL
204       is only used for some DAC fine tuning (actually  the  setting  you  can
205       fine  tune  with  the  blank command) which is only of barely noticable
206       effect to the screen.
207
208       The following configuration commands exist to support AST cards:
209
210
211       misc_ctl keep-off
212              Do not dare to touch MISC_CTL.
213
214       misc_ctl use
215              Use it for fine tuning of the Ramdac setup (default).
216
217       Finally, for your convenience there exist:
218
219       vendor ati
220       vendor dell
221       vendor ast
222              These are macros that expand to settings for svgaclocks, ramdac,
223              misc_ctl,  and  mach32eeprom  that  are usually correct for ATI,
224              Dell, AST cards. Be aware that they  really  work  like  macros.
225              That  is,  they  override  any  setting  of  svgaclocks, ramdac,
226              misc_ctl, and  mach32eeprom  made  before  them  and  individual
227              aspects  will  be  changed  by  a  following svgaclocks, ramdac,
228              misc_ctl, and mach32eeprom command.
229
230              Note that the mach32eeprom ignore required for some  Dell  cards
231              requires  you to include explicit timings for Mach32 modes other
232              than  640x480x256.   The  mach32/mach32.std-modes  file  in  the
233              svgalib  distribution  contains  recommendations  for modes from
234              ATI.
235
236              I heard about a bug in some ATI chipsets returning wrong  memory
237              amounts configs. (But cannot confirm that)
238
239              You can enforce correct chipset identification from the configu‐
240              ration file:
241
242
243       chipset Mach32 chiptype memory
244              where chiptype is the sum of at exactly one value from  each  of
245              the following two groups
246
247              128    use no memory aperture.
248              160    use a 1MB memory aperture.
249              192    use a 4MB memory aperture.
250              0      choose size for the memory aperture automatically.
251
252              and
253
254              16     Ramdac is of type 0 (ATI68830)
255              17     Ramdac is of type 1 (IMS-G173, SC11486)
256              18     Ramdac is of type 2 (ATI68875, TLC34075)
257              19     Ramdac is of type 3 (INMOS176, INMOS178)
258              20     Ramdac is of type 4 (Bt481, Bt482)
259              21     Ramdac is of type 5 (ATI68860)
260              0      Ramdac type is queried from Mach32 chip.
261
262
263              memory is the amount of videomemory in KB.
264
265       Note  that the type of the ramdac can be set more conveniently with the
266       ramdac command.
267
268

5. LOGICAL LINEWIDTH

270       At least  my  VRAM  card  seems  to  be  very  peculiar  about  logical
271       linewidths.  From  my experience a multiple of 64 pels is needed.  Your
272       mileage may vary. Use the config file options to adjust it and tell  me
273       if your card needs a different value. Include the name and model number
274       of the card and what the correct numbers should be. This is so  that  I
275       can correct the auto configuration of the driver.
276
277       If  some  svgalib application has problems, note that you can force the
278       logical linewidth to the default value from  the  configfile.  Probably
279       this will lead to glitches in some 800x600 resolutions. You can inhibit
280       these resolutions from the configfile  as  well.  Apropos  glitches,  I
281       found no guidelines as to what clockrates to use due to memory restric‐
282       tions. I adjusted the driver, such that I get a stable pic in all reso‐
283       lutions.  However sometimes the screen is disturbed by heavy video mem‐
284       ory accesses. If you don't like that, reduce the clocks used  with  the
285       maxclock16  or  maxclock24  command,  resp.  This may of course lead to
286       none of the predefined modes being used.  Then you can  try  to  define
287       your own mode via the define command.
288
289

6. NOISY VIDEO SIGNALS

291       If you get some flicker or heavy noise on your screen, some fine tuning
292       may be needed. My docs didn't give me hints as to what  each  card  can
293       stand.   Especially  DRAM  cards may give problems (I've VRAM). In that
294       case, use the fine tuning config commands  and  send  me  your  results
295       along  with the output of mach32info(6).  Then I can include them in my
296       next release.
297
298
299   Fine-tuning configuration commands
300       First you should think about the maxclock*  configuration  commands  to
301       reduce pixel clocks used for each color depth.
302
303       Especially  important  for  DRAM  cards is the video FIFO depth used to
304       queue memory values for writing to the screen. Here is a command to set
305       this value for the 8bpp modes:
306
307
308       vfifo8 number
309              where number is in range 0 - 15.  The default is now 6.
310
311              Since  vfifo is of some impact to the speed of the card, tell me
312              the lowest setting that satisfies your card.
313
314              For 16/24/32 modes, there are non-zero values preset from inter‐
315              nal tables and the EEPROM, however you can enforce minimal vfifo
316              values with:
317
318       vfifo16 number
319       vfifo24 number
320       vfifo32 number
321
322
323       blank number
324              where number is 4 * pixel_delay + blank_adjust where pixel_delay
325              and blank_adjust are in range 0 .. 3.  pixel_delay delays pixels
326              before they are sent to the DAC  and  blank_adjust  adjusts  the
327              blank pulse for type 2 DAC's.  blank should be set correctly for
328              each DAC type automatically.  So use it only as a last resort.
329
330
331       latch number
332              where number is the sum of zero or more of  the  following  num‐
333              bers:
334
335              128    VRAM  serial  delay  latch enable, DRAM latch bits 63 - 0
336                     enable.
337
338              4096   Latch video memory data.
339
340              8192   Memory data delay latch enable for data bits 63 - 0.
341
342              16384  Memory full clock pulse enable.
343
344              Default is to switch all settings on (they are on on my card  by
345              default anyway).
346
347       Note  that  these  commands  may  vanish  again once they are no longer
348       needed for debugging purposes.
349
350       There is no 320x200 mode in the EEPROM of the Mach32 at all, however  I
351       defined one in the default configuration file for you. This is the best
352       thing I could get up on my card/screen. Note that it will probably have
353       big borders on your screen, and black lines in between the pixel lines.
354       This is because of the lack of low clocks < 16MHz on the Mach32 and the
355       lack of a line doubling mode as VGA has. The Mach32 is not intended for
356       such low resolutions. If you find a better mode or have an idea, please
357       let  me know. You can also just remove my timings from the default con‐
358       figuration file.
359
360

7. THE CONFIGURATION EEPROM

362       Ah yes, about the EEPROM, I figured out how to read out the Mach32 EEP‐
363       ROM.  I did it by disassembling the BIOS routine mentioned in the docs.
364       I then redid it in C. The driver will use everything it finds there.
365
366       Use the Mach32 install tools (they should  have  reached  you  together
367       with  your Mach32 VGA card) to setup your card/monitor combo correctly.
368       The monitors setting from the config file (or default of 35kHz or some‐
369       thing) will be obeyed by the driver nevertheless (for safety!).
370
371       As  you  probably know already, accessing the EEPROM causes some screen
372       flickering. If this annoys you (or even worse your monitor) have a look
373       at the mach32eeprom command described below. This allows you to put the
374       data from the EEPROM into a file and which can be read whenever  it  is
375       required.
376
377       Don't  even think about changing the contents of the file. (There is an
378       easily faked checksum in it.). Anyway the  driver  ensures  (hopefully)
379       that no damage can be caused.
380
381       Also, if some mode is not well aligned on your screen or you don't like
382       it's sync frequency, consider using the Mach32 install  utility  (setup
383       for  custom monitor) and set one up interactively. If there is no valid
384       faster (higher VSYNC) standard mode given in the EEPROM the driver will
385       use that mode. You will find that this is fun compared with calculating
386       video timings for /etc/XF86Config or /etc/vga/libvga.config.
387
388       However the install utility does restrict the maximum pixel  depth  for
389       custom modes sometimes unneeded hard and the driver obeys that.  (Hmm..
390       actually it should be smart enough to decide itself which  pixel  depth
391       it  can  use  in that mode.)  Since the standard modes are usually only
392       slightly shifted to one side a file  with  the  configuration  commands
393       representing  the standard modes is given in mach32/mach32.std-modes in
394       the svgalib distribution. You can use these as a starting point.
395
396       But here are some real problems:
397
398

8. EEPROM WOES

400       I got 2 reports of people having problems with incorrect EEPROM  check‐
401       sums.   Both  had  motherboards  with  onboard Mach32 VGA's from AST. I
402       guessed a checksum algorithm from those reports and  put  this  in  the
403       code  in  addition  to  the standard ATI style. Still I got a report of
404       someone whose EEPROM was completely empty. If you  have  problems  with
405       checksums  send  me the output of mach32info(6) and I'll see what I can
406       do.
407
408       By default svgalib writes a complaining message and  ignores  the  con‐
409       tents.   You can have svgalib ignore the checksum and contents with the
410       configuration command
411
412       mach32eeprom ignore
413
414       Then you can decide to use the partial info that is still in it. Use
415
416       mach32eeprom ignore usetimings
417
418       to use the videomodes that are defined in  the  EEPROM  (if  no  better
419       modes  are  known  by  the  driver).  This is usually safe, because the
420       driver knows which modes are safe for your hardware (if clocks, monitor
421       and  ramdac are configured correctly). You can also allow the driver to
422       use the configuration for the linear frame buffer in the EEPROM:
423
424       mach32eeprom ignore useaperture
425
426       or
427
428       mach32eeprom ignore usetimings useaperture
429
430       However I discourage this because the driver will just enable what  the
431       EEPROM  says about the aperture. Use mach32info(6) to check the address
432       it will choose is safe. It might be better to use setuplinear to set up
433       a 4MB aperture at a free address range.
434
435

9. THE MACH32EEPROM COMMAND

437       The mach32eeprom allows to work around these problems. Here is the com‐
438       plete description for this configuration command.
439
440
441       mach32eeprom filename
442              The filename has to begin with a "/".
443
444              Unfortunately reading the EEPROM causes annoying screen flicker‐
445              ing  and  is slow.  To avoid this, specify a filename from which
446              to read the contents of the EEPROM.
447
448              If the file cannot be read, the EEPROM is read out and the  file
449              is  created. There is a very simple checksum put into this file.
450              Although it can easily be fooled, don't change the  file  except
451              you know very, very well what you are doing.
452
453              Also, as long as the file exists, changes in the Mach32's EEPROM
454              are ignored. Delete the file to recreate an updated  version  on
455              next  use  of svgalib. You should ensure that the permissions of
456              the file don't allow normal users to change it. (This may happen
457              if umask has a bad value when svgalib creates the file).
458
459              Example:
460
461              mach32eeprom /etc/vga/mach32.eeprom
462
463
464       Due to problems with some boards this command got heavily expanded:
465
466
467       mach32eeprom subcommand1 [subcommand2...]
468              At least one subcommand is needed. Valid subcommands are:
469
470
471              ignore Don't  complain  about  checksum and don't use any EEPROM
472                     contents.
473
474              useaperture
475                     Use the configuration for the memoryaperture given in the
476                     EEPROM.
477
478              usetimings
479                     Use videomodes found in the EEPROM of the board.
480
481              nofile Forget  about any filename that maybe was already config‐
482                     ured.  Don't read a file, don't create one.
483
484              file filename
485                     Newstyle form to specify the filename; On contrary to the
486                     mach32eeprom filename form it can be mixed with any other
487                     mach32eeprom subcommand.
488
489              updatefile
490                     Don't read the file, always read the EEPROM (except  when
491                     ignore is given) and create an uptodate image of the EEP‐
492                     ROM.
493
494              keepfile
495                     Disable all previous updatefile commands.
496
497              compatible
498                     Fall back to default behavior: If checksum on the  EEPROM
499                     data is not ok, use nothing of the configuration data. If
500                     it is ok, configure everything as specified in  the  EEP‐
501                     ROM.
502
503              The  subcommands  are  intended to be used together and are per‐
504              formed in the order specified. For example:
505
506              mach32eeprom ignore useaperture usetimings
507
508              will ignore the checksum of your EEPROM, but use  its  contents.
509              Order is vital! So:
510
511              mach32eeprom useaperture usetimings ignore
512
513              won't  use  any  configuration from your EEPROM. Be careful with
514              the useaperture subcommand. Please see the EEPROM WOES  section.
515              Note  that  any  non  understood  subcommand  will terminate the
516              mach32eeprom command  silently!  Use  only  one  subcommand  per
517              mach32eeprom command to avoid this.
518
519              The  mach32eeprom command is usually not allowed in the environ‐
520              ment variable SVGALIB_CONFIG.
521
522

10. SETUP OF THE MEMORY APERTURE (LINEAR FRAMEBUFFER)

524       Due to poor design, Xfree86 insists on setting up the aperture  itself.
525       It doesn't reset the original settings at a VC switch once it runs. You
526       should not start X for the first time  after  a  boot  as  long  as  an
527       svgalib  application is running. This will result in pre X values being
528       restored at a VC switch by svgalib. If you use svgalib and  XF86_Mach32
529       together,  run  X  first  or at least do not start it while any svgalib
530       appl. is still running. After X was started once you  can  use  svgalib
531       and X in all combinations w/o any problems. Xfree uses whatever address
532       is given in the MEM_CFG Mach32 register for a 4MB aperture, even if the
533       aperture  is  not  already  enabled  and  the value in this register is
534       pointless garbage. This is IMHO a dangerous bug  as  some  systems  may
535       work only with a 1MB aperture.
536
537       However,  usage  of  a correct EEPROM circumvents any such problems. If
538       you cannot use that, use mach32info (6) to find the address in MEM_CFG.
539       Then,  if it is a senseable setting for your system, enable a 4MB aper‐
540       ture at that address with setuplinear.  Ensure that no  other  card  or
541       memory uses the address range you choose.
542
543

11. ACCELERATOR SUPPORT AND OTHER WEIRD FEATURES

545       This  version now has support for all accelerator functions of svgalib.
546       However they were intended for use with the cirrus chips. It may happen
547       that  at  runtime  they  find they cannot emulate the function actually
548       requested. Then you should disable the corresponding blit function  (at
549       least for that application) with the blit config command.
550
551       Data transfer between the host and the Mach32 is normally via I/O. This
552       proved to be pretty slow. If a big enough aperture is available, a sim‐
553       ple  memory  copy is used instead. This is usually much faster. You can
554       change which method is used with the  blit  command.  This  I/O  option
555       affects only vga_imageblt(3).  The other functions are incredible fast.
556
557       For  type  2 DACS, there is support for 8 bit per color (instead of the
558       normal 6) in the RGB triple in the color lookup table of the 256  color
559       modes.  This  can  be enabled by an application, if it supports it. The
560       testaccel(6) demo uses it if supported by your hardware.  You  can  use
561       vga_ext_set(3) to use it from your programs.
562
563

12. RAMDACS

565       Mach32  Ramdacs  are specified by a type in range 1 .. 5. This type can
566       be queried from the Mach32 and then specifies how to set up the ramdac.
567       A  list  of actual hardware chips used for each type exists, but is not
568       of much use. The Mach32 will return a type and the ramdac will be  com‐
569       pletely hardware compatible to one of the given type.
570
571       Type 1 and 4 Dacs need different clock frequencies for high colormodes.
572       For 32K/64K colormodes the frequencies have to be doubled and  for  16M
573       colors (type 4 only) they have to be tripled. I followed the ATI scheme
574       and did this internally. However this means that for  32K/64K  you  can
575       use  only  clocks for which the doubled frequencies can be generated as
576       well.
577
578       This is no hard restriction as the 16  clocks  of  the  Mach32  can  be
579       divided  by  2.  Thus if you setup some mode yourself try to use one of
580       the divided clocks in your timings and I can use the  undivided  clocks
581       internally.
582
583       It  is  a  real  restriction for 16M colors. ATI themself only supports
584       25MHz (640x480) here by use of a 75MHz clock. Depending on  your  clock
585       chip  other  values  may  be  usable  as well. Even the doubled/tripled
586       clocks have to be less than the magic 80 MHz. However the  driver  does
587       all  this itself. It may just happen that some of the predefined or one
588       of your handmade mode-timings can't be used because the clock  that  is
589       used cannot be doubled/tripled.  Even though there is already some tol‐
590       erance in the driver you may fix that by  slighty  changing  the  clock
591       values that you set with the clocks command. But note that this will as
592       well affect the ability of the driver to calculate  video  timings  and
593       thus it ability to check the monitor and DAC safety restrictions.
594
595       In  addition  (in  complete  contrast to my original ATI docs) RAMDAC 4
596       does not support RGB with blue byte first but only with red first. This
597       required  special  handling  and  me adding a bunch of functions to all
598       modules of svgalib and vgagl. The added functions are of lower  perfor‐
599       mance  than the usual functions. However most data has to be completely
600       mangled, so I doubt that it can be done much faster. Sorry.
601
602       Of course, I might have forgotten to port some parts or  even  confused
603       things.  About  bugs  in the gl and drawing libs, please ask Harm.  But
604       then, I'm able to emulate a BGR ramdac on my card, so I should even  be
605       able to reproduce your problems.
606
607       Recently  I  hear  often  about type 6 ramdacs in non ATI Mach32 cards.
608       There exists no info about these dacs, thus I cannot support them.  The
609       driver  assumes  unknown  DACs  can stand up to 80MHz in 256 color clut
610       modes and does not touch the ramdac (that is, assumes it is in the  256
611       color mode already)
612
613       To get rid of the warning message you can use the
614
615
616       ramdac n
617              configuration  command.  It allows to explicitly set the type of
618              the dac to n (in range 0 to 5).  Ramdac 3 is  the  most  dumbest
619              ramdac  possible,  s.t. you can use it without any fear for your
620              hardware.
621
622       ramdac dumb
623              is equivalent to ramdac 3.
624
625       ramdac auto
626              switches back to the default autodetection.
627

13. MEANING OF THE DETECTION MESSAGE FROM SVGALIB

629       Some programs (which do not switch it off) will show a
630
631       Using Mach32 version (sizeM at adrM (how), memK mem, DAC dactype)
632
633       line. This will show up in testlinear(6) etc but will  probably  scroll
634       away when you use vgatest(6).  In this line:
635
636
637       version
638              is the version of the driver (as of my counting, not the svgalib
639              version).
640
641       size   is the size of the memory aperture. It can be 1  or  4  (1  will
642              lead to not using the linear aperture if your card has more than
643              1MB memory, however applications can still use the 1MB  aperture
644              and  page  the  video memory through it in 1MB steps).  size can
645              also be no if no aperture is setup at all.
646
647       adr    is the base address of the aperture in MB.
648
649       how    is autodetect if the aperture was setup this  way  already  when
650              the  program  started.  It  is  setup  when  the the setting was
651              enforced with a setuplinear configuration command. It is  EEPROM
652              when  no aperture was detected, but parameters to set it up were
653              found in the EEPROM.
654
655       mem    is the amount of memory the card reported to have.
656
657       dactype
658              is the type of the DAC that was detected.
659
660              If a special ramdac type was set with the ramdac command a (set)
661              will be displayed after dactype.
662
663       If  mem, dactype and/or the chipset were enforced with chipset from the
664       configuration file or vga_setchipsetandfeatures(3)  a  forced  will  be
665       appended to the line.
666
667

14. CONCLUSIONS

669       A  final  word: I have an ATI ULTRA PRO/2MB/EISA with a Type 2 DAC.  My
670       monitor is an EIZO F550i-M. Everything I  tried  works  on  it  like  a
671       charm.  However,  I couldn't try it with other machines myself and esp.
672       other DAC's. Fortunately the Type 2 DAC is the worst to code. So I will
673       probably have gotten the other DAC's right. But please be warned!
674
675       I  did  my  very  best to code the driver to support the other DAC's by
676       just reading the docs.  But i can't give any definitive  guarantee  for
677       it to work or even not damaging your hardware. So please be careful!
678
679       Note  that you will have to set the environment variable SVGALIB_MACH32
680       to ILLTRYIT if your DAC is not type 0, 2, 3 or 4. This will  of  course
681       change  if  no  one with a DAC equal to 1 or 5 has serious problems. If
682       you have a different DAC, making patches to support your card  will  be
683       much more helpful instead of just complaining.  If you have a different
684       DAC that works well tell me as well such that I can remove the need for
685       SVGALIB_MACH32 in the next release. Still, even now, after years, I got
686       no reports of a Mach32 card with a type 1 or 5 ramdac. Go figure.
687
688       Thank you for your audience and wishes you will enjoy this driver,
689       Michael.
690

FILES

692       /etc/vga/libvga.config
693       /etc/vga/mach32.eeprom
694
695

SEE ALSO

697       svgalib(7), libvga.config(5), mach32info(6).
698
699

AUTHOR

701       The Mach32 driver and this documentation was written by Michael  Weller
702       <eowmob@exp-math.uni-essen.de>.
703
704
705
706Svgalib (>= 1.2.11)              1 August 1997               svgalib.mach32(7)
Impressum