load module as fast as possible

using early_initcall makes the module load asap, this shave the startup
time from 3s down to about 1.8s (apparently I can make this even faster
by rigging the order of this file in the kernel build, ie makefiles, but
it doesnt seem worth it atm)

this module is now proof that we can start the lcd within about 1.8s
which is < 2s required; hence we can more move on from poof of concept
to a real driver
add basic dio functionality

init dio so that we have: a direction (dir), input (in), and output (out)
registers; reading or writing to the vaddr will read or set the fpga dio
pins

also definitions for the lcd pins RS, RW, E, D4:7 have been added and
checked that all pins can be set hi and lo, I also checked D4:7 can read
values from the in register
add seemly atomic dio get/set functions

these get and set the dio states (note they update the dir reg
automatically for the requested op)

the local_irq_save operation should ensure the read modify set
operations on the registers appear atomic
add lcd_read4|write4 functions

these form the bases of the 4 bit interface to the lcd, also to keep
things tidy I made a lcd object the holds the dio data and soon to be
required state info

note the udelay10 in lcd_read4/lcd_write4 functions required on my dev
system owing to a painful chip u10 (I think), hopefully I can remove
this delay on the fls HW
implement 4 bit init

this required the ability to check the busy flag, and to set lcd
function (lines and font), and display controls (on/off, cursor shown,
and blinking).

all those required 8 bit read/write functions, so those were added too

NOTE: VERY IMPORTANT atm the busy flag check has NO timeout, in kernel
mode this could easily hang the processor, especially if we call it with
interrupts off later to eek out more speed and faster screen redraws.
Hence later we need a version of this that can timeout !!
add final init steps

clear screen and goto home, followed by turning on the display with the
cursors and blinking off
implement remaining lcd functions + splash msg

implement the remaining lcd functionality in datasheet:
 * putchar
 * puts
 * set_dram_addr
 * inc_pos, dec_pos
 * new_line
 * entry_mode
 * cursor
 * blink
 * gotoxy, getxy

show splash screen message on init so at least the lcd will show
something soon after power up (see LCD_SPLASH_MSG)
add scripts to generate kernel patches

so I can remember how I put this into the kernel build I added
make_kernel_patch script the outputs a patch file to stdout that can be
applied to the root of the kernel linux-2.6.29 from technologics for the
TS4700 (nothing fancy, it just adds the driver to misc and sets up the
build in the Makefile / Kconfig files)