Provided by: libsvga1_1.4.3-33_amd64 bug

NAME

       svgalib.mach32 - Information on the Mach32 chipset driver

TABLE OF CONTENTS

        0. Introduction
        1. Specifying pixel clocks
        2. Copyrights
        3. The mach32info utility
        4. Third party cards
        5. Logical line width
        6. Noisy video signals
        7. The configuration EEPROM
        8. EEPROM woes
        9. The Mach32Eeprom command
       10. Setup of the memory aperture (linear framebuffer)
       11. Accelerator support and other weird features
       12. Ramdacs
       13. Meaning of the detection message from svgalib
       14. Conclusions

0. INTRODUCTION

       The  driver  should allow you to use any of the graph-modes your Mach32 card supports. Note that there is
       no support for <8bpp modes and that I won't ever implement that because I don't see any reason for  doing
       so. All standard VGA-modes are supported, of course (by using the standard VGA driver routines).

       If  you configured your Mach32 for a memory aperture and it is at least as big as the memory of your card
       (that is, not a 1MB memory aperture for a 2MB card) support for linear frame buffer access of svgalib  is
       given.

       Auto  detection  of the Mach32 seems not to work on all cards. That's really strange since I got the code
       from the X people. It should be OK regardless of my docs. Well, I fixed that  (hopefully).  Actually  the
       bug  was  found  by Daniel Lee Jackson (djackson@ichips.intel.com).  (Thanks again.. It was so silly... I
       would have never found it) If you still have problems just put a chipset Mach32 in your config file.

1. SPECIFYING PIXEL CLOCKS

       WARNING!  The Mach32 driver needs to know correct clock frequencies for graceful DAC configuration. Wrong
       clocks may damage your card! However, this version contains code for  automatic  clock  detection.  Since
       clock  detection  is  time  critical,  please do it on a completely idle system. Then put the printed out
       clocks line in your libvga.config(5) file.

       The driver tries to do this for you.  After that, you can restart whatever svgalib program you  used  and
       you  are  set. If you already put a clocks line in your config by hand, comment it out to have the driver
       check your clocks.

       Since clock probing is time critical, values differ from time to time, you may try it multiple times  and
       see  which  values  seem  to  be  most exact. You can also compare them with the standard clock chips for
       Mach32 cards in libvga.config(5)).

       The clock probing relies on the 7th clock being 44.9MHz as this is what Xfree does.  If this is not  true
       (and  it  is  not always), probing is hosed. See libvga.config(5) for a list of the clocks used by common
       svgalib cards.

2. COPYRIGHTS

       Some tiny routines are copied from Xfree86. The clock detection code is almost just copied. So  I  repeat
       the copyright statements for these parts here:

       Copyright 1992 by Orest Zborowski <obz@Kodak.com>
       Copyright 1993 by David Wexelblat <dwex@goblin.org>

       Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose
       is  hereby  granted  without  fee, provided that the above copyright notice appear in all copies and that
       both that copyright notice and this permission notice appear in supporting documentation,  and  that  the
       names  of  Orest  Zborowski  and  David  Wexelblat  not be used in advertising or publicity pertaining to
       distribution of the software without specific,  written  prior  permission.  Orest  Zborowski  and  David
       Wexelblat  make no representations about the suitability of this software for any purpose. It is provided
       "as is" without express or implied warranty.

       Orest Zborowski and David Wexelblat disclaim all warranties with regard to this software,  including  all
       implied  warranties  of merchantability and fitness, in no event shall Orest Zborowski or David Wexelblat
       be liable for any special, indirect or consequential damages or any  damages  whatsoever  resulting  from
       loss  of  use,  data  or  profits, whether in an action of contract, negligence or other tortious action,
       arising out of or in connection with the use or performance of this software.

       Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
       Copyright 1993 by Kevin E. Martin, Chapel Hill, North Carolina.

       Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose
       is hereby granted without fee, provided that the above copyright notice appear in  all  copies  and  that
       both  that  copyright  notice and this permission notice appear in supporting documentation, and that the
       name of Thomas Roell not be used in advertising or publicity pertaining to distribution of  the  software
       without  specific,  written prior permission. Thomas Roell makes no representations about the suitability
       of this software for any purpose. It is provided "as is" without express or implied warranty.

       Thomas Roell, Kevin E. Martin, and Rickard E. Faith disclaim all warranties with regard to this software,
       including all implied warranties of merchantability and fitness, in no event shall the authors be  liable
       for  any special, indirect or consequential damages or any damages whatsoever resulting from loss of use,
       data or profits, whether in an action of contract, negligence or other tortious action, arising out of or
       in connection with the use or performance of this software.

       Author:  Thomas Roell, roell@informatik.tu-muenchen.de

       Rewritten for the 8514/A by Kevin E. Martin (martin@cs.unc.edu)
       Modified for the Mach-8 by Rickard E. Faith (faith@cs.unc.edu)
       Rewritten for the Mach32 by Kevin E. Martin (martin@cs.unc.edu)

       And here is my own copyright:

       This driver is free software; you can redistribute it and/or modify it  without  any  restrictions.  This
       library is distributed in the hope that it will be useful, but without any warranty.

       Copyright 1994 by Michael Weller

       Email addresses as of this writing:

       eowmob@exp-math.uni-essen.de mat42b@spi.power.uni-essen.de

       Michael Weller disclaims all warranties with regard to this software, including all implied warranties of
       merchantability  and  fitness,  in  no  event shall Michael Weller be liable for any special, indirect or
       consequential damages or any damages whatsoever resulting from loss of use, data or profits,  whether  in
       an  action of contract, negligence or other tortious action, arising out of or in connection with the use
       or performance of this software.

