[This file is cloned from VesaFB. Thanks go to Gerd Knorr]

What is matroxfb?
=================

This is a driver for a graphic framebuffer for Matrox devices on
Alpha, Intel and PPC boxes.

Advantages:

 * It provides a nice large console (128 cols + 48 lines with 1024x768)
   without using tiny, unreadable fonts.
 * You can run XF{68,86}_FBDev or XFree86 fbdev driver on top of /dev/fb0
 * Most important: boot logo :-)

Disadvantages:

 * graphic mode is slower than text mode... but you should not notice
   if you use same resolution as you used in textmode.


How to use it?
==============

Switching modes is done using the video=matroxfb:vesa:... boot parameter
or using `fbset' program.

If you want, for example, enable a resolution of 1280x1024x24bpp you should
pass to the kernel this command line: "video=matroxfb:vesa:0x1BB".

You should compile in both vgacon (to boot if you remove you Matrox from
box) and matroxfb (for graphics mode). You should not compile-in vesafb
unless you have primary display on non-Matrox VBE2.0 device (see 
Documentation/fb/vesafb.txt for details).

Currently supported video modes are (through vesa:... interface, PowerMac
has [as addon] compatibility code):


[Graphic modes]

bpp | 640x400  640x480  768x576  800x600  960x720
----+--------------------------------------------
  4 |            0x12             0x102            
  8 |  0x100    0x101    0x180    0x103    0x188   
 15 |           0x110    0x181    0x113    0x189   
 16 |           0x111    0x182    0x114    0x18A   
 24 |           0x1B2    0x184    0x1B5    0x18C   
 32 |           0x112    0x183    0x115    0x18B   


[Graphic modes (continued)]

bpp | 1024x768 1152x864 1280x1024 1408x1056 1600x1200
----+------------------------------------------------
  4 |   0x104             0x106
  8 |   0x105    0x190    0x107     0x198     0x11C
 15 |   0x116    0x191    0x119     0x199     0x11D
 16 |   0x117    0x192    0x11A     0x19A     0x11E
 24 |   0x1B8    0x194    0x1BB     0x19C     0x1BF
 32 |   0x118    0x193    0x11B     0x19B


[Text modes]

text | 640x400  640x480  1056x344  1056x400  1056x480
-----+------------------------------------------------
 8x8 |  0x1C0    0x108     0x10A     0x10B     0x10C
8x16 | 2, 3, 7                       0x109

You can enter these number either hexadecimal (leading `0x') or decimal
(0x100 = 256). You can also use value + 512 to achieve compatibility
with your old number passed to vesafb.

Non-listed number can be achieved by more complicated command-line, for
example 1600x1200x32bpp can be specified by `video=matroxfb:vesa:0x11C,depth:32'.


X11
===

XF{68,86}_FBDev should work just fine, but it is non-accelerated. On non-intel
architectures there are some glitches for 24bpp videomodes. 8, 16 and 32bpp
works fine.

Running another (accelerated) X-Server like XF86_SVGA works too. But (at least)
XFree servers have big troubles in multihead configurations (even on first
head, not even talking about second). Running XFree86 4.x accelerated mga 
driver is possible, but you must not enable DRI - if you do, resolution and
color depth of your X desktop must match resolution and color depths of your
virtual consoles, otherwise X will corrupt accelerator settings.


SVGALib
=======

Driver contains SVGALib compatibility code. It is turned on by choosing textual
mode for console. You can do it at boot time by using videomode
2,3,7,0x108-0x10C or 0x1C0. At runtime, `fbset -depth 0' does this work.
Unfortunately, after SVGALib application exits, screen contents is corrupted.
Switching to another console and back fixes it. I hope that it is SVGALib's
problem and not mine, but I'm not sure.


Configuration
=============

You can pass kernel command line options to matroxfb with
`video=matroxfb:option1,option2:value2,option3' (multiple options should be 
separated by comma, values are separated from options by `:'). 
Accepted options:

mem:X    - size of memory (X can be in megabytes, kilobytes or bytes)
           You can only decrease value determined by driver because of
	   it always probe for memory. Default is to use whole detected
	   memory usable for on-screen display (i.e. max. 8 MB).
disabled - do not load driver; you can use also `off', but `disabled'
           is here too.
enabled  - load driver, if you have `video=matroxfb:disabled' in LILO
           configuration, you can override it by this (you cannot override
	   `off'). It is default.
noaccel  - do not use acceleration engine. It does not work on Alphas.
accel    - use acceleration engine. It is default.
nopan    - create initial consoles with vyres = yres, thus disabling virtual
           scrolling.
pan      - create initial consoles as tall as possible (vyres = memory/vxres).
           It is default.
