This package provides an eCos framebuffer device driver for a VGA graphics card in a standard PC. Although VGA is now very old technology, more recent PC graphics hardware usually still provides compatibility. The device driver works by interacting directly with the hardware, not via the video BIOS, so the level of compatibility must be very high. Hence the driver cannot be guaranteed to work with all PC graphics cards and should be used with care.

CYGPKG_DEVS_FRAMEBUF_I386_PCVGA is a hardware package and is loaded automatically when configuring eCos for a PC target. By default it is inactive and does not add any code size or data overheads. To activate the driver the generic framebuffer package CYGPKG_IO_FRAMEBUF should be added to the configuration. The driver's functionality is only accessible via the API defined by the generic package.

The driver supports just one of the VGA graphics modes, mode 13. This provides an 8bpp linear framebuffer with a resolution of 320x200 pixels, and uses a writeable palette for colour management. The cyg_fb structure for this is cyg_pcvga_fb_mode13_320x200x8, and the identifier for use with the framebuffer macro API is mode13_320x200x8. The only ioctl operations supported are CYG_FB_IOCTL_BLANK_GET and CYG_FB_IOCTL_BLANK_SET.

There is one configuration option specific to the PC VGA hardware. Some of the documentation for these cards recommends a delay after every VGA register access because not all graphics cards can keep up with full-speed I/O. By default the driver implements such a delay, but obviously this slows down certain operations. If the graphics card actually being used does not require this delay then the configuration option CYGHWR_DEVS_FRAMEBUF_I386_PCVGA_REGISTER_ACCESS_DELAY can be disabled.