3. THE MACH32INFO UTILITY

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

4. THIRD PARTY CARDS

       I got a few reports about AST systems with onboard Mach32.  They do feature an incompatible EEPROM setup,
       but I think I got around that. Nevertheless the Mach32 chipset driver doesn't work out of the box on  any
       AST system I heard of.

       Since  original ATI Mach32 demos and tools don't work as well, I've to claim that the Mach32 on these AST
       systems does not conform to ATI's Mach32 docs.  Fortunately, Vernon  C.  Hoxie  <vern@zebra.alphacdc.com>
       found a work around after years (really!) of investigating. AST Mach32 seems to work now. The work around
       was  also  submitted  to  Xfree  and  will be incorporated to allow running it on the AST hardware too in
       recent versions. Please read on the misc_ctl command below.

       Dell users should have a look at the vendor, ramdac, and svgaclocks commands below (if they have problems
       with the default settings).

   Commands to support third party cards
       I had to learn that those cards seem to use not only non standard clocks for the Mach32, but also for the
       included SVGA. However, since people often like to use proprietary, non standard VGA  (read  80x25)  text
       modes,  the  Mach32  driver  has  to set the included SVGA to a VGA compatible clock frequency. Otherwise
       svgalib has problems using plain VGA modes. This screws VGA modes  up  if  these  clocks  have  different
       values on third party Mach32 cards.

       svgaclocks n
              with  n a number between 0 and 31 to select the svga clocks to be used in vga modes. The bits of n
              refer to specific ATI register bits to complicated to explain here. Even if I would, I can't  tell
              which clocks they would select on your third party card (which is the actual problem)

              svgaclocks 9 is the default setting and correct for original ATI cards.

              Often svgaclocks 0 (Dell cards) works.

       svgaclocks keep
              is  special in that the driver will not touch any SVGA timings. This requires the Mach32 SVGA part
              to be in a VGA compatible mode when the svgalib application is started,  that  is,  you  must  use
              80x25 (maybe 80x50) console text modes.

       As I mentioned already, Vernon C. Hoxie <vern@zebra.alphacdc.com> really seems to have located the reason
       for  the  Mach32 AST problems. Any access to MISC_CTL locks up the card & system. Fortunately MISC_CTL is
       only used for some DAC fine tuning (actually the setting you can fine tune with the blank command)  which
       is only of barely noticeable effect to the screen.

       The following configuration commands exist to support AST cards:

       misc_ctl keep-off
              Do not dare to touch MISC_CTL.

       misc_ctl use
              Use it for fine tuning of the Ramdac setup (default).

       Finally, for your convenience there exist:

       vendor ati
       vendor dell
       vendor ast
              These  are  macros that expand to settings for svgaclocks, ramdac, misc_ctl, and mach32eeprom that
              are usually correct for ATI, Dell, AST cards. Be aware that they really work like macros. That is,
              they override any setting of svgaclocks, ramdac, misc_ctl, and mach32eeprom made before  them  and
              individual  aspects  will be changed by a following svgaclocks, ramdac, misc_ctl, and mach32eeprom
              command.

              Note that the mach32eeprom ignore required for some Dell cards requires you  to  include  explicit
              timings  for Mach32 modes other than 640x480x256.  The mach32/mach32.std-modes file in the svgalib
              distribution contains recommendations for modes from ATI.

              I heard about a bug in some ATI chipsets returning  wrong  memory  amounts  configs.  (But  cannot
              confirm that)

              You can enforce correct chipset identification from the configuration file:

       chipset Mach32 chiptype memory
              where chiptype is the sum of at exactly one value from each of the following two groups

              128    use no memory aperture.
              160    use a 1MB memory aperture.
              192    use a 4MB memory aperture.
              0      choose size for the memory aperture automatically.

              and

              16     Ramdac is of type 0 (ATI68830)
              17     Ramdac is of type 1 (IMS-G173, SC11486)
              18     Ramdac is of type 2 (ATI68875, TLC34075)
              19     Ramdac is of type 3 (INMOS176, INMOS178)
              20     Ramdac is of type 4 (Bt481, Bt482)
              21     Ramdac is of type 5 (ATI68860)
              0      Ramdac type is queried from Mach32 chip.

              memory is the amount of video memory in KB.

       Note that the type of the ramdac can be set more conveniently with the ramdac command.

