1Intel 810/815 Framebuffer driver 2 Tony Daplas <adaplas@pol.net> 3 http://i810fb.sourceforge.net 4 5 March 17, 2002 6 7 First Released: July 2001 8 Last Update: September 12, 2005 9================================================================ 10 11A. Introduction 12 13 This is a framebuffer driver for various Intel 810/815 compatible 14 graphics devices. These include: 15 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 22 23B. Features 24 25 - Choice of using Discrete Video Timings, VESA Generalized Timing 26 Formula, or a framebuffer specific database to set the video mode 27 28 - Supports a variable range of horizontal and vertical resolution and 29 vertical refresh rates if the VESA Generalized Timing Formula is 30 enabled. 31 32 - Supports color depths of 8, 16, 24 and 32 bits per pixel 33 34 - Supports pseudocolor, directcolor, or truecolor visuals 35 36 - Full and optimized hardware acceleration at 8, 16 and 24 bpp 37 38 - Robust video state save and restore 39 40 - MTRR support 41 42 - Utilizes user-entered monitor specifications to automatically 43 calculate required video mode parameters. 44 45 - Can concurrently run with xfree86 running with native i810 drivers 46 47 - Hardware Cursor Support 48 49 - Supports EDID probing either by DDC/I2C or through the BIOS 50 51C. List of available options 52 53 a. "video=i810fb" 54 enables the i810 driver 55 56 Recommendation: required 57 58 b. "xres:<value>" 59 select horizontal resolution in pixels. (This parameter will be 60 ignored if 'mode_option' is specified. See 'o' below). 61 62 Recommendation: user preference 63 (default = 640) 64 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) 70 71 Recommendation: user preference 72 (default = 480) 73 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. 77 78 Recommendation: do not set 79 (default = 480) 80 81 e. "vram:<value>" 82 select amount of system RAM in MB to allocate for the video memory 83 84 Recommendation: 1 - 4 MB. 85 (default = 4) 86 87 f. "bpp:<value>" 88 select desired pixel depth 89 90 Recommendation: 8 91 (default = 8) 92 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. 98 99 Recommendation: check monitor manual for correct values 100 (default = 29/30) 101 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. 107 108 Recommendation: check monitor manual for correct values 109 (default = 60/60) 110 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. 115 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. 125 126 Recommendation: do not set 127 (default = 8 or 16 MB) 128 129 j. "accel" 130 enable text acceleration. This can be enabled/reenabled anytime 131 by using 'fbset -accel true/false'. 132 133 Recommendation: enable 134 (default = not set) 135 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'. 140 141 Recommendation: do not set 142 (default = not set) 143 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. 148 149 Recommendation: do not set 150 (default = not set) 151 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. 156 157 Recommendation: do not set 158 (default = not set) 159 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. 163 164 Recommendation: do not set 165 (default = not set) 166 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. 171 172D. Kernel booting 173 174Separate each option/option-pair by commas (,) and the option from its value 175with a colon (:) as in the following: 176 177video=i810fb:option1,option2:value2 178 179Sample Usage 180------------ 181 182In /etc/lilo.conf, add the line: 183 184append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \ 185 vsync1:50,vsync2:85,accel,mtrr" 186 187This will initialize the framebuffer to 1024x768 at 8bpp. The framebuffer 188will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate 189will be computed based on the hsync1/hsync2 and vsync1/vsync2 values. 190 191IMPORTANT: 192You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes 193better than 640x480 at 60Hz. HOWEVER, if your chipset/display combination 194supports I2C and has an EDID block, you can safely exclude hsync1, hsync2, 195vsync1 and vsync2 parameters. These parameters will be taken from the EDID 196block. 197 198E. Module options 199 200The module parameters are essentially similar to the kernel 201parameters. 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. 203 204Example, to enable MTRR, include "mtrr=1". 205 206Sample Usage 207------------ 208 209Using the same setup as described above, load the module like this: 210 211 modprobe i810fb vram=2 xres=1024 bpp=8 hsync1=30 hsync2=55 vsync1=50 \ 212 vsync2=85 accel=1 mtrr=1 213 214Or just add the following to a configuration file in /etc/modprobe.d/ 215 216 options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \ 217 vsync2=85 accel=1 mtrr=1 218 219and just do a 220 221 modprobe i810fb 222 223 224F. Setup 225 226 a. Do your usual method of configuring the kernel. 227 228 make menuconfig/xconfig/config 229 230 b. Under "Code maturity level options" enable "Prompt for development 231 and/or incomplete code/drivers". 232 233 c. Enable agpgart support for the Intel 810/815 on-board graphics. 234 This is required. The option is under "Character Devices". 235 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. 240 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'. 244 245 f. If you want a framebuffer console, enable it under "Console 246 Drivers". 247 248 g. Compile your kernel. 249 250 h. Load the driver as described in sections D and E. 251 252 i. Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver 253 patch to see the chipset in action (or inaction :-). 254 255G. Acknowledgment: 256 257 1. Geert Uytterhoeven - his excellent howto and the virtual 258 framebuffer driver code made this possible. 259 260 2. Jeff Hartmann for his agpgart code. 261 262 3. The X developers. Insights were provided just by reading the 263 XFree86 source code. 264 265 4. Intel(c). For this value-oriented chipset driver and for 266 providing documentation. 267 268 5. Matt Sottek. His inputs and ideas helped in making some 269 optimizations possible. 270 271H. Home Page: 272 273 A more complete, and probably updated information is provided at 274 http://i810fb.sourceforge.net. 275 276########################### 277Tony 278 279