David Dawes dawes@XFree86.Org
I wrote a Linux framebuffer driver for Intel integrated graphics chipsets (830M - 865G). The driver was primarily targeted for the 865G, but it also works, though in some cases with reduced functionality or limitations, on all chipsets back to the 830M.
The latest source and patches relative to older versions can be found here, and the current version is 0.7.7. If you try the driver, please let me know it goes. I am interested in success reports as well as feedback about problems.
This driver is included with the Linux 2.4.21 and later 2.4.x kernels. The source for these kernels can be found at ftp.kernel.org.
Version 0.7.5 (6 February 2003)
Version 0.7.6 (29 April 2003)
Version 0.7.7 (27 June 2003)
This driver has been tested with recent 2.4.x kernels and older 2.5.x kernels. It needs to be updated to work with the fbdev interface changes in 2.6.x and later 2.5.x kernels. I no longer have access to any of this hardware, and don't have any plans to update the driver for 2.6 kernels.
The driver builds standalone as a module from the source tarball. It is also possible to build the module into a kernel, though the changes required for this are currently left as an exercise for the reader, it was tested for recent 2.4.x kernels.
Video mode programming is handled differently depending on the type of displays connected. Full support for programming video modes is only implemented for analog (CRT) displays.
If you have a non-CRT display (e.g., laptop LCD panel, or an external LCD panel connected via a DVI connector) active when the driver is loaded, it will refuse to load. To use the driver with non-CRT devices, the driver needs to be built in to the kernel, and the "vga=XXX" boot option used to program the video mode via the video BIOS at boot time. The following boot option should enable a 1024x768-16 mode:
vga=791
Information about other values can be found in the file Documentation/fb/vesafb.txt in the Linux kernel source tree.
For CRT displays, most VESA modes can be specified by name as the initial mode when the module is loaded. For example, to set the initial mode to the VESA 1280x1024@85Hz, 24-bit mode, load with:
# modprobe intelfb mode=1280x1024-24@85
or if builtin to the kernel, use the following boot option:
video=intelfb:1280x1024-24@85
If no video mode is specified when using an analog CRT display, the default is currently 1024x768@60Hz, 16-bit. fbset(1) can be used to change the video mode later, except when a non-CRT display is enabled.
Full console acceleration is provide for the 865G. There are some problems with the acceleration support for the other chipsets, so it is currently disabled for them. Hardware cursor support is provided for the 845G and 865G, but is not yet implemented for the 830M, 852GM and 855GM.
This driver does not currently interact with the agpgart driver, or have any dependencies on it. A consequence of this is that it is currently limited to the amount of video memory that is allocated by the BIOS at boot time. This is rarely if ever an issue for the 865G (and that was the primary target), but for full functionality on some older chipsets this driver should be made aware of the agpgart driver. Some laptops, in particular, don't provide a mechanism for increasing the amount of video memory allocated at boot time. Some vendors have BIOS updates available that address this. Chris Jones reports that as of April 2004, DELL has such a BIOS update (A29) for its 852GM/855GM laptops.
The intelfb driver tries to keep out of the way of the XFree86 X server and its native (i810) driver, and it should be possible to use the two together without any problems. It should also be possible to use the XFree86 X server's "fbdev" driver, but it would be unaccelerated. The only reason I can think of for doing that is to use video modes that the video BIOS can't program. The best solution to this would be to add the discrete mode programming code to the XFree86 driver (especially if/when it is extended to handle non-CRT displays).
[About Me]
Copyright © 2003, 2004 David H. Dawes. All Rights Reserved.
Linux is a registered trademark of Linus Torvalds.
Intel is a registered trademark of Intel Corporation.
Last modified: 3 April 2004