Merge ../torvalds-2.6/
[pandora-kernel.git] / Documentation / fb / intel810.txt
1 Intel 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
11 A. Introduction
12         This is a framebuffer driver for various Intel 810/815 compatible
13 graphics 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
22 B.  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  
48         - Supports EDID probing either by DDC/I2C or through the BIOS
49
50 C.  List of available options
51         
52    a. "video=i810fb"  
53         enables the i810 driver
54
55         Recommendation: required
56  
57    b. "xres:<value>"  
58         select horizontal resolution in pixels. (This parameter will be
59         ignored if 'mode_option' is specified.  See 'o' below).
60
61         Recommendation: user preference 
62         (default = 640)
63
64    c. "yres:<value>"
65         select vertical resolution in scanlines. If Discrete Video Timings
66         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)  
69
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 
95         be equal to hsync2. If EDID probing is successful, these will be
96         ignored and values will be taken from the EDID block.
97
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 
104         rate. If EDID probing is successful, these will be ignored and values
105         will be taken from the EDID block.
106
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)
165    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
170 D. Kernel booting
171
172 Separate each option/option-pair by commas (,) and the option from its value
173 with a colon (:) as in the following:
174
175 video=i810fb:option1,option2:value2
176
177 Sample Usage
178 ------------
179
180 In /etc/lilo.conf, add the line:
181
182 append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
183         vsync1:50,vsync2:85,accel,mtrr"
184
185 This will initialize the framebuffer to 1024x768 at 8bpp.  The framebuffer
186 will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate 
187 will be computed based on the hsync1/hsync2 and vsync1/vsync2 values.  
188
189 IMPORTANT:
190 You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes
191 better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination
192 supports I2C and has an EDID block, you can safely exclude hsync1, hsync2,
193 vsync1 and vsync2 parameters.  These parameters will be taken from the EDID
194 block.
195
196 E.  Module options
197         
198         The module parameters are essentially similar to the kernel 
199 parameters. 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
202 Example, to enable MTRR, include "mtrr=1".
203
204 Sample Usage
205 ------------
206
207 Using 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
212 Or 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
217 and just do a 
218
219         modprobe i810fb
220
221
222 F.  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
235            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 
237            safe side, you can leave this unselected.  
238   
239         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 
244            Drivers"
245
246         g. Compile your kernel. 
247                 
248         h. Load the driver as described in section D and E.
249         
250         i.  Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver
251             patch to see the chipset in action (or inaction :-).
252
253 G.  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
269 H.  Home Page:
270
271         A more complete, and probably updated information is provided at
272 http://i810fb.sourceforge.net.
273
274 ###########################
275 Tony
276