nopciretry - disable PCI retries. It is needed for some broken chipsets,
           it is autodetected for intel's 82437. In this case device does
	   not comply to PCI 2.1 specs (it will not guarantee that every
	   transaction terminate with success or retry in 32 PCLK).
pciretry - enable PCI retries. It is default, except for intel's 82437.
novga    - disables VGA I/O ports. It is default if BIOS did not enable device.
           You should not use this option, some boards then do not restart
	   without power off.
vga      - preserve state of VGA I/O ports. It is default. Driver does not
           enable VGA I/O if BIOS did not it (it is not safe to enable it in
	   most cases).
nobios   - disables BIOS ROM. It is default if BIOS did not enable BIOS itself.
           You should not use this option, some boards then do not restart
	   without power off.
bios     - preserve state of BIOS ROM. It is default. Driver does not enable
           BIOS if BIOS was not enabled before.
noinit   - tells driver, that devices were already initialized. You should use
           it if you have G100 and/or if driver cannot detect memory, you see
	   strange pattern on screen and so on. Devices not enabled by BIOS
	   are still initialized. It is default.
init     - driver initializes every device it knows about.
memtype  - specifies memory type, implies 'init'. This is valid only for G200 
           and G400 and has following meaning:
             G200: 0 -> 2x128Kx32 chips, 2MB onboard, probably sgram
                   1 -> 2x128Kx32 chips, 4MB onboard, probably sgram
                   2 -> 2x256Kx32 chips, 4MB onboard, probably sgram
                   3 -> 2x256Kx32 chips, 8MB onboard, probably sgram
                   4 -> 2x512Kx16 chips, 8/16MB onboard, probably sdram only
                   5 -> same as above
                   6 -> 4x128Kx32 chips, 4MB onboard, probably sgram
                   7 -> 4x128Kx32 chips, 8MB onboard, probably sgram
             G400: 0 -> 2x512Kx16 SDRAM, 16/32MB
                        2x512Kx32 SGRAM, 16/32MB
                   1 -> 2x256Kx32 SGRAM, 8/16MB
                   2 -> 4x128Kx32 SGRAM, 8/16MB
                   3 -> 4x512Kx32 SDRAM, 32MB
                   4 -> 4x256Kx32 SGRAM, 16/32MB
                   5 -> 2x1Mx32 SDRAM, 32MB
                   6 -> reserved
                   7 -> reserved
           You should use sdram or sgram parameter in addition to memtype 
           parameter.
nomtrr   - disables write combining on frame buffer. This slows down driver but
           there is reported minor incompatibility between GUS DMA and XFree
	   under high loads if write combining is enabled (sound dropouts).
mtrr     - enables write combining on frame buffer. It speeds up video accesses
           much. It is default. You must have MTRR support enabled in kernel
	   and your CPU must have MTRR (f.e. Pentium II have them).
sgram    - tells to driver that you have Gxx0 with SGRAM memory. It has no
           effect without `init'.
sdram    - tells to driver that you have Gxx0 with SDRAM memory.
           It is a default.
inv24    - change timings parameters for 24bpp modes on Millennium and
           Millennium II. Specify this if you see strange color shadows around
	   characters.
noinv24  - use standard timings. It is the default.
inverse  - invert colors on screen (for LCD displays)
noinverse - show true colors on screen. It is default.
dev:X    - bind driver to device X. Driver numbers device from 0 up to N,
           where device 0 is first `known' device found, 1 second and so on.
	   lspci lists devices in this order.
	   Default is `every' known device.
nohwcursor - disables hardware cursor (use software cursor instead).
hwcursor - enables hardware cursor. It is default. If you are using
           non-accelerated mode (`noaccel' or `fbset -accel false'), software
	   cursor is used (except for text mode).
noblink  - disables cursor blinking. Cursor in text mode always blinks (hw
           limitation).
blink    - enables cursor blinking. It is default.
nofastfont - disables fastfont feature. It is default.
fastfont:X - enables fastfont feature. X specifies size of memory reserved for
             font data, it must be >= (fontwidth*fontheight*chars_in_font)/8.
	     It is faster on Gx00 series, but slower on older cards.
grayscale - enable grayscale summing. It works in PSEUDOCOLOR modes (text,
            4bpp, 8bpp). In DIRECTCOLOR modes it is limited to characters
	    displayed through putc/putcs. Direct accesses to framebuffer
	    can paint colors.
nograyscale - disable grayscale summing. It is default.
cross4MB - enables that pixel line can cross 4MB boundary. It is default for
           non-Millennium.
nocross4MB - pixel line must not cross 4MB boundary. It is default for
             Millennium I or II, because of these devices have hardware
	     limitations which do not allow this. But this option is
	     incompatible with some (if not all yet released) versions of
	     XF86_FBDev.
dfp      - enables digital flat panel interface. This option is incompatible with
           secondary (TV) output - if DFP is active, TV output must be
	   inactive and vice versa. DFP always uses same timing as primary
	   (monitor) output.
