CFXGA - X Server for a Compact Flash VGA card

The CFXGA

The CFXGA is (was) a compact flash card made by I-O DATA that supports VGA, S-Video and Composite output. It comes with a Linux driver,image viewer and mirror tool. Unfortunally, it does not support interactive graphics. This page has an X server which solves this problem.

Inside the CFXGA

The Epson S1D13806 VGA chip is the core of the CFXGA. CF does not have enough address lines to memory map the frame buffer of this chip. Instead, I-O Data is using the BLT interface which is supported by their kernel module. We leverage this for our X server.

X Server

The X server works, but the code isnt very pretty. :) The code has been functional and stable since around October 2004. We are using the shadow buffer and then BLTing our updates using the kernel driver. At present we only support 640x480 at 16bpp. There is a long list of improvements which include: more resolutions and color depths, better error handling (like when the card is ejected), supporting the X acceleration interface, support dpms, and generally cleaning up the code. If you would like to address any of these issues, please feel free to send patches to kent [at] cc.gatech.edu.

Driving a MicroOptical

Several MicroOptical displays prefer to be driven at 604x480@60Hz. To get 60Hz, we also modified the I-O Data kernel module. Our modified module initializes the S1D13806 to 640x480@60Hz and 16bpp. Note that we also changed the name of the module to iodata_cs.

Mini Howto

  1. Get the kernel module to load automatically. This involves changing some lines /etc/pcmcia/config so the pcmcia scripts load the module and create the right /dev files. In particular for our kernel module, add these two lines:
    device "iodata_cs" needs_mtd
      class "memory" module "iodata_cs"
    
    and change the Anonymous Memory entry to look like this:
    card "Anonymous Memory"
      anonymous
      bind "iodata_cs"
    
  2. Run the X server
    If X complains make sure you have framebuffer support compiled into the kernel and have the proper tty dev files (eg /dev/tty0, major 4, minor 0, etc.)

Downloads

X server binary compiled for StrongArm.
Source code patch for XFree86 4.3.
Source for modified kernel module (for 640x480@60Hz)

This web page and software is maintained by Kent Lyons: kent [at] cc.gatech.edu.