Blame view

Documentation/fb/intel810.txt 8.28 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
  Intel 810/815 Framebuffer driver
   	Tony Daplas <adaplas@pol.net>
  	http://i810fb.sourceforge.net
  
  	March 17, 2002
  
  	First Released: July 2001
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
8
  	Last Update:    September 12, 2005
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
9
10
11
  ================================================================
  
  A. Introduction
9b262144a   Reiner Herrmann   [PATCH] Documenta...
12

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13
  	This is a framebuffer driver for various Intel 810/815 compatible
9b262144a   Reiner Herrmann   [PATCH] Documenta...
14
  	graphics devices.  These include:
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
15
16
17
18
19
20
21
22
23
  
  	Intel 810
  	Intel 810E
  	Intel 810-DC100
  	Intel 815 Internal graphics only, 100Mhz FSB
  	Intel 815 Internal graphics only
  	Intel 815 Internal graphics and AGP
  
  B.  Features
9b262144a   Reiner Herrmann   [PATCH] Documenta...
24
  	- Choice of using Discrete Video Timings, VESA Generalized Timing
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
25
  	  Formula, or a framebuffer specific database to set the video mode
9b262144a   Reiner Herrmann   [PATCH] Documenta...
26
27
  	- Supports a variable range of horizontal and vertical resolution and
  	  vertical refresh rates if the VESA Generalized Timing Formula is
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
28
  	  enabled.
9b262144a   Reiner Herrmann   [PATCH] Documenta...
29
  	- Supports color depths of 8, 16, 24 and 32 bits per pixel
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
30
31
  
  	- Supports pseudocolor, directcolor, or truecolor visuals
9b262144a   Reiner Herrmann   [PATCH] Documenta...
32
  	- Full and optimized hardware acceleration at 8, 16 and 24 bpp
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
33
34
  
  	- Robust video state save and restore
9b262144a   Reiner Herrmann   [PATCH] Documenta...
35
  	- MTRR support
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
36
37
38
  
  	- Utilizes user-entered monitor specifications to automatically
  	  calculate required video mode parameters.
9b262144a   Reiner Herrmann   [PATCH] Documenta...
39
  	- Can concurrently run with xfree86 running with native i810 drivers
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
40
41
42
  
  	- Hardware Cursor Support
   
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
43
  	- Supports EDID probing either by DDC/I2C or through the BIOS
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
44
  C.  List of available options
9b262144a   Reiner Herrmann   [PATCH] Documenta...
45
46
  
     a. "video=i810fb"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
47
48
49
  	enables the i810 driver
  
  	Recommendation: required
9b262144a   Reiner Herrmann   [PATCH] Documenta...
50
51
  
     b. "xres:<value>"
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
52
53
  	select horizontal resolution in pixels. (This parameter will be
  	ignored if 'mode_option' is specified.  See 'o' below).
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
54

9b262144a   Reiner Herrmann   [PATCH] Documenta...
55
  	Recommendation: user preference
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
56
57
58
59
  	(default = 640)
  
     c. "yres:<value>"
  	select vertical resolution in scanlines. If Discrete Video Timings
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
60
61
  	is enabled, this will be ignored and computed as 3*xres/4.  (This
  	parameter will be ignored if 'mode_option' is specified.  See 'o'
9b262144a   Reiner Herrmann   [PATCH] Documenta...
62
  	below)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
63
64
65
  
  	Recommendation: user preference
  	(default = 480)
9b262144a   Reiner Herrmann   [PATCH] Documenta...
66
67
  
     d. "vyres:<value>"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
68
  	select virtual vertical resolution in scanlines. If (0) or none
9b262144a   Reiner Herrmann   [PATCH] Documenta...
69
  	is specified, this will be computed against maximum available memory.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
70
71
72
73
74
  
  	Recommendation: do not set
  	(default = 480)
  
     e. "vram:<value>"
9b262144a   Reiner Herrmann   [PATCH] Documenta...
75
  	select amount of system RAM in MB to allocate for the video memory
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
76
77
78
  
  	Recommendation: 1 - 4 MB.
  	(default = 4)
9b262144a   Reiner Herrmann   [PATCH] Documenta...
79
80
     f. "bpp:<value>"
  	select desired pixel depth
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
81
82
83
  
  	Recommendation: 8
  	(default = 8)