5. LOGICAL LINEWIDTH

       At  least my VRAM card seems to be very peculiar about logical line widths. From my experience a multiple
       of 64 pels is needed.  Your mileage may vary. Use the config file options to adjust it  and  tell  me  if
       your  card  needs  a  different value. Include the name and model number of the card and what the correct
       numbers should be. This is so that I can correct the auto configuration of the driver.

       If some svgalib application has problems, note that you can force the logical line width to  the  default
       value  from  the  config  file.  Probably this will lead to glitches in some 800x600 resolutions. You can
       inhibit these resolutions from the config file as well. Apropos glitches, I found  no  guidelines  as  to
       what  clock  rates to use due to memory restrictions. I adjusted the driver, such that I get a stable pic
       in all resolutions. However sometimes the screen is disturbed by heavy  video  memory  accesses.  If  you
       don't  like  that,  reduce  the clocks used with the maxclock16 or maxclock24 command, resp.  This may of
       course lead to none of the predefined modes being used.  Then you can try to define your own mode via the
       define command.

6. NOISY VIDEO SIGNALS

       If you get some flicker or heavy noise on your screen, some fine tuning may be  needed.  My  docs  didn't
       give  me  hints  as to what each card can stand.  Especially DRAM cards may give problems (I've VRAM). In
       that case, use the fine tuning config commands and  send  me  your  results  along  with  the  output  of
       mach32info(6).  Then I can include them in my next release.

   Fine-tuning configuration commands
       First  you  should  think about the maxclock* configuration commands to reduce pixel clocks used for each
       color depth.

       Especially important for DRAM cards is the video FIFO depth used to queue memory values  for  writing  to
       the screen. Here is a command to set this value for the 8bpp modes:

       vfifo8 number
              where number is in range 0 - 15.  The default is now 6.

              Since  vfifo is of some impact to the speed of the card, tell me the lowest setting that satisfies
              your card.

              For 16/24/32 modes, there are non-zero values preset from internal tables and the EEPROM,  however
              you can enforce minimal vfifo values with:

       vfifo16 number
       vfifo24 number
       vfifo32 number

       blank number
              where  number  is 4 * pixel_delay + blank_adjust where pixel_delay and blank_adjust are in range 0
              .. 3.  pixel_delay delays pixels before they are sent to the  DAC  and  blank_adjust  adjusts  the
              blank  pulse for type 2 DAC's.  blank should be set correctly for each DAC type automatically.  So
              use it only as a last resort.

       latch number
              where number is the sum of zero or more of the following numbers:

              128    VRAM serial delay latch enable, DRAM latch bits 63 - 0 enable.

              4096   Latch video memory data.

              8192   Memory data delay latch enable for data bits 63 - 0.

              16384  Memory full clock pulse enable.

              Default is to switch all settings on (they are on on my card by default anyway).

       Note that these commands may vanish again once they are no longer needed for debugging purposes.

       There is no 320x200 mode in the EEPROM of the Mach32 at  all,  however  I  defined  one  in  the  default
       configuration  file  for  you. This is the best thing I could get up on my card/screen. Note that it will
       probably have big borders on your screen, and black lines in between the pixel lines.  This is because of
       the lack of low clocks < 16MHz on the Mach32 and the lack of a line doubling mode as VGA has. The  Mach32
       is  not intended for such low resolutions. If you find a better mode or have an idea, please let me know.
       You can also just remove my timings from the default configuration file.

7. THE CONFIGURATION EEPROM

       Ah yes, about the EEPROM, I figured out how to read out the Mach32 EEPROM. I did it by disassembling  the
       BIOS routine mentioned in the docs. I then redid it in C. The driver will use everything it finds there.

       Use  the  Mach32 install tools (they should have reached you together with your Mach32 VGA card) to setup
       your card/monitor combo correctly.  The monitors setting from the config file (or  default  of  35kHz  or
       something) will be obeyed by the driver nevertheless (for safety!).

       As  you probably know already, accessing the EEPROM causes some screen flickering. If this annoys you (or
       even worse your monitor) have a look at the mach32eeprom command described below. This allows you to  put
       the data from the EEPROM into a file and which can be read whenever it is required.

       Don't  even  think  about  changing the contents of the file. (There is an easily faked checksum in it.).
       Anyway the driver ensures (hopefully) that no damage can be caused.

       Also, if some mode is not well aligned on your screen or you don't like  it's  sync  frequency,  consider
       using  the Mach32 install utility (setup for custom monitor) and set one up interactively. If there is no
       valid faster (higher VSYNC) standard mode given in the EEPROM the driver will use  that  mode.  You  will
       find   that   this   is   fun   compared   with   calculating   video   timings  for  /etc/XF86Config  or
       /etc/vga/libvga.config.

       However the install utility does restrict the maximum pixel depth for  custom  modes  sometimes  unneeded
       hard  and  the driver obeys that.  (Hmm.. actually it should be smart enough to decide itself which pixel
       depth it can use in that mode.)  Since the standard modes are usually only slightly shifted to one side a
       file with the configuration commands representing the standard modes is given in  mach32/mach32.std-modes
       in the svgalib distribution. You can use these as a starting point.

       But here are some real problems:

8. EEPROM WOES

       I  got  2  reports of people having problems with incorrect EEPROM checksums.  Both had motherboards with
       onboard Mach32 VGA's from AST. I guessed a checksum algorithm from those reports and put this in the code
       in addition to the standard ATI style. Still I got a report of someone whose EEPROM was completely empty.
       If you have problems with checksums send me the output of mach32info(6) and I'll see what I can do.

       By default svgalib writes a complaining message and ignores the contents.  You can  have  svgalib  ignore
       the checksum and contents with the configuration command

       mach32eeprom ignore

       Then you can decide to use the partial info that is still in it. Use

       mach32eeprom ignore usetimings

       to  use the video modes that are defined in the EEPROM (if no better modes are known by the driver). This
       is usually safe, because the driver knows which modes are safe for your hardware (if clocks, monitor  and
       ramdac  are  configured correctly). You can also allow the driver to use the configuration for the linear
       frame buffer in the EEPROM:

       mach32eeprom ignore useaperture

       or

       mach32eeprom ignore usetimings useaperture

       However I discourage this because the driver will just enable what the EEPROM says  about  the  aperture.
       Use  mach32info(6)  to check the address it will choose is safe. It might be better to use setuplinear to
       set up a 4MB aperture at a free address range.

9. THE MACH32EEPROM COMMAND

       The mach32eeprom allows to work around  these  problems.  Here  is  the  complete  description  for  this
       configuration command.

       mach32eeprom filename
              The filename has to begin with a "/".

              Unfortunately  reading  the  EEPROM causes annoying screen flickering and is slow.  To avoid this,
              specify a filename from which to read the contents of the EEPROM.

              If the file cannot be read, the EEPROM is read out and the file is created. There is a very simple
              checksum put into this file. Although it can easily be fooled, don't change the  file  except  you
              know very, very well what you are doing.

              Also,  as  long as the file exists, changes in the Mach32's EEPROM are ignored. Delete the file to
              recreate an updated version on next use of svgalib. You should ensure that the permissions of  the
              file don't allow normal users to change it. (This may happen if umask has a bad value when svgalib
              creates the file).

              Example:

              mach32eeprom /etc/vga/mach32.eeprom

       Due to problems with some boards this command got heavily expanded:

       mach32eeprom subcommand1 [subcommand2...]
              At least one subcommand is needed. Valid subcommands are:

              ignore Don't complain about checksum and don't use any EEPROM contents.

              useaperture
                     Use the configuration for the memory aperture given in the EEPROM.

              usetimings
                     Use video modes found in the EEPROM of the board.

              nofile Forget  about  any  filename  that  maybe was already configured.  Don't read a file, don't
                     create one.

              file filename
                     New style form to specify the filename; On contrary to the mach32eeprom  filename  form  it
                     can be mixed with any other mach32eeprom subcommand.

              updatefile
                     Don't  read  the  file,  always read the EEPROM (except when ignore is given) and create an
                     uptodate image of the EEPROM.

              keepfile
                     Disable all previous updatefile commands.

              compatible
                     Fall back to default behavior: If checksum on the EEPROM data is not ok, use nothing of the
                     configuration data. If it is ok, configure everything as specified in the EEPROM.

              The subcommands are intended to be used together and are performed in  the  order  specified.  For
              example:

              mach32eeprom ignore useaperture usetimings

              will ignore the checksum of your EEPROM, but use its contents.  Order is vital! So:

              mach32eeprom useaperture usetimings ignore

              won't  use  any configuration from your EEPROM. Be careful with the useaperture subcommand. Please
              see the EEPROM  WOES  section.  Note  that  any  non  understood  subcommand  will  terminate  the
              mach32eeprom command silently! Use only one subcommand per mach32eeprom command to avoid this.

              The mach32eeprom command is usually not allowed in the environment variable SVGALIB_CONFIG.

