EPSON Frame Buffer Display Driver

The Epson R&D provides source code for Linux frame buffer driver supporting most of the Epson LCD controllers. The intended platforms for this driver are embedded systems, where memory resources are very limited, hence there are virtually no run-time checks present in the driver code. The objective is to keep the footprint as small as possible. For example, we do not keep a mirror image of palette. The consequence being that writing a palette entry and then reading it back may result in different value, as most of the supported chips don't support full 8 bits  per primary colors (red, green, blue).  Another limitation by design is that the driver supports only one color depth at a time. That means you can configure and build  the driver for 4bpp or  8bpp or 16bpp but you cannot switch between these color depths at run time. If you are using Epson development/evaluation boards, make sure they are jumpered to use oscillators and not on board clock chips, as the clock chips are not supported by the driver. On the other hand, the PCI bridge support can be conditionally compiled if requested during the driver configuration.

In the following we assume the kernel sources are in /usr/src/linux. We also assume the patch file version matches the Linux kernel version, which, for illustration purposes we assume to be linux-2.6.8. We also assume you are familiar with the kernel build & boot process. To build an Epson frame buffer display driver,  follow these steps:

1. First, you must apply the patch file. Copy the file s1d13xxxfb-2.6.8.04.diff.gz in the directory /usr/src/linux and issue the commands:

    cd /usr/src/linux
    gzip -cd s1d13xxxfb-2.6.8.04.diff.gz | patch -Np1

2. Having patched the kernel, you must provide your own hardware values for the video chip you plan on using. The driver patch file comes with default header files, but it is very likely they would not reflect your particular hardware configuration. The easiest method is to modify the existing header file with your own values. For example, if you plan on building a driver for s1d13706, you would modify the file /usr/src/linux/drivers/video/epson/s1d13706.h. The other option would be to generate the whole include file based on your hardware requirements using a Win32 based configuration utility. There is one for each supported chip available at  the EPSON web site , typically called S1DxxxxxCFG (where xxxxx is 13706, 13704, 13705, etc.. you get the idea). Beware the generated include file will be in DOS text file format and MUST be converted to the Linux text file format by a utility such as dos2unix.

3. In the directory /usr/src/linux run the command

    make menuconfig

Select

   Device Drivers-->
       Graphics support-->
          Epson S1D13xxx Support-->

Under Espon S1D13xxx Support we must select support for frame buffer devices and choose our chip from the Epson chips menu. The following assumes we want to support s1d13706 on Epson 13706B00C evaluation board:

   <*> Support for frame buffer devices
      [*] S1D113706 Support
         [*] EPSON PCI Support

(Don't forget to disable all options that say VGA, you should also disable the mode switching support)

4. You may need to disable Plug and Play support in the BIOS if you are using a PCI card based evaluation board on an x86 system.

5. Back in the console under /usr/src/linux run the command

make dep
make bzImage

If the kernel built without an error, you should be able to boot the new kernel with your new frame buffer display driver.