9b262144a   Reiner Herrmann   [PATCH] Documenta...
84
85
86
     g. "hsync1/hsync2:<value>"
  	select the minimum and maximum Horizontal Sync Frequency of the
  	monitor in kHz.  If using a fixed frequency monitor, hsync1 must
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
87
88
  	be equal to hsync2. If EDID probing is successful, these will be
  	ignored and values will be taken from the EDID block.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
89
90
  
  	Recommendation: check monitor manual for correct values
9b262144a   Reiner Herrmann   [PATCH] Documenta...
91
  	(default = 29/30)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
92

9b262144a   Reiner Herrmann   [PATCH] Documenta...
93
     h. "vsync1/vsync2:<value>"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
94
  	select the minimum and maximum Vertical Sync Frequency of the monitor
9b262144a   Reiner Herrmann   [PATCH] Documenta...
95
  	in Hz. You can also use this option to lock your monitor's refresh
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
96
97
  	rate. If EDID probing is successful, these will be ignored and values
  	will be taken from the EDID block.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
98
99
100
  
  	Recommendation: check monitor manual for correct values
  	(default = 60/60)
9b262144a   Reiner Herrmann   [PATCH] Documenta...
101
102
  	IMPORTANT:  If you need to clamp your timings, try to give some
  	leeway for computational errors (over/underflows).  Example: if
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
103
104
  	using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least
  	a 1 unit difference, and vice versa.
9b262144a   Reiner Herrmann   [PATCH] Documenta...
105
106
     i. "voffset:<value>"
  	select at what offset in MB of the logical memory to allocate the
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
107
108
  	framebuffer memory.  The intent is to avoid the memory blocks
  	used by standard graphics applications (XFree86).  The default
9b262144a   Reiner Herrmann   [PATCH] Documenta...
109
110
111
112
  	offset (16 MB for a 64 MB aperture, 8 MB for a 32 MB aperture) will
  	avoid XFree86's usage and allows up to 7 MB/15 MB of framebuffer
  	memory.  Depending on your usage, adjust the value up or down
  	(0 for maximum usage, 31/63 MB for the least amount).  Note, an
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
113
114
115
116
  	arbitrary setting may conflict with XFree86.
  
  	Recommendation: do not set
  	(default = 8 or 16 MB)
9b262144a   Reiner Herrmann   [PATCH] Documenta...
117
118
119
120
  
     j. "accel"
  	enable text acceleration.  This can be enabled/reenabled anytime
  	by using 'fbset -accel true/false'.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
121
122
  
  	Recommendation: enable
9b262144a   Reiner Herrmann   [PATCH] Documenta...
123
  	(default = not set)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
124

9b262144a   Reiner Herrmann   [PATCH] Documenta...
125
     k. "mtrr"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
126
127
  	enable MTRR.  This allows data transfers to the framebuffer memory
  	to occur in bursts which can significantly increase performance.
9b262144a   Reiner Herrmann   [PATCH] Documenta...
128
  	Not very helpful with the i810/i815 because of 'shared memory'.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
129
130
  
  	Recommendation: do not set
9b262144a   Reiner Herrmann   [PATCH] Documenta...
131
  	(default = not set)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
132
133
134
135
  
     l. "extvga"
  	if specified, secondary/external VGA output will always be enabled.
  	Useful if the BIOS turns off the VGA port when no monitor is attached.
9b262144a   Reiner Herrmann   [PATCH] Documenta...
136
  	The external VGA monitor can then be attached without rebooting.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
137
138
139
  
  	Recommendation: do not set
  	(default = not set)
9b262144a   Reiner Herrmann   [PATCH] Documenta...
140
141
  
     m. "sync"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
142
  	Forces the hardware engine to do a "sync" or wait for the hardware
9b262144a   Reiner Herrmann   [PATCH] Documenta...
143
  	to finish before starting another instruction. This will produce a
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
144
145
146
147
148
149
150
151
152
153
154
  	more stable setup, but will be slower.
  
  	Recommendation: do not set
  	(default = not set)
  
     n. "dcolor"
          Use directcolor visual instead of truecolor for pixel depths greater
  	than 8 bpp.  Useful for color tuning, such as gamma control.
  
  	Recommendation: do not set
  	(default = not set)
9b262144a   Reiner Herrmann   [PATCH] Documenta...
155

