[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 Millenium and
           Millenium 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-Millenium.
nocross4MB - pixel line must not cross 4MB boundary. It is default for
             Millenium 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>
