1 ================================ 1 ================================ 2 Intel 810/815 Framebuffer driver 2 Intel 810/815 Framebuffer driver 3 ================================ 3 ================================ 4 4 5 Tony Daplas <adaplas@pol.net> 5 Tony Daplas <adaplas@pol.net> 6 6 7 http://i810fb.sourceforge.net 7 http://i810fb.sourceforge.net 8 8 9 March 17, 2002 9 March 17, 2002 10 10 11 First Released: July 2001 11 First Released: July 2001 12 Last Update: September 12, 2005 12 Last Update: September 12, 2005 13 13 14 A. Introduction 14 A. Introduction 15 =============== 15 =============== 16 16 17 This is a framebuffer driver for vario 17 This is a framebuffer driver for various Intel 810/815 compatible 18 graphics devices. These include: 18 graphics devices. These include: 19 19 20 - Intel 810 20 - Intel 810 21 - Intel 810E 21 - Intel 810E 22 - Intel 810-DC100 22 - Intel 810-DC100 23 - Intel 815 Internal graphics only, 10 23 - Intel 815 Internal graphics only, 100Mhz FSB 24 - Intel 815 Internal graphics only 24 - Intel 815 Internal graphics only 25 - Intel 815 Internal graphics and AGP 25 - Intel 815 Internal graphics and AGP 26 26 27 B. Features 27 B. Features 28 ============ 28 ============ 29 29 30 - Choice of using Discrete Video Timin 30 - Choice of using Discrete Video Timings, VESA Generalized Timing 31 Formula, or a framebuffer specific d 31 Formula, or a framebuffer specific database to set the video mode 32 32 33 - Supports a variable range of horizon 33 - Supports a variable range of horizontal and vertical resolution and 34 vertical refresh rates if the VESA G 34 vertical refresh rates if the VESA Generalized Timing Formula is 35 enabled. 35 enabled. 36 36 37 - Supports color depths of 8, 16, 24 a 37 - Supports color depths of 8, 16, 24 and 32 bits per pixel 38 38 39 - Supports pseudocolor, directcolor, o 39 - Supports pseudocolor, directcolor, or truecolor visuals 40 40 41 - Full and optimized hardware accelera 41 - Full and optimized hardware acceleration at 8, 16 and 24 bpp 42 42 43 - Robust video state save and restore 43 - Robust video state save and restore 44 44 45 - MTRR support 45 - MTRR support 46 46 47 - Utilizes user-entered monitor specif 47 - Utilizes user-entered monitor specifications to automatically 48 calculate required video mode parame 48 calculate required video mode parameters. 49 49 50 - Can concurrently run with xfree86 ru 50 - Can concurrently run with xfree86 running with native i810 drivers 51 51 52 - Hardware Cursor Support 52 - Hardware Cursor Support 53 53 54 - Supports EDID probing either by DDC/ 54 - Supports EDID probing either by DDC/I2C or through the BIOS 55 55 56 C. List of available options 56 C. List of available options 57 ============================= 57 ============================= 58 58 59 a. "video=i810fb" 59 a. "video=i810fb" 60 enables the i810 driver 60 enables the i810 driver 61 61 62 Recommendation: required 62 Recommendation: required 63 63 64 b. "xres:<value>" 64 b. "xres:<value>" 65 select horizontal resolution in pixels 65 select horizontal resolution in pixels. (This parameter will be 66 ignored if 'mode_option' is specified. 66 ignored if 'mode_option' is specified. See 'o' below). 67 67 68 Recommendation: user preference 68 Recommendation: user preference 69 (default = 640) 69 (default = 640) 70 70 71 c. "yres:<value>" 71 c. "yres:<value>" 72 select vertical resolution in scanline 72 select vertical resolution in scanlines. If Discrete Video Timings 73 is enabled, this will be ignored and c 73 is enabled, this will be ignored and computed as 3*xres/4. (This 74 parameter will be ignored if 'mode_opt 74 parameter will be ignored if 'mode_option' is specified. See 'o' 75 below) 75 below) 76 76 77 Recommendation: user preference 77 Recommendation: user preference 78 (default = 480) 78 (default = 480) 79 79 80 d. "vyres:<value>" 80 d. "vyres:<value>" 81 select virtual vertical resolution in 81 select virtual vertical resolution in scanlines. If (0) or none 82 is specified, this will be computed ag 82 is specified, this will be computed against maximum available memory. 83 83 84 Recommendation: do not set 84 Recommendation: do not set 85 (default = 480) 85 (default = 480) 86 86 87 e. "vram:<value>" 87 e. "vram:<value>" 88 select amount of system RAM in MB to a 88 select amount of system RAM in MB to allocate for the video memory 89 89 90 Recommendation: 1 - 4 MB. 90 Recommendation: 1 - 4 MB. 91 (default = 4) 91 (default = 4) 92 92 93 f. "bpp:<value>" 93 f. "bpp:<value>" 94 select desired pixel depth 94 select desired pixel depth 95 95 96 Recommendation: 8 96 Recommendation: 8 97 (default = 8) 97 (default = 8) 98 98 99 g. "hsync1/hsync2:<value>" 99 g. "hsync1/hsync2:<value>" 100 select the minimum and maximum Horizon 100 select the minimum and maximum Horizontal Sync Frequency of the 101 monitor in kHz. If using a fixed freq 101 monitor in kHz. If using a fixed frequency monitor, hsync1 must 102 be equal to hsync2. If EDID probing is 102 be equal to hsync2. If EDID probing is successful, these will be 103 ignored and values will be taken from 103 ignored and values will be taken from the EDID block. 104 104 105 Recommendation: check monitor manual f 105 Recommendation: check monitor manual for correct values 106 (default = 29/30) 106 (default = 29/30) 107 107 108 h. "vsync1/vsync2:<value>" 108 h. "vsync1/vsync2:<value>" 109 select the minimum and maximum Vertica 109 select the minimum and maximum Vertical Sync Frequency of the monitor 110 in Hz. You can also use this option to 110 in Hz. You can also use this option to lock your monitor's refresh 111 rate. If EDID probing is successful, t 111 rate. If EDID probing is successful, these will be ignored and values 112 will be taken from the EDID block. 112 will be taken from the EDID block. 113 113 114 Recommendation: check monitor manual f 114 Recommendation: check monitor manual for correct values 115 (default = 60/60) 115 (default = 60/60) 116 116 117 IMPORTANT: If you need to clamp your 117 IMPORTANT: If you need to clamp your timings, try to give some 118 leeway for computational errors (over/ 118 leeway for computational errors (over/underflows). Example: if 119 using vsync1/vsync2 = 60/60, make sure 119 using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least 120 a 1 unit difference, and vice versa. 120 a 1 unit difference, and vice versa. 121 121 122 i. "voffset:<value>" 122 i. "voffset:<value>" 123 select at what offset in MB of the log 123 select at what offset in MB of the logical memory to allocate the 124 framebuffer memory. The intent is to 124 framebuffer memory. The intent is to avoid the memory blocks 125 used by standard graphics applications 125 used by standard graphics applications (XFree86). The default 126 offset (16 MB for a 64 MB aperture, 8 126 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 127 avoid XFree86's usage and allows up to 7 MB/15 MB of framebuffer 128 memory. Depending on your usage, adju 128 memory. Depending on your usage, adjust the value up or down 129 (0 for maximum usage, 31/63 MB for the 129 (0 for maximum usage, 31/63 MB for the least amount). Note, an 130 arbitrary setting may conflict with XF 130 arbitrary setting may conflict with XFree86. 131 131 132 Recommendation: do not set 132 Recommendation: do not set 133 (default = 8 or 16 MB) 133 (default = 8 or 16 MB) 134 134 135 j. "accel" 135 j. "accel" 136 enable text acceleration. This can be 136 enable text acceleration. This can be enabled/reenabled anytime 137 by using 'fbset -accel true/false'. 137 by using 'fbset -accel true/false'. 138 138 139 Recommendation: enable 139 Recommendation: enable 140 (default = not set) 140 (default = not set) 141 141 142 k. "mtrr" 142 k. "mtrr" 143 enable MTRR. This allows data transfe 143 enable MTRR. This allows data transfers to the framebuffer memory 144 to occur in bursts which can significa 144 to occur in bursts which can significantly increase performance. 145 Not very helpful with the i810/i815 be 145 Not very helpful with the i810/i815 because of 'shared memory'. 146 146 147 Recommendation: do not set 147 Recommendation: do not set 148 (default = not set) 148 (default = not set) 149 149 150 l. "extvga" 150 l. "extvga" 151 if specified, secondary/external VGA o 151 if specified, secondary/external VGA output will always be enabled. 152 Useful if the BIOS turns off the VGA p 152 Useful if the BIOS turns off the VGA port when no monitor is attached. 153 The external VGA monitor can then be a 153 The external VGA monitor can then be attached without rebooting. 154 154 155 Recommendation: do not set 155 Recommendation: do not set 156 (default = not set) 156 (default = not set) 157 157 158 m. "sync" 158 m. "sync" 159 Forces the hardware engine to do a "sy 159 Forces the hardware engine to do a "sync" or wait for the hardware 160 to finish before starting another inst 160 to finish before starting another instruction. This will produce a 161 more stable setup, but will be slower. 161 more stable setup, but will be slower. 162 162 163 Recommendation: do not set 163 Recommendation: do not set 164 (default = not set) 164 (default = not set) 165 165 166 n. "dcolor" 166 n. "dcolor" 167 Use directcolor visual instead of true 167 Use directcolor visual instead of truecolor for pixel depths greater 168 than 8 bpp. Useful for color tuning, 168 than 8 bpp. Useful for color tuning, such as gamma control. 169 169 170 Recommendation: do not set 170 Recommendation: do not set 171 (default = not set) 171 (default = not set) 172 172 173 o. <xres>x<yres>[-<bpp>][@<refresh>] 173 o. <xres>x<yres>[-<bpp>][@<refresh>] 174 The driver will now accept specificati 174 The driver will now accept specification of boot mode option. If this 175 is specified, the options 'xres' and ' 175 is specified, the options 'xres' and 'yres' will be ignored. See 176 Documentation/fb/modedb.rst for usage. 176 Documentation/fb/modedb.rst for usage. 177 177 178 D. Kernel booting 178 D. Kernel booting 179 ================= 179 ================= 180 180 181 Separate each option/option-pair by commas (,) 181 Separate each option/option-pair by commas (,) and the option from its value 182 with a colon (:) as in the following:: 182 with a colon (:) as in the following:: 183 183 184 video=i810fb:option1,option2:value2 184 video=i810fb:option1,option2:value2 185 185 186 Sample Usage 186 Sample Usage 187 ------------ 187 ------------ 188 188 189 In /etc/lilo.conf, add the line:: 189 In /etc/lilo.conf, add the line:: 190 190 191 append="video=i810fb:vram:2,xres:1024,yres:7 191 append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \ 192 vsync1:50,vsync2:85,accel,mtrr" 192 vsync1:50,vsync2:85,accel,mtrr" 193 193 194 This will initialize the framebuffer to 1024x7 194 This will initialize the framebuffer to 1024x768 at 8bpp. The framebuffer 195 will use 2 MB of System RAM. MTRR support will 195 will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate 196 will be computed based on the hsync1/hsync2 an 196 will be computed based on the hsync1/hsync2 and vsync1/vsync2 values. 197 197 198 IMPORTANT: 198 IMPORTANT: 199 You must include hsync1, hsync2, vsync1 and 199 You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes 200 better than 640x480 at 60Hz. HOWEVER, if you 200 better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination 201 supports I2C and has an EDID block, you can 201 supports I2C and has an EDID block, you can safely exclude hsync1, hsync2, 202 vsync1 and vsync2 parameters. These paramet 202 vsync1 and vsync2 parameters. These parameters will be taken from the EDID 203 block. 203 block. 204 204 205 E. Module options 205 E. Module options 206 ================== 206 ================== 207 207 208 The module parameters are essentially similar 208 The module parameters are essentially similar to the kernel 209 parameters. The main difference is that you ne 209 parameters. The main difference is that you need to include a Boolean value 210 (1 for TRUE, and 0 for FALSE) for those option 210 (1 for TRUE, and 0 for FALSE) for those options which don't need a value. 211 211 212 Example, to enable MTRR, include "mtrr=1". 212 Example, to enable MTRR, include "mtrr=1". 213 213 214 Sample Usage 214 Sample Usage 215 ------------ 215 ------------ 216 216 217 Using the same setup as described above, load 217 Using the same setup as described above, load the module like this:: 218 218 219 modprobe i810fb vram=2 xres=1024 bpp=8 219 modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \ 220 vsync2=85 accel=1 mtrr=1 220 vsync2=85 accel=1 mtrr=1 221 221 222 Or just add the following to a configuration f 222 Or just add the following to a configuration file in /etc/modprobe.d/:: 223 223 224 options i810fb vram=2 xres=1024 bpp=16 224 options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \ 225 vsync2=85 accel=1 mtrr=1 225 vsync2=85 accel=1 mtrr=1 226 226 227 and just do a:: 227 and just do a:: 228 228 229 modprobe i810fb 229 modprobe i810fb 230 230 231 231 232 F. Setup 232 F. Setup 233 ========= 233 ========= 234 234 235 a. Do your usual method of configuring 235 a. Do your usual method of configuring the kernel 236 236 237 make menuconfig/xconfig/config 237 make menuconfig/xconfig/config 238 238 239 b. Under "Code maturity level options" 239 b. Under "Code maturity level options" enable "Prompt for development 240 and/or incomplete code/drivers". 240 and/or incomplete code/drivers". 241 241 242 c. Enable agpgart support for the Inte 242 c. Enable agpgart support for the Intel 810/815 on-board graphics. 243 This is required. The option is un 243 This is required. The option is under "Character Devices". 244 244 245 d. Under "Graphics Support", select "I 245 d. Under "Graphics Support", select "Intel 810/815" either statically 246 or as a module. Choose "use VESA G 246 or as a module. Choose "use VESA Generalized Timing Formula" if 247 you need to maximize the capability 247 you need to maximize the capability of your display. To be on the 248 safe side, you can leave this unsel 248 safe side, you can leave this unselected. 249 249 250 e. If you want support for DDC/I2C pro 250 e. If you want support for DDC/I2C probing (Plug and Play Displays), 251 set 'Enable DDC Support' to 'y'. To 251 set 'Enable DDC Support' to 'y'. To make this option appear, set 252 'use VESA Generalized Timing Formul 252 'use VESA Generalized Timing Formula' to 'y'. 253 253 254 f. If you want a framebuffer console, 254 f. If you want a framebuffer console, enable it under "Console 255 Drivers". 255 Drivers". 256 256 257 g. Compile your kernel. 257 g. Compile your kernel. 258 258 259 h. Load the driver as described in sec 259 h. Load the driver as described in sections D and E. 260 260 261 i. Try the DirectFB (http://www.direc 261 i. Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver 262 patch to see the chipset in action 262 patch to see the chipset in action (or inaction :-). 263 263 264 G. Acknowledgment: 264 G. Acknowledgment: 265 =================== 265 =================== 266 266 267 1. Geert Uytterhoeven - his excellent 267 1. Geert Uytterhoeven - his excellent howto and the virtual 268 framebuffer driver code made this 268 framebuffer driver code made this possible. 269 269 270 2. Jeff Hartmann for his agpgart code 270 2. Jeff Hartmann for his agpgart code. 271 271 272 3. The X developers. Insights were p 272 3. The X developers. Insights were provided just by reading the 273 XFree86 source code. 273 XFree86 source code. 274 274 275 4. Intel(c). For this value-oriented 275 4. Intel(c). For this value-oriented chipset driver and for 276 providing documentation. 276 providing documentation. 277 277 278 5. Matt Sottek. His inputs and ideas 278 5. Matt Sottek. His inputs and ideas helped in making some 279 optimizations possible. 279 optimizations possible. 280 280 281 H. Home Page: 281 H. Home Page: 282 ============== 282 ============== 283 283 284 A more complete, and probably updated 284 A more complete, and probably updated information is provided at 285 http://i810fb.sourceforge.net. 285 http://i810fb.sourceforge.net. 286 286 287 Tony 287 Tony
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.