10. SETUP OF THE MEMORY APERTURE (LINEAR FRAMEBUFFER)

       Due  to  poor  design,  Xfree86  insists on setting up the aperture itself. It doesn't reset the original
       settings at a VC switch once it runs. You should not start X for the first time after a boot as  long  as
       an  svgalib  application  is  running.  This will result in pre X values being restored at a VC switch by
       svgalib. If you use svgalib and XF86_Mach32 together, run X first or at least do not start it  while  any
       svgalib  appl.  is  still running. After X was started once you can use svgalib and X in all combinations
       w/o any problems. Xfree uses whatever address is given in the MEM_CFG Mach32 register for a 4MB aperture,
       even if the aperture is not already enabled and the value in this register is pointless garbage. This  is
       IMHO a dangerous bug as some systems may work only with a 1MB aperture.

       However,  usage of a correct EEPROM circumvents any such problems. If you cannot use that, use mach32info
       (6) to find the address in MEM_CFG.  Then, if it is a sensible setting for  your  system,  enable  a  4MB
       aperture  at  that  address with setuplinear.  Ensure that no other card or memory uses the address range
       you choose.

11. ACCELERATOR SUPPORT AND OTHER WEIRD FEATURES

       This version now has support for all accelerator functions of svgalib.  However they  were  intended  for
       use  with  the  cirrus  chips.  It  may happen that at runtime they find they cannot emulate the function
       actually requested. Then  you  should  disable  the  corresponding  blit  function  (at  least  for  that
       application) with the blit config command.

       Data  transfer  between  the host and the Mach32 is normally via I/O. This proved to be pretty slow. If a
       big enough aperture is available, a simple memory copy is used instead. This is usually much faster.  You
       can change which method is used with the blit command. This I/O option affects only vga_imageblt(3).  The
       other functions are incredible fast.

       For  type 2 DACS, there is support for 8 bit per color (instead of the normal 6) in the RGB triple in the
       color lookup table of the 256 color modes. This can be enabled by an application, if it supports it.  The
       testaccel(6)  demo uses it if supported by your hardware.  You can use vga_ext_set(3) to use it from your
       programs.

