1Intel 810/815 Framebuffer driver
2 	Tony Daplas <adaplas@pol.net>
3	http://i810fb.sourceforge.net
4
5	March 17, 2002
6
7	First Released: July 2001
8	Last Update:    September 12, 2005
9================================================================
10
11A. Introduction
12
13	This is a framebuffer driver for various Intel 810/815 compatible
14	graphics devices.  These include:
15
16	Intel 810
17	Intel 810E
18	Intel 810-DC100
19	Intel 815 Internal graphics only, 100Mhz FSB
20	Intel 815 Internal graphics only
21	Intel 815 Internal graphics and AGP
22
23B.  Features
24
25	- Choice of using Discrete Video Timings, VESA Generalized Timing
26	  Formula, or a framebuffer specific database to set the video mode
27
28	- Supports a variable range of horizontal and vertical resolution and
29	  vertical refresh rates if the VESA Generalized Timing Formula is
30	  enabled.
31
32	- Supports color depths of 8, 16, 24 and 32 bits per pixel
33
34	- Supports pseudocolor, directcolor, or truecolor visuals
35
36	- Full and optimized hardware acceleration at 8, 16 and 24 bpp
37
38	- Robust video state save and restore
39
40	- MTRR support
41
42	- Utilizes user-entered monitor specifications to automatically
43	  calculate required video mode parameters.
44
45	- Can concurrently run with xfree86 running with native i810 drivers
46
47	- Hardware Cursor Support
48 
49	- Supports EDID probing either by DDC/I2C or through the BIOS
50
51C.  List of available options
52
53   a. "video=i810fb"
54	enables the i810 driver
55
56	Recommendation: required
57
58   b. "xres:<value>"
59	select horizontal resolution in pixels. (This parameter will be
60	ignored if 'mode_option' is specified.  See 'o' below).
61
62	Recommendation: user preference
63	(default = 640)
64
65   c. "yres:<value>"
66	select vertical resolution in scanlines. If Discrete Video Timings
67	is enabled, this will be ignored and computed as 3*xres/4.  (This
68	parameter will be ignored if 'mode_option' is specified.  See 'o'
69	below)
70
71	Recommendation: user preference
72	(default = 480)
73
74   d. "vyres:<value>"
75	select virtual vertical resolution in scanlines. If (0) or none
76	is specified, this will be computed against maximum available memory.
77
78	Recommendation: do not set
79	(default = 480)
80
81   e. "vram:<value>"
82	select amount of system RAM in MB to allocate for the video memory
83
84	Recommendation: 1 - 4 MB.
85	(default = 4)
86
87   f. "bpp:<value>"
88	select desired pixel depth
89
90	Recommendation: 8
91	(default = 8)
92
93   g. "hsync1/hsync2:<value>"
94	select the minimum and maximum Horizontal Sync Frequency of the
95	monitor in kHz.  If using a fixed frequency monitor, hsync1 must
96	be equal to hsync2. If EDID probing is successful, these will be
97	ignored and values will be taken from the EDID block.
98
99	Recommendation: check monitor manual for correct values
100	(default = 29/30)
101
102   h. "vsync1/vsync2:<value>"
103	select the minimum and maximum Vertical Sync Frequency of the monitor
104	in Hz. You can also use this option to lock your monitor's refresh
105	rate. If EDID probing is successful, these will be ignored and values
106	will be taken from the EDID block.
107
108	Recommendation: check monitor manual for correct values
109	(default = 60/60)
110
111	IMPORTANT:  If you need to clamp your timings, try to give some
112	leeway for computational errors (over/underflows).  Example: if
113	using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least
114	a 1 unit difference, and vice versa.
115
116   i. "voffset:<value>"
117	select at what offset in MB of the logical memory to allocate the
118	framebuffer memory.  The intent is to avoid the memory blocks
119	used by standard graphics applications (XFree86).  The default
120	offset (16 MB for a 64 MB aperture, 8 MB for a 32 MB aperture) will
121	avoid XFree86's usage and allows up to 7 MB/15 MB of framebuffer
122	memory.  Depending on your usage, adjust the value up or down
123	(0 for maximum usage, 31/63 MB for the least amount).  Note, an
124	arbitrary setting may conflict with XFree86.
125
126	Recommendation: do not set
127	(default = 8 or 16 MB)
128
129   j. "accel"
130	enable text acceleration.  This can be enabled/reenabled anytime
131	by using 'fbset -accel true/false'.
132
133	Recommendation: enable
134	(default = not set)
135
136   k. "mtrr"
137	enable MTRR.  This allows data transfers to the framebuffer memory
138	to occur in bursts which can significantly increase performance.
139	Not very helpful with the i810/i815 because of 'shared memory'.
140
141	Recommendation: do not set
142	(default = not set)
143
144   l. "extvga"
145	if specified, secondary/external VGA output will always be enabled.
146	Useful if the BIOS turns off the VGA port when no monitor is attached.
147	The external VGA monitor can then be attached without rebooting.
148
149	Recommendation: do not set
150	(default = not set)
151
152   m. "sync"
153	Forces the hardware engine to do a "sync" or wait for the hardware
154	to finish before starting another instruction. This will produce a
155	more stable setup, but will be slower.
156
157	Recommendation: do not set
158	(default = not set)
159
160   n. "dcolor"
161        Use directcolor visual instead of truecolor for pixel depths greater
162	than 8 bpp.  Useful for color tuning, such as gamma control.
163
164	Recommendation: do not set
165	(default = not set)
166
167   o. <xres>x<yres>[-<bpp>][@<refresh>]
168	The driver will now accept specification of boot mode option.  If this
169	is specified, the options 'xres' and 'yres' will be ignored. See
170	Documentation/fb/modedb.txt for usage.
171
172D. Kernel booting
173
174Separate each option/option-pair by commas (,) and the option from its value
175with a colon (:) as in the following:
176
177video=i810fb:option1,option2:value2
178
179Sample Usage
180------------
181
182In /etc/lilo.conf, add the line:
183
184append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
185        vsync1:50,vsync2:85,accel,mtrr"
186
187This will initialize the framebuffer to 1024x768 at 8bpp.  The framebuffer
188will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate
189will be computed based on the hsync1/hsync2 and vsync1/vsync2 values.
190
191IMPORTANT:
192You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes
193better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination
194supports I2C and has an EDID block, you can safely exclude hsync1, hsync2,
195vsync1 and vsync2 parameters.  These parameters will be taken from the EDID
196block.
197
198E.  Module options
199
200The module parameters are essentially similar to the kernel
201parameters. The main difference is that you need to include a Boolean value
202(1 for TRUE, and 0 for FALSE) for those options which don't need a value.
203
204Example, to enable MTRR, include "mtrr=1".
205
206Sample Usage
207------------
208
209Using the same setup as described above, load the module like this:
210
211	modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \
212	         vsync2=85 accel=1 mtrr=1
213
214Or just add the following to a configuration file in /etc/modprobe.d/
215
216	options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
217	vsync2=85 accel=1 mtrr=1
218
219and just do a
220
221	modprobe i810fb
222
223
224F.  Setup
225
226	a. Do your usual method of configuring the kernel.
227
228	make menuconfig/xconfig/config
229
230	b. Under "Code maturity level options" enable "Prompt for development
231	   and/or incomplete code/drivers".
232
233 	c. Enable agpgart support for the Intel 810/815 on-board graphics.
234	   This is required.  The option is under "Character Devices".
235
236	d. Under "Graphics Support", select "Intel 810/815" either statically
237	   or as a module.  Choose "use VESA Generalized Timing Formula" if
238	   you need to maximize the capability of your display.  To be on the
239	   safe side, you can leave this unselected.
240
241	e. If you want support for DDC/I2C probing (Plug and Play Displays),
242	   set 'Enable DDC Support' to 'y'. To make this option appear, set
243	   'use VESA Generalized Timing Formula' to 'y'.
244
245        f. If you want a framebuffer console, enable it under "Console
246	   Drivers".
247
248	g. Compile your kernel.
249
250	h. Load the driver as described in sections D and E.
251
252	i.  Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver
253	    patch to see the chipset in action (or inaction :-).
254
255G.  Acknowledgment:
256
257	1.  Geert Uytterhoeven - his excellent howto and the virtual
258	    framebuffer driver code made this possible.
259
260	2.  Jeff Hartmann for his agpgart code.
261
262	3.  The X developers.  Insights were provided just by reading the
263	    XFree86 source code.
264
265	4.  Intel(c).  For this value-oriented chipset driver and for
266	    providing documentation.
267
268	5. Matt Sottek.  His inputs and ideas  helped in making some
269	   optimizations possible.
270
271H.  Home Page:
272
273	A more complete, and probably updated information is provided at
274	http://i810fb.sourceforge.net.
275
276###########################
277Tony
278
279