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