12. RAMDACS

       Mach32 Ramdacs are specified by a type in range 1 .. 5. This type can be queried from the Mach32 and then
       specifies how to set up the ramdac. A list of actual hardware chips used for each type exists, but is not
       of much use. The Mach32 will return a type and the ramdac will be completely hardware compatible  to  one
       of the given type.

       Type  1  and  4  Dacs  need  different clock frequencies for high colormodes.  For 32K/64K colormodes the
       frequencies have to be doubled and for 16M colors (type 4 only) they have to be tripled. I  followed  the
       ATI scheme and did this internally. However this means that for 32K/64K you can use only clocks for which
       the doubled frequencies can be generated as well.

       This  is  no hard restriction as the 16 clocks of the Mach32 can be divided by 2.  Thus if you setup some
       mode yourself try to use one of the divided clocks in your timings and I can  use  the  undivided  clocks
       internally.

       It  is a real restriction for 16M colors. ATI itself only supports 25MHz (640x480) here by use of a 75MHz
       clock. Depending on your clock chip other values may be usable as well. Even the  doubled/tripled  clocks
       have  to  be less than the magic 80 MHz. However the driver does all this itself. It may just happen that
       some of the predefined or one of your handmade mode-timings can't be used because the clock that is  used
       cannot be doubled/tripled.  Even though there is already some tolerance in the driver you may fix that by
       slightly  changing the clock values that you set with the clocks command. But note that this will as well
       affect the ability of the driver to calculate video timings and thus it ability to check the monitor  and
       DAC safety restrictions.

       In  addition  (in complete contrast to my original ATI docs) RAMDAC 4 does not support RGB with blue byte
       first but only with red first. This required special handling and me adding a bunch of functions  to  all
       modules  of  svgalib  and  vgagl.  The added functions are of lower performance than the usual functions.
       However most data has to be completely mangled, so I doubt that it can be done much faster. Sorry.

       Of course, I might have forgotten to port some parts or even confused things. About bugs in  the  gl  and
       drawing  libs,  please ask Harm.  But then, I'm able to emulate a BGR ramdac on my card, so I should even
       be able to reproduce your problems.

       Recently I hear often about type 6 ramdacs in non ATI Mach32 cards. There  exists  no  info  about  these
       dacs, thus I cannot support them. The driver assumes unknown DACs can stand up to 80MHz in 256 color clut
       modes and does not touch the ramdac (that is, assumes it is in the 256 color mode already)

       To get rid of the warning message you can use the

       ramdac n
              configuration  command.  It  allows  to explicitly set the type of the dac to n (in range 0 to 5).
              Ramdac 3 is the most dumbest ramdac possible, s.t. you can  use  it  without  any  fear  for  your
              hardware.

       ramdac dumb
              is equivalent to ramdac 3.

       ramdac auto
              switches back to the default autodetection.