dfp:X    - use settings X for digital flat panel interface. X is number from
           0 to 0xFF, and meaning of each individual bit is described in
	   G400 manual, in description of DAC register 0x1F. For normal operation
	   you should set all bits to zero, except lowest bit. This lowest bit
	   selects who is source of display clocks, whether G400, or panel.
	   Default value is now read back from hardware - so you should specify
	   this value only if you are also using `init' parameter.
outputs:XYZ - set mapping between CRTC and outputs. Each letter can have value
           of 0 (for no CRTC), 1 (CRTC1) or 2 (CRTC2), and first letter corresponds
	   to primary analog output, second letter to the secondary analog output
	   and third letter to the DVI output. Default setting is 100 for
	   cards below G400 or G400 without DFP, 101 for G400 with DFP, and
	   111 for G450 and G550. You can set mapping only on first card,
	   use matroxset for setting up other devices.
vesa:X   - selects startup videomode. X is number from 0 to 0x1FF, see table
           above for detailed explanation. Default is 640x480x8bpp if driver
	   has 8bpp support. Otherwise first available of 640x350x4bpp,
	   640x480x15bpp, 640x480x24bpp, 640x480x32bpp or 80x25 text
	   (80x25 text is always available).

If you are not satisfied with videomode selected by `vesa' option, you
can modify it with these options:

xres:X   - horizontal resolution, in pixels. Default is derived from `vesa'
           option.
yres:X   - vertical resolution, in pixel lines. Default is derived from `vesa'
           option.
upper:X  - top boundary: lines between end of VSYNC pulse and start of first
           pixel line of picture. Default is derived from `vesa' option.
lower:X  - bottom boundary: lines between end of picture and start of VSYNC
           pulse. Default is derived from `vesa' option.
vslen:X  - length of VSYNC pulse, in lines. Default is derived from `vesa'
           option.
left:X   - left boundary: pixels between end of HSYNC pulse and first pixel.
           Default is derived from `vesa' option.
right:X  - right boundary: pixels between end of picture and start of HSYNC
           pulse. Default is derived from `vesa' option.
hslen:X  - length of HSYNC pulse, in pixels. Default is derived from `vesa'
           option.
pixclock:X - dotclocks, in ps (picoseconds). Default is derived from `vesa'
             option and from `fh' and `fv' options.
sync:X   - sync. pulse - bit 0 inverts HSYNC polarity, bit 1 VSYNC polarity.
           If bit 3 (value 0x08) is set, composite sync instead of HSYNC is
	   generated. If bit 5 (value 0x20) is set, sync on green is turned on.
	   Do not forget that if you want sync on green, you also probably
	   want composite sync.
	   Default depends on `vesa'.
depth:X  - Bits per pixel: 0=text, 4,8,15,16,24 or 32. Default depends on
           `vesa'.

If you know capabilities of your monitor, you can specify some (or all) of
`maxclk', `fh' and `fv'. In this case, `pixclock' is computed so that
pixclock <= maxclk, real_fh <= fh and real_fv <= fv.

maxclk:X - maximum dotclock. X can be specified in MHz, kHz or Hz. Default is
           `don't care'.
fh:X     - maximum horizontal synchronization frequency. X can be specified
           in kHz or Hz. Default is `don't care'.
fv:X     - maximum vertical frequency. X must be specified in Hz. Default is
           70 for modes derived from `vesa' with yres <= 400, 60Hz for
	   yres > 400.


Limitations
===========

