blob: eb86098db91f6c9bf018a208d522e1e5fcd69d46 [file] [log] [blame]
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -03001================================
Linus Torvalds1da177e2005-04-16 15:20:36 -07002Intel 810/815 Framebuffer driver
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -03003================================
Linus Torvalds1da177e2005-04-16 15:20:36 -07004
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -03005Tony Daplas <adaplas@pol.net>
Linus Torvalds1da177e2005-04-16 15:20:36 -07006
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -03007http://i810fb.sourceforge.net
8
9March 17, 2002
10
11First Released: July 2001
12Last Update: September 12, 2005
Linus Torvalds1da177e2005-04-16 15:20:36 -070013
14A. Introduction
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -030015===============
Reiner Herrmann9b262142006-10-03 01:15:08 -070016
Linus Torvalds1da177e2005-04-16 15:20:36 -070017 This is a framebuffer driver for various Intel 810/815 compatible
Reiner Herrmann9b262142006-10-03 01:15:08 -070018 graphics devices. These include:
Linus Torvalds1da177e2005-04-16 15:20:36 -070019
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -030020 - Intel 810
21 - Intel 810E
22 - Intel 810-DC100
23 - Intel 815 Internal graphics only, 100Mhz FSB
24 - Intel 815 Internal graphics only
25 - Intel 815 Internal graphics and AGP
Linus Torvalds1da177e2005-04-16 15:20:36 -070026
27B. Features
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -030028============
Linus Torvalds1da177e2005-04-16 15:20:36 -070029
Reiner Herrmann9b262142006-10-03 01:15:08 -070030 - Choice of using Discrete Video Timings, VESA Generalized Timing
Linus Torvalds1da177e2005-04-16 15:20:36 -070031 Formula, or a framebuffer specific database to set the video mode
32
Reiner Herrmann9b262142006-10-03 01:15:08 -070033 - Supports a variable range of horizontal and vertical resolution and
34 vertical refresh rates if the VESA Generalized Timing Formula is
Linus Torvalds1da177e2005-04-16 15:20:36 -070035 enabled.
36
Reiner Herrmann9b262142006-10-03 01:15:08 -070037 - Supports color depths of 8, 16, 24 and 32 bits per pixel
Linus Torvalds1da177e2005-04-16 15:20:36 -070038
39 - Supports pseudocolor, directcolor, or truecolor visuals
40
Reiner Herrmann9b262142006-10-03 01:15:08 -070041 - Full and optimized hardware acceleration at 8, 16 and 24 bpp
Linus Torvalds1da177e2005-04-16 15:20:36 -070042
43 - Robust video state save and restore
44
Reiner Herrmann9b262142006-10-03 01:15:08 -070045 - MTRR support
Linus Torvalds1da177e2005-04-16 15:20:36 -070046
47 - Utilizes user-entered monitor specifications to automatically
48 calculate required video mode parameters.
49
Reiner Herrmann9b262142006-10-03 01:15:08 -070050 - Can concurrently run with xfree86 running with native i810 drivers
Linus Torvalds1da177e2005-04-16 15:20:36 -070051
52 - Hardware Cursor Support
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -030053
Antonino A. Daplasc93a7772005-09-12 09:18:12 +080054 - Supports EDID probing either by DDC/I2C or through the BIOS
55
Linus Torvalds1da177e2005-04-16 15:20:36 -070056C. List of available options
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -030057=============================
Reiner Herrmann9b262142006-10-03 01:15:08 -070058
59 a. "video=i810fb"
Linus Torvalds1da177e2005-04-16 15:20:36 -070060 enables the i810 driver
61
62 Recommendation: required
Reiner Herrmann9b262142006-10-03 01:15:08 -070063
64 b. "xres:<value>"
Antonino A. Daplasc93a7772005-09-12 09:18:12 +080065 select horizontal resolution in pixels. (This parameter will be
66 ignored if 'mode_option' is specified. See 'o' below).
Linus Torvalds1da177e2005-04-16 15:20:36 -070067
Reiner Herrmann9b262142006-10-03 01:15:08 -070068 Recommendation: user preference
Linus Torvalds1da177e2005-04-16 15:20:36 -070069 (default = 640)
70
71 c. "yres:<value>"
72 select vertical resolution in scanlines. If Discrete Video Timings
Antonino A. Daplasc93a7772005-09-12 09:18:12 +080073 is enabled, this will be ignored and computed as 3*xres/4. (This
74 parameter will be ignored if 'mode_option' is specified. See 'o'
Reiner Herrmann9b262142006-10-03 01:15:08 -070075 below)
Linus Torvalds1da177e2005-04-16 15:20:36 -070076
77 Recommendation: user preference
78 (default = 480)
Reiner Herrmann9b262142006-10-03 01:15:08 -070079
80 d. "vyres:<value>"
Linus Torvalds1da177e2005-04-16 15:20:36 -070081 select virtual vertical resolution in scanlines. If (0) or none
Reiner Herrmann9b262142006-10-03 01:15:08 -070082 is specified, this will be computed against maximum available memory.
Linus Torvalds1da177e2005-04-16 15:20:36 -070083
84 Recommendation: do not set
85 (default = 480)
86
87 e. "vram:<value>"
Reiner Herrmann9b262142006-10-03 01:15:08 -070088 select amount of system RAM in MB to allocate for the video memory
Linus Torvalds1da177e2005-04-16 15:20:36 -070089
90 Recommendation: 1 - 4 MB.
91 (default = 4)
92
Reiner Herrmann9b262142006-10-03 01:15:08 -070093 f. "bpp:<value>"
94 select desired pixel depth
Linus Torvalds1da177e2005-04-16 15:20:36 -070095
96 Recommendation: 8
97 (default = 8)
98
Reiner Herrmann9b262142006-10-03 01:15:08 -070099 g. "hsync1/hsync2:<value>"
100 select the minimum and maximum Horizontal Sync Frequency of the
101 monitor in kHz. If using a fixed frequency monitor, hsync1 must
Antonino A. Daplasc93a7772005-09-12 09:18:12 +0800102 be equal to hsync2. If EDID probing is successful, these will be
103 ignored and values will be taken from the EDID block.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700104
105 Recommendation: check monitor manual for correct values
Reiner Herrmann9b262142006-10-03 01:15:08 -0700106 (default = 29/30)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700107
Reiner Herrmann9b262142006-10-03 01:15:08 -0700108 h. "vsync1/vsync2:<value>"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700109 select the minimum and maximum Vertical Sync Frequency of the monitor
Reiner Herrmann9b262142006-10-03 01:15:08 -0700110 in Hz. You can also use this option to lock your monitor's refresh
Antonino A. Daplasc93a7772005-09-12 09:18:12 +0800111 rate. If EDID probing is successful, these will be ignored and values
112 will be taken from the EDID block.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700113
114 Recommendation: check monitor manual for correct values
115 (default = 60/60)
116
Reiner Herrmann9b262142006-10-03 01:15:08 -0700117 IMPORTANT: If you need to clamp your timings, try to give some
118 leeway for computational errors (over/underflows). Example: if
Linus Torvalds1da177e2005-04-16 15:20:36 -0700119 using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least
120 a 1 unit difference, and vice versa.
121
Reiner Herrmann9b262142006-10-03 01:15:08 -0700122 i. "voffset:<value>"
123 select at what offset in MB of the logical memory to allocate the
Linus Torvalds1da177e2005-04-16 15:20:36 -0700124 framebuffer memory. The intent is to avoid the memory blocks
125 used by standard graphics applications (XFree86). The default
Reiner Herrmann9b262142006-10-03 01:15:08 -0700126 offset (16 MB for a 64 MB aperture, 8 MB for a 32 MB aperture) will
127 avoid XFree86's usage and allows up to 7 MB/15 MB of framebuffer
128 memory. Depending on your usage, adjust the value up or down
129 (0 for maximum usage, 31/63 MB for the least amount). Note, an
Linus Torvalds1da177e2005-04-16 15:20:36 -0700130 arbitrary setting may conflict with XFree86.
131
132 Recommendation: do not set
133 (default = 8 or 16 MB)
Reiner Herrmann9b262142006-10-03 01:15:08 -0700134
135 j. "accel"
136 enable text acceleration. This can be enabled/reenabled anytime
137 by using 'fbset -accel true/false'.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138
139 Recommendation: enable
Reiner Herrmann9b262142006-10-03 01:15:08 -0700140 (default = not set)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700141
Reiner Herrmann9b262142006-10-03 01:15:08 -0700142 k. "mtrr"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700143 enable MTRR. This allows data transfers to the framebuffer memory
144 to occur in bursts which can significantly increase performance.
Reiner Herrmann9b262142006-10-03 01:15:08 -0700145 Not very helpful with the i810/i815 because of 'shared memory'.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700146
147 Recommendation: do not set
Reiner Herrmann9b262142006-10-03 01:15:08 -0700148 (default = not set)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700149
150 l. "extvga"
151 if specified, secondary/external VGA output will always be enabled.
152 Useful if the BIOS turns off the VGA port when no monitor is attached.
Reiner Herrmann9b262142006-10-03 01:15:08 -0700153 The external VGA monitor can then be attached without rebooting.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700154
155 Recommendation: do not set
156 (default = not set)
Reiner Herrmann9b262142006-10-03 01:15:08 -0700157
158 m. "sync"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700159 Forces the hardware engine to do a "sync" or wait for the hardware
Reiner Herrmann9b262142006-10-03 01:15:08 -0700160 to finish before starting another instruction. This will produce a
Linus Torvalds1da177e2005-04-16 15:20:36 -0700161 more stable setup, but will be slower.
162
163 Recommendation: do not set
164 (default = not set)
165
166 n. "dcolor"
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300167 Use directcolor visual instead of truecolor for pixel depths greater
Linus Torvalds1da177e2005-04-16 15:20:36 -0700168 than 8 bpp. Useful for color tuning, such as gamma control.
169
170 Recommendation: do not set
171 (default = not set)
Reiner Herrmann9b262142006-10-03 01:15:08 -0700172
Antonino A. Daplasc93a7772005-09-12 09:18:12 +0800173 o. <xres>x<yres>[-<bpp>][@<refresh>]
174 The driver will now accept specification of boot mode option. If this
175 is specified, the options 'xres' and 'yres' will be ignored. See
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300176 Documentation/fb/modedb.rst for usage.
Antonino A. Daplasc93a7772005-09-12 09:18:12 +0800177
Linus Torvalds1da177e2005-04-16 15:20:36 -0700178D. Kernel booting
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300179=================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700180
181Separate each option/option-pair by commas (,) and the option from its value
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300182with a colon (:) as in the following::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700183
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300184 video=i810fb:option1,option2:value2
Linus Torvalds1da177e2005-04-16 15:20:36 -0700185
186Sample Usage
187------------
188
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300189In /etc/lilo.conf, add the line::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700190
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300191 append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
192 vsync1:50,vsync2:85,accel,mtrr"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700193
194This will initialize the framebuffer to 1024x768 at 8bpp. The framebuffer
Reiner Herrmann9b262142006-10-03 01:15:08 -0700195will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate
196will be computed based on the hsync1/hsync2 and vsync1/vsync2 values.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700197
198IMPORTANT:
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300199 You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes
200 better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination
201 supports I2C and has an EDID block, you can safely exclude hsync1, hsync2,
202 vsync1 and vsync2 parameters. These parameters will be taken from the EDID
203 block.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700204
205E. Module options
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300206==================
Reiner Herrmann9b262142006-10-03 01:15:08 -0700207
208The module parameters are essentially similar to the kernel
209parameters. The main difference is that you need to include a Boolean value
210(1 for TRUE, and 0 for FALSE) for those options which don't need a value.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700211
212Example, to enable MTRR, include "mtrr=1".
213
214Sample Usage
215------------
216
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300217Using the same setup as described above, load the module like this::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700218
219 modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300220 vsync2=85 accel=1 mtrr=1
Linus Torvalds1da177e2005-04-16 15:20:36 -0700221
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300222Or just add the following to a configuration file in /etc/modprobe.d/::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700223
224 options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
225 vsync2=85 accel=1 mtrr=1
226
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300227and just do a::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700228
229 modprobe i810fb
230
231
232F. Setup
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300233=========
Linus Torvalds1da177e2005-04-16 15:20:36 -0700234
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300235 a. Do your usual method of configuring the kernel
Reiner Herrmann9b262142006-10-03 01:15:08 -0700236
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300237 make menuconfig/xconfig/config
Linus Torvalds1da177e2005-04-16 15:20:36 -0700238
Reiner Herrmann9b262142006-10-03 01:15:08 -0700239 b. Under "Code maturity level options" enable "Prompt for development
240 and/or incomplete code/drivers".
Linus Torvalds1da177e2005-04-16 15:20:36 -0700241
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300242 c. Enable agpgart support for the Intel 810/815 on-board graphics.
Reiner Herrmann9b262142006-10-03 01:15:08 -0700243 This is required. The option is under "Character Devices".
Linus Torvalds1da177e2005-04-16 15:20:36 -0700244
245 d. Under "Graphics Support", select "Intel 810/815" either statically
Antonino A. Daplasc93a7772005-09-12 09:18:12 +0800246 or as a module. Choose "use VESA Generalized Timing Formula" if
Reiner Herrmann9b262142006-10-03 01:15:08 -0700247 you need to maximize the capability of your display. To be on the
248 safe side, you can leave this unselected.
249
Antonino A. Daplasc93a7772005-09-12 09:18:12 +0800250 e. If you want support for DDC/I2C probing (Plug and Play Displays),
251 set 'Enable DDC Support' to 'y'. To make this option appear, set
252 'use VESA Generalized Timing Formula' to 'y'.
253
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300254 f. If you want a framebuffer console, enable it under "Console
Reiner Herrmann9b262142006-10-03 01:15:08 -0700255 Drivers".
Linus Torvalds1da177e2005-04-16 15:20:36 -0700256
Reiner Herrmann9b262142006-10-03 01:15:08 -0700257 g. Compile your kernel.
258
259 h. Load the driver as described in sections D and E.
260
Linus Torvalds1da177e2005-04-16 15:20:36 -0700261 i. Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver
262 patch to see the chipset in action (or inaction :-).
263
264G. Acknowledgment:
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300265===================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700266
Reiner Herrmann9b262142006-10-03 01:15:08 -0700267 1. Geert Uytterhoeven - his excellent howto and the virtual
268 framebuffer driver code made this possible.
269
270 2. Jeff Hartmann for his agpgart code.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700271
272 3. The X developers. Insights were provided just by reading the
273 XFree86 source code.
274
275 4. Intel(c). For this value-oriented chipset driver and for
Reiner Herrmann9b262142006-10-03 01:15:08 -0700276 providing documentation.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700277
278 5. Matt Sottek. His inputs and ideas helped in making some
Reiner Herrmann9b262142006-10-03 01:15:08 -0700279 optimizations possible.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700280
281H. Home Page:
Mauro Carvalho Chehabab42b812019-06-12 14:52:45 -0300282==============
Linus Torvalds1da177e2005-04-16 15:20:36 -0700283
284 A more complete, and probably updated information is provided at
Reiner Herrmann9b262142006-10-03 01:15:08 -0700285 http://i810fb.sourceforge.net.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700286
Linus Torvalds1da177e2005-04-16 15:20:36 -0700287Tony