13. MEANING OF THE DETECTION MESSAGE FROM SVGALIB

       Some programs (which do not switch it off) will show a

       Using Mach32 version (sizeM at adrM (how), memK mem, DAC dactype)

       line.  This  will show up in testlinear(6) etc but will probably scroll away when you use vgatest(6).  In
       this line:

       version
              is the version of the driver (as of my counting, not the svgalib version).

       size   is the size of the memory aperture. It can be 1 or 4 (1 will lead to not using the linear aperture
              if your card has more than 1MB memory, however applications can still use  the  1MB  aperture  and
              page  the  video  memory through it in 1MB steps).  size can also be no if no aperture is setup at
              all.

       adr    is the base address of the aperture in MB.

       how    is autodetect if the aperture was setup this way already when the program  started.  It  is  setup
              when  the  the setting was enforced with a setuplinear configuration command. It is EEPROM when no
              aperture was detected, but parameters to set it up were found in the EEPROM.

       mem    is the amount of memory the card reported to have.

       dactype
              is the type of the DAC that was detected.

              If a special ramdac type was set with the ramdac command a (set) will be displayed after dactype.

       If mem,  dactype  and/or  the  chipset  were  enforced  with  chipset  from  the  configuration  file  or
       vga_setchipsetandfeatures(3) a forced will be appended to the line.

14. CONCLUSIONS

       A  final  word:  I  have  an  ATI  ULTRA  PRO/2MB/EISA with a Type 2 DAC.  My monitor is an EIZO F550i-M.
       Everything I tried works on it like a charm. However, I couldn't try it with other  machines  myself  and
       esp.   other  DAC's.  Fortunately the Type 2 DAC is the worst to code. So I will probably have gotten the
       other DAC's right. But please be warned!

       I did my very best to code the driver to support the other DAC's by just reading the docs.  But  i  can't
       give any definitive guarantee for it to work or even not damaging your hardware. So please be careful!

       Note  that  you  will  have to set the environment variable SVGALIB_MACH32 to ILLTRYIT if your DAC is not
       type 0, 2, 3 or 4. This will of course change if no one with a DAC equal to 1 or 5 has serious  problems.
       If  you  have  a  different DAC, making patches to support your card will be much more helpful instead of
       just complaining.  If you have a different DAC that works well tell me as well such that I can remove the
       need for SVGALIB_MACH32 in the next release. Still, even now, after years, I got no reports of  a  Mach32
       card with a type 1 or 5 ramdac. Go figure.

       Thank you for your audience and wishes you will enjoy this driver,
       Michael.

FILES

       /etc/vga/libvga.config
       /etc/vga/mach32.eeprom

SEE ALSO

       svgalib(7), libvga.config(5), mach32info(6).

AUTHOR

       The Mach32 driver and this documentation was written by Michael Weller <eowmob@exp-math.uni-essen.de>.

Svgalib (>= 1.2.11)                               1 August 1997                                svgalib.mach32(7)