CYGPKG_DEVS_FRAMEBUF_ARM_CSB337900 — eCos framebuffer support for a CSB337/900


This package provides an eCos framebuffer device driver for a Cogent CSB337 board with a CSB900 add-on to provide the LCD panel. It has dependencies on both pieces of hardware so cannot be used with any other combination. The driver is a hardware package and is loaded automatically when configuring eCos for a csb337900 target, but not when configuring for a vanilla csb337 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.

There are a number of design issues with this hardware combination. The framebuffer memory cannot be accessed in the conventional linear way, Instead the driver contains custom drawing code which will be significantly slower than the equivalent linear framebuffer routines. There are also problems with the colour handling: only three bits of control are available for each of red, green and blue intensity,

The driver supports four cyg_fb structures: cyg_csb337900_fb_240x320x8, cyg_csb337900_fb_320x240x8r90, cyg_csb337900_fb_240x320x8r180, and cyg_csb337900_fb_320x240x8r270. These all run the hardware in the same resolution but in the four different orientations, using hardware to perform the rotation. The corresponding identifiers for the macro API are 240x320x8, 320x240x8r90, 240x320x8r180 and 320x240x8r270. Obviously only one of these framebuffer devices can be used at a time. All the devices implement 8bpp non-linear displays with a writeable palette. The supported ioctl operations are CYG_FB_IOCTL_BLANK_GET, CYG_FB_IOCTL_BLANK_SET, CYG_FB_IOCTL_BACKLIGHT_GET and CYG_FB_IOCTL_BACKLIGHT_SET. The backlight can only be switched on or off, there is no support for different levels of intensity.