178 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Kernel driver i2c-parport
 | 
						|
 | 
						|
Author: Jean Delvare <khali@linux-fr.org> 
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
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
 |