There are known and unknown bugs, features and misfeatures.
Currently there are following known bugs:
 + SVGALib does not restore screen on exit
 + generic fbcon-cfbX procedures do not work on Alphas. Due to this,
   `noaccel' (and cfb4 accel) driver does not work on Alpha. So everyone
   with access to /dev/fb* on Alpha can hang machine (you should restrict
   access to /dev/fb* - everyone with access to this device can destroy
   your monitor, believe me...).
 + 24bpp does not support correctly XF-FBDev on big-endian architectures.
 + interlaced text mode is not supported; it looks like hardware limitation,
   but I'm not sure.
 + Gxx0 SGRAM/SDRAM is not autodetected.
 + If you are using more than one framebuffer device, you must boot kernel
   with 'video=scrollback:0'.
 + maybe more...
And following misfeatures:
 + SVGALib does not restore screen on exit.
 + pixclock for text modes is limited by hardware to
    83 MHz on G200
    66 MHz on Millennium I
    60 MHz on Millennium II
   Because I have no access to other devices, I do not know specific
   frequencies for them. So driver does not check this and allows you to
   set frequency higher that this. It causes sparks, black holes and other
   pretty effects on screen. Device was not destroyed during tests. :-)
 + my Millennium G200 oscillator has frequency range from 35 MHz to 380 MHz
   (and it works with 8bpp on about 320 MHz dotclocks (and changed mclk)).
   But Matrox says on product sheet that VCO limit is 50-250 MHz, so I believe
   them (maybe that chip overheats, but it has a very big cooler (G100 has
   none), so it should work).
 + special mixed video/graphics videomodes of Mystique and Gx00 - 2G8V16 and
   G16V16 are not supported
 + color keying is not supported
 + feature connector of Mystique and Gx00 is set to VGA mode (it is disabled
   by BIOS)
 + DDC (monitor detection) is supported through dualhead driver
 + some check for input values are not so strict how it should be (you can
   specify vslen=4000 and so on).
 + maybe more...
And following features:
 + 4bpp is available only on Millennium I and Millennium II. It is hardware
   limitation.
 + selection between 1:5:5:5 and 5:6:5 16bpp videomode is done by -rgba 
   option of fbset: "fbset -depth 16 -rgba 5,5,5" selects 1:5:5:5, anything
   else selects 5:6:5 mode.
 + text mode uses 6 bit VGA palette instead of 8 bit (one of 262144 colors
   instead of one of 16M colors). It is due to hardware limitation of 
   Millennium I/II and SVGALib compatibility.


Benchmarks
==========
It is time to redraw whole screen 1000 times in 1024x768, 60Hz. It is
time for draw 6144000 characters on screen through /dev/vcsa
(for 32bpp it is about 3GB of data (exactly 3000 MB); for 8x16 font in 
16 seconds, i.e. 187 MBps).
Times were obtained from one older version of driver, now they are about 3%
faster, it is kernel-space only time on P-II/350 MHz, Millennium I in 33 MHz
PCI slot, G200 in AGP 2x slot. I did not test vgacon.

NOACCEL
        8x16                 12x22
        Millennium I  G200   Millennium I  G200
8bpp    16.42         9.54   12.33         9.13
16bpp   21.00        15.70   19.11        15.02
24bpp   36.66        36.66   35.00        35.00
32bpp   35.00        30.00   33.85        28.66

ACCEL, nofastfont
        8x16                 12x22                6x11
	Millennium I  G200   Millennium I  G200   Millennium I  G200
8bpp     7.79         7.24   13.55         7.78   30.00        21.01
16bpp    9.13         7.78   16.16         7.78   30.00        21.01
24bpp   14.17        10.72   18.69        10.24   34.99        21.01
32bpp   16.15	     16.16   18.73        13.09   34.99        21.01

ACCEL, fastfont
        8x16                 12x22                6x11
	Millennium I  G200   Millennium I  G200   Millennium I  G200
8bpp     8.41         6.01    6.54         4.37   16.00        10.51
16bpp    9.54         9.12    8.76         6.17   17.52        14.01
24bpp   15.00        12.36   11.67        10.00   22.01        18.32
32bpp   16.18        18.29*  12.71        12.74   24.44        21.00

TEXT
        8x16
	Millennium I  G200
TEXT     3.29         1.50

* Yes, it is slower than Millennium I.


Dualhead G400
=============
Driver supports dualhead G400 with some limitations:
 + secondary head shares videomemory with primary head. It is not problem
   if you have 32MB of videoram, but if you have only 16MB, you may have
   to think twice before choosing videomode (for example twice 1880x1440x32bpp
   is not possible).
 + due to hardware limitation, secondary head can use only 16 and 32bpp
   videomodes.
 + secondary head is not accelerated. There were bad problems with accelerated
   XFree when secondary head used to use acceleration.
 + secondary head always powerups in 640x480@60-32 videomode. You have to use
   fbset to change this mode.
 + secondary head always powerups in monitor mode. You have to use fbmatroxset
   to change it to TV mode. Also, you must select at least 525 lines for
   NTSC output and 625 lines for PAL output.
 + kernel is not fully multihead ready. So some things are impossible to do.
 + if you compiled it as module, you must insert i2c-matroxfb, matroxfb_maven
   and matroxfb_crtc2 into kernel.


Dualhead G450
=============
Driver supports dualhead G450 with some limitations:
 + secondary head shares videomemory with primary head. It is not problem
   if you have 32MB of videoram, but if you have only 16MB, you may have
   to think twice before choosing videomode.
 + due to hardware limitation, secondary head can use only 16 and 32bpp
   videomodes.
 + secondary head is not accelerated.
 + secondary head always powerups in 640x480@60-32 videomode. You have to use
   fbset to change this mode.
 + TV output is not supported
 + kernel is not fully multihead ready, so some things are impossible to do.
 + if you compiled it as module, you must insert matroxfb_g450 and matroxfb_crtc2
   into kernel.
	
--
Petr Vandrovec <vandrove@vc.cvut.cz>
