Kernel driver i2c-parport

Author: Jean Delvare <jdelvare@suse.de>

This is a unified driver for several i2c-over-parallel-port adapters,
such as the ones made by Philips, Velleman or ELV. This driver is
meant as a replacement for the older, individual drivers:
 * i2c-philips-par
 * i2c-elv
 * i2c-velleman
 * video/i2c-parport (NOT the same as this one, dedicated to home brew
                      teletext adapters)

It currently supports the following devices:
 * (type=0) Philips adapter
 * (type=1) home brew teletext adapter
 * (type=2) Velleman K8000 adapter
 * (type=3) ELV adapter
 * (type=4) Analog Devices ADM1032 evaluation board
 * (type=5) Analog Devices evaluation boards: ADM1025, ADM1030, ADM1031
 * (type=6) Barco LPT->DVI (K5800236) adapter
 * (type=7) One For All JP1 parallel port adapter
 * (type=8) VCT-jig

These devices use different pinout configurations, so you have to tell
the driver what you have, using the type module parameter. There is no
way to autodetect the devices. Support for different pinout configurations
can be easily added when needed.

Earlier kernels defaulted to type=0 (Philips).  But now, if the type
parameter is missing, the driver will simply fail to initialize.

SMBus alert support is available on adapters which have this line properly
connected to the parallel port's interrupt pin.


Building your own adapter
-------------------------

If you want to build you own i2c-over-parallel-port adapter, here is
a sample electronics schema (credits go to Sylvain Munaut):

Device                                                      PC
Side          ___________________Vdd (+)                    Side
               |    |         |
              ---  ---       ---
              | |  | |       | |
              |R|  |R|       |R|
              | |  | |       | |
              ---  ---       ---
               |    |         |
               |    |    /|   |
SCL  ----------x--------o |-----------x-------------------  pin 2
                    |    \|   |       |
                    |         |       |
                    |   |\    |       |
SDA  ----------x----x---| o---x---------------------------  pin 13
               |        |/            |
               |                      |
               |         /|           |
               ---------o |----------------x--------------  pin 3
                         \|           |    |
                                      |    |
                                     ---  ---
                                     | |  | |
                                     |R|  |R|
                                     | |  | |
                                     ---  ---
                                      |    | 
                                     ###  ###
                                     GND  GND
        
Remarks:
 - This is the exact pinout and electronics used on the Analog Devices
   evaluation boards.
                   /|
 - All inverters -o |- must be 74HC05, they must be open collector output.
                   \|
 - All resitors are 10k.
 - Pins 18-25 of the parallel port connected to GND.
 - Pins 4-9 (D2-D7) could be used as VDD is the driver drives them high.
   The ADM1032 evaluation board uses D4-D7. Beware that the amount of
   current you can draw from the parallel port is limited. Also note that
   all connected lines MUST BE driven at the same state, else you'll short
   circuit the output buffers! So plugging the I2C adapter after loading
   the i2c-parport module might be a good safety since data line state
   prior to init may be unknown. 
 - This is 5V!
 - Obviously you cannot read SCL (so it's not really standard-compliant).
   Pretty easy to add, just copy the SDA part and use another input pin.
   That would give (ELV compatible pinout):


Device                                                      PC
Side          ______________________________Vdd (+)         Side
               |    |            |    |
              ---  ---          ---  ---
              | |  | |          | |  | |
              |R|  |R|          |R|  |R|
              | |  | |          | |  | |
              ---  ---          ---  ---
               |    |            |    |
               |    |      |\    |    |
SCL  ----------x--------x--| o---x------------------------  pin 15
                    |   |  |/         | 
                    |   |             |
                    |   |   /|        |
                    |   ---o |-------------x--------------  pin 2
                    |       \|        |    |
                    |                 |    |
                    |                 |    |
                    |      |\         |    |
SDA  ---------------x---x--| o--------x-------------------  pin 10
                        |  |/              |
                        |                  |
                        |   /|             |
                        ---o |------------------x---------  pin 3
                            \|             |    |
                                           |    |
                                          ---  ---
                                          | |  | |
                                          |R|  |R|
                                          | |  | |
                                          ---  ---
                                           |    | 
                                          ###  ###
                                          GND  GND


If possible, you should use the same pinout configuration as existing
adapters do, so you won't even have to change the code.


Similar (but different) drivers
-------------------------------

This driver is NOT the same as the i2c-pport driver found in the i2c
package. The i2c-pport driver makes use of modern parallel port features so
that you don't need additional electronics. It has other restrictions
however, and was not ported to Linux 2.6 (yet).

This driver is also NOT the same as the i2c-pcf-epp driver found in the
lm_sensors package. The i2c-pcf-epp driver doesn't use the parallel port as
an I2C bus directly. Instead, it uses it to control an external I2C bus
master. That driver was not ported to Linux 2.6 (yet) either.


Legacy documentation for Velleman adapter
-----------------------------------------

Useful links:
Velleman                http://www.velleman.be/
Velleman K8000 Howto    http://howto.htlw16.ac.at/k8000-howto.html

The project has lead to new libs for the Velleman K8000 and K8005:
  LIBK8000 v1.99.1 and LIBK8005 v0.21
With these libs, you can control the K8000 interface card and the K8005
stepper motor card with the simple commands which are in the original
Velleman software, like SetIOchannel, ReadADchannel, SendStepCCWFull and
many more, using /dev/velleman.
  http://home.wanadoo.nl/hihihi/libk8000.htm
  http://home.wanadoo.nl/hihihi/libk8005.htm
  http://struyve.mine.nu:8080/index.php?block=k8000
  http://sourceforge.net/projects/libk8005/


One For All JP1 parallel port adapter
-------------------------------------

The JP1 project revolves around a set of remote controls which expose
the I2C bus their internal configuration EEPROM lives on via a 6 pin
jumper in the battery compartment. More details can be found at:

http://www.hifi-remote.com/jp1/

Details of the simple parallel port hardware can be found at:

http://www.hifi-remote.com/jp1/hardware.shtml
