Committer: Michael Beasley <mike@snafu.setup>
[mikesnafu-overlay.git] / Documentation / fb / intel810.txt
blobbe3e7836abef235c5140cf7810eee84f27b8d835
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
13         This is a framebuffer driver for various Intel 810/815 compatible
14         graphics devices.  These include:
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
23 B.  Features
25         - Choice of using Discrete Video Timings, VESA Generalized Timing
26           Formula, or a framebuffer specific database to set the video mode
28         - Supports a variable range of horizontal and vertical resolution and
29           vertical refresh rates if the VESA Generalized Timing Formula is
30           enabled.
32         - Supports color depths of 8, 16, 24 and 32 bits per pixel
34         - Supports pseudocolor, directcolor, or truecolor visuals
36         - Full and optimized hardware acceleration at 8, 16 and 24 bpp
38         - Robust video state save and restore
40         - MTRR support
42         - Utilizes user-entered monitor specifications to automatically
43           calculate required video mode parameters.
45         - Can concurrently run with xfree86 running with native i810 drivers
47         - Hardware Cursor Support
49         - Supports EDID probing either by DDC/I2C or through the BIOS
51 C.  List of available options
53    a. "video=i810fb"
54         enables the i810 driver
56         Recommendation: required
58    b. "xres:<value>"
59         select horizontal resolution in pixels. (This parameter will be
60         ignored if 'mode_option' is specified.  See 'o' below).
62         Recommendation: user preference
63         (default = 640)
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)
71         Recommendation: user preference
72         (default = 480)
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.
78         Recommendation: do not set
79         (default = 480)
81    e. "vram:<value>"
82         select amount of system RAM in MB to allocate for the video memory
84         Recommendation: 1 - 4 MB.
85         (default = 4)
87    f. "bpp:<value>"
88         select desired pixel depth
90         Recommendation: 8
91         (default = 8)
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.
99         Recommendation: check monitor manual for correct values
100         (default = 29/30)
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.
108         Recommendation: check monitor manual for correct values
109         (default = 60/60)
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.
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.
126         Recommendation: do not set
127         (default = 8 or 16 MB)
129    j. "accel"
130         enable text acceleration.  This can be enabled/reenabled anytime
131         by using 'fbset -accel true/false'.
133         Recommendation: enable
134         (default = not set)
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'.
141         Recommendation: do not set
142         (default = not set)
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.
149         Recommendation: do not set
150         (default = not set)
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.
157         Recommendation: do not set
158         (default = not set)
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.
164         Recommendation: do not set
165         (default = not set)
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.
172 D. Kernel booting
174 Separate each option/option-pair by commas (,) and the option from its value
175 with a colon (:) as in the following:
177 video=i810fb:option1,option2:value2
179 Sample Usage
180 ------------
182 In /etc/lilo.conf, add the line:
184 append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
185         vsync1:50,vsync2:85,accel,mtrr"
187 This will initialize the framebuffer to 1024x768 at 8bpp.  The framebuffer
188 will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate
189 will be computed based on the hsync1/hsync2 and vsync1/vsync2 values.
191 IMPORTANT:
192 You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes
193 better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination
194 supports I2C and has an EDID block, you can safely exclude hsync1, hsync2,
195 vsync1 and vsync2 parameters.  These parameters will be taken from the EDID
196 block.
198 E.  Module options
200 The module parameters are essentially similar to the kernel
201 parameters. 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.
204 Example, to enable MTRR, include "mtrr=1".
206 Sample Usage
207 ------------
209 Using the same setup as described above, load the module like this:
211         modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \
212                  vsync2=85 accel=1 mtrr=1
214 Or just add the following to /etc/modprobe.conf
216         options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
217         vsync2=85 accel=1 mtrr=1
219 and just do a
221         modprobe i810fb
224 F.  Setup
226         a. Do your usual method of configuring the kernel.
228         make menuconfig/xconfig/config
230         b. Under "Code maturity level options" enable "Prompt for development
231            and/or incomplete code/drivers".
233         c. Enable agpgart support for the Intel 810/815 on-board graphics.
234            This is required.  The option is under "Character Devices".
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.
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'.
245         f. If you want a framebuffer console, enable it under "Console
246            Drivers".
248         g. Compile your kernel.
250         h. Load the driver as described in sections D and E.
252         i.  Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver
253             patch to see the chipset in action (or inaction :-).
255 G.  Acknowledgment:
257         1.  Geert Uytterhoeven - his excellent howto and the virtual
258             framebuffer driver code made this possible.
260         2.  Jeff Hartmann for his agpgart code.
262         3.  The X developers.  Insights were provided just by reading the
263             XFree86 source code.
265         4.  Intel(c).  For this value-oriented chipset driver and for
266             providing documentation.
268         5. Matt Sottek.  His inputs and ideas  helped in making some
269            optimizations possible.
271 H.  Home Page:
273         A more complete, and probably updated information is provided at
274         http://i810fb.sourceforge.net.
276 ###########################
277 Tony