Intel 810/815 Framebuffer driver
 	Tony Daplas <adaplas@pol.net>
	http://i810fb.sourceforge.net

	March 17, 2002

	First Released: July 2001
	Last Update:    September 12, 2005
================================================================

A. Introduction
	This is a framebuffer driver for various Intel 810/815 compatible
graphics devices.  These would include:

	Intel 810
	Intel 810E
	Intel 810-DC100
	Intel 815 Internal graphics only, 100Mhz FSB
	Intel 815 Internal graphics only
	Intel 815 Internal graphics and AGP

B.  Features

        - Choice of using Discrete Video Timings, VESA Generalized Timing
	  Formula, or a framebuffer specific database to set the video mode

	- Supports a variable range of horizontal and vertical resolution, and
	  vertical refresh rates if the VESA Generalized Timing Formula is 
	  enabled.

        - Supports color depths of 8, 16, 24 and 32 bits per pixel

	- Supports pseudocolor, directcolor, or truecolor visuals

        - Full and optimized hardware acceleration at 8, 16 and 24 bpp

	- Robust video state save and restore

        - MTRR support 

	- Utilizes user-entered monitor specifications to automatically
	  calculate required video mode parameters.

	- Can concurrently run with xfree86 running with native i810 drivers 

	- Hardware Cursor Support
 
	- Supports EDID probing either by DDC/I2C or through the BIOS

C.  List of available options
	
   a. "video=i810fb"  
	enables the i810 driver

	Recommendation: required
 
   b. "xres:<value>"  
	select horizontal resolution in pixels. (This parameter will be
	ignored if 'mode_option' is specified.  See 'o' below).

	Recommendation: user preference 
	(default = 640)

   c. "yres:<value>"
	select vertical resolution in scanlines. If Discrete Video Timings
	is enabled, this will be ignored and computed as 3*xres/4.  (This
	parameter will be ignored if 'mode_option' is specified.  See 'o'
	below)  

	Recommendation: user preference
	(default = 480)
		
   d. "vyres:<value>" 
	select virtual vertical resolution in scanlines. If (0) or none
	is specified, this will be computed against maximum available memory. 

	Recommendation: do not set
	(default = 480)

   e. "vram:<value>"
	select amount of system RAM in MB to allocate for the video memory 

	Recommendation: 1 - 4 MB.
	(default = 4)

   f. "bpp:<value>"   
	select desired pixel depth 

	Recommendation: 8
	(default = 8)

   g. "hsync1/hsync2:<value>" 
	select the minimum and maximum Horizontal Sync Frequency of the 
	monitor in KHz.  If a using a fixed frequency monitor, hsync1 must 
	be equal to hsync2. If EDID probing is successful, these will be
	ignored and values will be taken from the EDID block.

	Recommendation: check monitor manual for correct values
	default (29/30)

   h. "vsync1/vsync2:<value>" 
	select the minimum and maximum Vertical Sync Frequency of the monitor
	in Hz. You can also use this option to lock your monitor's refresh 
	rate. If EDID probing is successful, these will be ignored and values
	will be taken from the EDID block.

	Recommendation: check monitor manual for correct values
	(default = 60/60)

	IMPORTANT:  If you need to clamp your timings, try to give some 
	leeway for computational errors (over/underflows).  Example: if 
	using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least
	a 1 unit difference, and vice versa.

   i. "voffset:<value>"	
        select at what offset in MB of the logical memory to allocate the 
	framebuffer memory.  The intent is to avoid the memory blocks
	used by standard graphics applications (XFree86).  The default
        offset (16 MB for a 64MB aperture, 8 MB for a 32MB aperture) will
        avoid XFree86's usage and allows up to 7MB/15MB of framebuffer
        memory.  Depending on your usage, adjust the value up or down, 
	(0 for maximum usage, 31/63 MB for the least amount).  Note, an 
	arbitrary setting may conflict with XFree86.

	Recommendation: do not set
	(default = 8 or 16 MB)
      
   j. "accel" 
	enable text acceleration.  This can be enabled/reenabled anytime 
	by using 'fbset -accel true/false'. 

	Recommendation: enable
	(default = not set) 

   k. "mtrr" 
	enable MTRR.  This allows data transfers to the framebuffer memory
	to occur in bursts which can significantly increase performance.
	Not very helpful with the i810/i815 because of 'shared memory'. 

	Recommendation: do not set
	(default = not set) 

   l. "extvga"
	if specified, secondary/external VGA output will always be enabled.
	Useful if the BIOS turns off the VGA port when no monitor is attached.
	The external VGA monitor can then be attached without rebooting. 

	Recommendation: do not set
	(default = not set)
	
   m. "sync" 
	Forces the hardware engine to do a "sync" or wait for the hardware
	to finish before starting another instruction. This will produce a 
	more stable setup, but will be slower.

	Recommendation: do not set
	(default = not set)

   n. "dcolor"
        Use directcolor visual instead of truecolor for pixel depths greater
	than 8 bpp.  Useful for color tuning, such as gamma control.

	Recommendation: do not set
	(default = not set)
   o. <xres>x<yres>[-<bpp>][@<refresh>]
	The driver will now accept specification of boot mode option.  If this
	is specified, the options 'xres' and 'yres' will be ignored. See
	Documentation/fb/modedb.txt for usage.

