		Synchronous Serial Interface bus driver
		---------------------------------------

   EEEEE X   X PPPP  EEEEE RRRR  IIIII M   M EEEEE N   N TTTTT  AAA  L
   E      X X  P   P E     R   R   I   MM MM E     NN  N   T   A   A L
   EEEE    X   PPPP  EEEE  RRRR    I   M M M EEEE  N N N   T   AAAAA L
   E      X X  P     E     R R     I   M   M E     N  NN   T   A   A L
   EEEEE X   X P     EEEEE R  R  IIIII M   M EEEEE N   N   T   A   A LLLLL

This directory holds the SSI bus drivers.  Basically, a SSI bus consists
of the following signals:

	stxd	Transmit data
	srxd	Receive data
	sclk	Clock
	sfrm	Frame
		Chip selects (1 - n)

There may be more than one device on a SSI bus, and each device can
have different timing requirements.  There are several frame formats:

1. Texas Instruments Synchronous Serial Frame format

   sclk ____~_~_~_~_~_~_~_~____
   sfrm ____~~_________________
   stxd ------bn..........b0---
   srxd ------bn..........b0---

   - data latched in on the falling edge of the clock
   - data shifted out on the rising edge of the clock

2. Motorola SPI frame format

   sclk ______~_~_~_~_~_~_~____
   sfrm ~~~~________________~~~
   stxd -----bn..........b0----
   srxd ----.bn..........b0----

   - data latched in on the rising edge of the clock
   - data shifted out on the falling edge of the clock, or falling edge
     of sfrm

3. National Microwire format

   sclk ______~_~_~_~_~_~_~_~_~_~_~_~_~_____
   sfrm ~~~~_____________________________~~~
   stxd -----bn......b0---------------------
   srxd -----------------bn..........b0.----

   - data latched in on the rising edge of the clock
   - data shifted out on the falling edge of the clock
   - half duplex, one clock between transmission and reception

Types of devices
----------------

The following types of devices can be found on a SSP bus:

	Sound chips
	Keyboard devices
	Touch screen devices

Keyboard
--------

TX:
0. Format: cfglen = 8, framelen = 8, clkpol = 1, clk < 250kHz
1. select device
2. keyboard responds asserting key_atn
3. wait 0.1ms to 5ms
4. transmit data byte
5. wait >= 150us
6. repeat step 4 until all data sent
7. deselect device
8. keyboard responds de-asserting key_atn
9. wait >= 120us

RX:
0. Format: cfglen = 8, framelen = 8, clkpol = 1, clk < 250kHz
1. keyboard asserts key_atn
2. select device after 0.1ms < 5ms
3. read data byte
4. wait 150us
5. if key_atn still asserted, goto 3
6. deselect device
7. wait >= 120us