c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
156
157
158
159
     o. <xres>x<yres>[-<bpp>][@<refresh>]
  	The driver will now accept specification of boot mode option.  If this
  	is specified, the options 'xres' and 'yres' will be ignored. See
  	Documentation/fb/modedb.txt for usage.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
  D. Kernel booting
  
  Separate each option/option-pair by commas (,) and the option from its value
  with a colon (:) as in the following:
  
  video=i810fb:option1,option2:value2
  
  Sample Usage
  ------------
  
  In /etc/lilo.conf, add the line:
  
  append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
          vsync1:50,vsync2:85,accel,mtrr"
  
  This will initialize the framebuffer to 1024x768 at 8bpp.  The framebuffer
9b262144a   Reiner Herrmann   [PATCH] Documenta...
176
177
  will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate
  will be computed based on the hsync1/hsync2 and vsync1/vsync2 values.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
178
179
180
  
  IMPORTANT:
  You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
181
182
183
184
  better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination
  supports I2C and has an EDID block, you can safely exclude hsync1, hsync2,
  vsync1 and vsync2 parameters.  These parameters will be taken from the EDID
  block.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
185
186
  
  E.  Module options
9b262144a   Reiner Herrmann   [PATCH] Documenta...
187
188
189
190
  
  The module parameters are essentially similar to the kernel
  parameters. The main difference is that you need to include a Boolean value
  (1 for TRUE, and 0 for FALSE) for those options which don't need a value.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
  
  Example, to enable MTRR, include "mtrr=1".
  
  Sample Usage
  ------------
  
  Using the same setup as described above, load the module like this:
  
  	modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \
  	         vsync2=85 accel=1 mtrr=1
  
  Or just add the following to /etc/modprobe.conf
  
  	options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
  	vsync2=85 accel=1 mtrr=1
9b262144a   Reiner Herrmann   [PATCH] Documenta...
206
  and just do a
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
207
208
209
210
211
  
  	modprobe i810fb
  
  
  F.  Setup
9b262144a   Reiner Herrmann   [PATCH] Documenta...
212
  	a. Do your usual method of configuring the kernel.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
213
  	make menuconfig/xconfig/config
9b262144a   Reiner Herrmann   [PATCH] Documenta...
214
215
  	b. Under "Code maturity level options" enable "Prompt for development
  	   and/or incomplete code/drivers".
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
216
217
  
   	c. Enable agpgart support for the Intel 810/815 on-board graphics.
9b262144a   Reiner Herrmann   [PATCH] Documenta...
218
  	   This is required.  The option is under "Character Devices".
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
219
220
  
  	d. Under "Graphics Support", select "Intel 810/815" either statically
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
221
  	   or as a module.  Choose "use VESA Generalized Timing Formula" if
9b262144a   Reiner Herrmann   [PATCH] Documenta...
222
223
  	   you need to maximize the capability of your display.  To be on the
  	   safe side, you can leave this unselected.
c93a77710   Antonino A. Daplas   [PATCH] i810fb: U...
224
225
226
  	e. If you want support for DDC/I2C probing (Plug and Play Displays),
  	   set 'Enable DDC Support' to 'y'. To make this option appear, set
  	   'use VESA Generalized Timing Formula' to 'y'.
9b262144a   Reiner Herrmann   [PATCH] Documenta...
227
228
229
230
231
232
          f. If you want a framebuffer console, enable it under "Console
  	   Drivers".
  
  	g. Compile your kernel.
  
  	h. Load the driver as described in sections D and E.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
233

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
234
235
236
237
  	i.  Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver
  	    patch to see the chipset in action (or inaction :-).
  
  G.  Acknowledgment:
9b262144a   Reiner Herrmann   [PATCH] Documenta...
238

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
239
  	1.  Geert Uytterhoeven - his excellent howto and the virtual
9b262144a   Reiner Herrmann   [PATCH] Documenta...
240
  	    framebuffer driver code made this possible.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
241

9b262144a   Reiner Herrmann   [PATCH] Documenta...
242
  	2.  Jeff Hartmann for his agpgart code.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
243
244
245
246
247
  
  	3.  The X developers.  Insights were provided just by reading the
  	    XFree86 source code.
  
  	4.  Intel(c).  For this value-oriented chipset driver and for
9b262144a   Reiner Herrmann   [PATCH] Documenta...
248
  	    providing documentation.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
249
250
  
  	5. Matt Sottek.  His inputs and ideas  helped in making some
9b262144a   Reiner Herrmann   [PATCH] Documenta...
251
  	   optimizations possible.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
252
253
254
255
  
  H.  Home Page:
  
  	A more complete, and probably updated information is provided at
9b262144a   Reiner Herrmann   [PATCH] Documenta...
256
  	http://i810fb.sourceforge.net.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
257
258
259
  
  ###########################
  Tony