D. Kernel booting

Separate each option/option-pair by commas (,) and the option from its value
with a colon (:) as in the following:

video=i810fb:option1,option2:value2

Sample Usage
------------

In /etc/lilo.conf, add the line:

append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
        vsync1:50,vsync2:85,accel,mtrr"

This will initialize the framebuffer to 1024x768 at 8bpp.  The framebuffer
will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate 
will be computed based on the hsync1/hsync2 and vsync1/vsync2 values.  

IMPORTANT:
You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes
better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination
supports I2C and has an EDID block, you can safely exclude hsync1, hsync2,
vsync1 and vsync2 parameters.  These parameters will be taken from the EDID
block.

E.  Module options
	
	The module parameters are essentially similar to the kernel 
parameters. The main difference is that you need to include a Boolean value 
(1 for TRUE, and 0 for FALSE) for those options which don't need a value. 

Example, to enable MTRR, include "mtrr=1".

Sample Usage
------------

Using the same setup as described above, load the module like this:

	modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \
	         vsync2=85 accel=1 mtrr=1

Or just add the following to /etc/modprobe.conf

	options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
	vsync2=85 accel=1 mtrr=1

and just do a 

	modprobe i810fb


F.  Setup

	a. Do your usual method of configuring the kernel. 
	
	make menuconfig/xconfig/config

	b. Under "Code Maturity Options", enable "Prompt for experimental/
	   incomplete code/drivers".

 	c. Enable agpgart support for the Intel 810/815 on-board graphics.
	   This is required.  The option is under "Character Devices"

	d. Under "Graphics Support", select "Intel 810/815" either statically
	   or as a module.  Choose "use VESA Generalized Timing Formula" if
	   you need to maximize the capability of your display.  To be on the 
	   safe side, you can leave this unselected.  
  
	e. If you want support for DDC/I2C probing (Plug and Play Displays),
	   set 'Enable DDC Support' to 'y'. To make this option appear, set
	   'use VESA Generalized Timing Formula' to 'y'.

        f. If you want a framebuffer console, enable it under "Console 
	   Drivers"

	g. Compile your kernel. 
	  	
	h. Load the driver as described in section D and E.
	
	i.  Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver
	    patch to see the chipset in action (or inaction :-).

G.  Acknowledgment:
	
	1.  Geert Uytterhoeven - his excellent howto and the virtual
                                 framebuffer driver code made this possible.

	2.  Jeff Hartmann for his agpgart code.  

	3.  The X developers.  Insights were provided just by reading the
	    XFree86 source code.

	4.  Intel(c).  For this value-oriented chipset driver and for
            providing documentation.

	5. Matt Sottek.  His inputs and ideas  helped in making some
	optimizations possible.

H.  Home Page:

	A more complete, and probably updated information is provided at
http://i810fb.sourceforge.net.

###########################
Tony

