↑↑ Home ↑ Hardware  

A Linux driver for the GODIL USB FPGA board


The GODIL board is a low-cost FPGA board made by the small German company OHO Elektronik and sold by Trenz. At about 50 Euros, it is affordable for private citizens who want to play around with an FPGA. It contains a Xilinx Spartan3E FPGA, configuration flash RAM and level converters that can drive 5V TTL inputs (though only at rather low currents). It was apparently designed for stand-alone operation.

Recently a USB version has become available that adds a TI3410 microcontroller acting as a USB-serial bridge that allows transferring data from and to a computer. The manufacturer provides only a Windoze driver. The Linux kernel contains a driver for the TI microcontroller, but insists on trying to load the microcontroller firmware and gives up on the device when that fails. Besides the DTR (Data Terminal Ready) line of the FPGA-side serial interface is (ab)used to trigger its reconfiguration, and Linux asserts that line when opening a serial device.

The driver

After developing a kernel patch at work (where I use the board), I decided to create a more convenient solution in my own Copious Free Time™ to make it freely available. The tarball below contains the source code of a GODIL-specific kernel module that can be compiled separately. It is mostly a copy of the regular TI3410 driver, with edits to prevent firmware loading and assertion of DTR, and with code for the TI3410. You will need to have the kernel header package of your distribution installed (that is, the kernel headers for compiling kernel modules, not the API headers).

Download GODIL driver for v3.6 kernel

Download GODIL driver for v3.9 kernel

Download GODIL driver for v3.12 kernel (confirmed to work up to v4.8.7)

I will try to update this driver periodically for later kernels. If your kernel version is between the driver versions, the next older one may work. If not, it helps to obtain the kernel sources of both versions and apply the differences in drivers/usb/serial/ti_usb_3410_5052.c and .h to my driver. If you have a kernel older than 3.6, you are probably out of luck.

TOS / Impressum