Linux 2.6.17.7
[linux/fpc-iii.git] / Documentation / fb / intel810.txt
blob4f0d6bc789ef0fadf101eaa362fa3d829dc8a588
1 Intel 810/815 Framebuffer driver
2         Tony Daplas <adaplas@pol.net>
3         http://i810fb.sourceforge.net
5         March 17, 2002
7         First Released: July 2001
8         Last Update:    September 12, 2005
9 ================================================================
11 A. Introduction
12         This is a framebuffer driver for various Intel 810/815 compatible
13 graphics devices.  These would include:
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
22 B.  Features
24         - Choice of using Discrete Video Timings, VESA Generalized Timing
25           Formula, or a framebuffer specific database to set the video mode
27         - Supports a variable range of horizontal and vertical resolution, and
28           vertical refresh rates if the VESA Generalized Timing Formula is 
29           enabled.
31         - Supports color depths of 8, 16, 24 and 32 bits per pixel
33         - Supports pseudocolor, directcolor, or truecolor visuals
35         - Full and optimized hardware acceleration at 8, 16 and 24 bpp
37         - Robust video state save and restore
39         - MTRR support 
41         - Utilizes user-entered monitor specifications to automatically
42           calculate required video mode parameters.
44         - Can concurrently run with xfree86 running with native i810 drivers 
46         - Hardware Cursor Support
48         - Supports EDID probing either by DDC/I2C or through the BIOS
50 C.  List of available options
51         
52    a. "video=i810fb"  
53         enables the i810 driver
55         Recommendation: required
57    b. "xres:<value>"  
58         select horizontal resolution in pixels. (This parameter will be
59         ignored if 'mode_option' is specified.  See 'o' below).
61         Recommendation: user preference 
62         (default = 640)
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)  
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. 
77         Recommendation: do not set
78         (default = 480)
80    e. "vram:<value>"
81         select amount of system RAM in MB to allocate for the video memory 
83         Recommendation: 1 - 4 MB.
84         (default = 4)
86    f. "bpp:<value>"   
87         select desired pixel depth 
89         Recommendation: 8
90         (default = 8)
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.
98         Recommendation: check monitor manual for correct values
99         default (29/30)
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.
107         Recommendation: check monitor manual for correct values
108         (default = 60/60)
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.
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.
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'. 
132         Recommendation: enable
133         (default = not set) 
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'. 
140         Recommendation: do not set
141         (default = not set) 
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. 
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.
156         Recommendation: do not set
157         (default = not set)
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.
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.
170 D. Kernel booting
172 Separate each option/option-pair by commas (,) and the option from its value
173 with a colon (:) as in the following:
175 video=i810fb:option1,option2:value2
177 Sample Usage
178 ------------
180 In /etc/lilo.conf, add the line:
182 append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
183         vsync1:50,vsync2:85,accel,mtrr"
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.  
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.
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. 
202 Example, to enable MTRR, include "mtrr=1".
204 Sample Usage
205 ------------
207 Using the same setup as described above, load the module like this:
209         modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \
210                  vsync2=85 accel=1 mtrr=1
212 Or just add the following to /etc/modprobe.conf
214         options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
215         vsync2=85 accel=1 mtrr=1
217 and just do a 
219         modprobe i810fb
222 F.  Setup
224         a. Do your usual method of configuring the kernel. 
225         
226         make menuconfig/xconfig/config
228         b. Under "Code Maturity Options", enable "Prompt for experimental/
229            incomplete code/drivers".
231         c. Enable agpgart support for the Intel 810/815 on-board graphics.
232            This is required.  The option is under "Character Devices"
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'.
243         f. If you want a framebuffer console, enable it under "Console 
244            Drivers"
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 :-).
253 G.  Acknowledgment:
254         
255         1.  Geert Uytterhoeven - his excellent howto and the virtual
256                                  framebuffer driver code made this possible.
258         2.  Jeff Hartmann for his agpgart code.  
260         3.  The X developers.  Insights were provided just by reading the
261             XFree86 source code.
263         4.  Intel(c).  For this value-oriented chipset driver and for
264             providing documentation.
266         5. Matt Sottek.  His inputs and ideas  helped in making some
267         optimizations possible.
269 H.  Home Page:
271         A more complete, and probably updated information is provided at
272 http://i810fb.sourceforge.net.
274 ###########################
275 Tony