Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Kernel driver i2c-parport |
| 2 | |
| 3 | Author: Jean Delvare <khali@linux-fr.org> |
| 4 | |
| 5 | This is a unified driver for several i2c-over-parallel-port adapters, |
| 6 | such as the ones made by Philips, Velleman or ELV. This driver is |
| 7 | meant as a replacement for the older, individual drivers: |
| 8 | * i2c-philips-par |
| 9 | * i2c-elv |
| 10 | * i2c-velleman |
| 11 | * video/i2c-parport (NOT the same as this one, dedicated to home brew |
| 12 | teletext adapters) |
| 13 | |
| 14 | It currently supports the following devices: |
Mark M. Hoffman | e97b81d | 2006-03-23 16:50:25 +0100 | [diff] [blame] | 15 | * (type=0) Philips adapter |
| 16 | * (type=1) home brew teletext adapter |
| 17 | * (type=2) Velleman K8000 adapter |
| 18 | * (type=3) ELV adapter |
| 19 | * (type=4) Analog Devices ADM1032 evaluation board |
| 20 | * (type=5) Analog Devices evaluation boards: ADM1025, ADM1030, ADM1031 |
| 21 | * (type=6) Barco LPT->DVI (K5800236) adapter |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 22 | |
| 23 | These devices use different pinout configurations, so you have to tell |
| 24 | the driver what you have, using the type module parameter. There is no |
| 25 | way to autodetect the devices. Support for different pinout configurations |
| 26 | can be easily added when needed. |
| 27 | |
Mark M. Hoffman | e97b81d | 2006-03-23 16:50:25 +0100 | [diff] [blame] | 28 | Earlier kernels defaulted to type=0 (Philips). But now, if the type |
| 29 | parameter is missing, the driver will simply fail to initialize. |
| 30 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 31 | |
| 32 | Building your own adapter |
| 33 | ------------------------- |
| 34 | |
| 35 | If you want to build you own i2c-over-parallel-port adapter, here is |
| 36 | a sample electronics schema (credits go to Sylvain Munaut): |
| 37 | |
| 38 | Device PC |
| 39 | Side ___________________Vdd (+) Side |
| 40 | | | | |
| 41 | --- --- --- |
| 42 | | | | | | | |
| 43 | |R| |R| |R| |
| 44 | | | | | | | |
| 45 | --- --- --- |
| 46 | | | | |
| 47 | | | /| | |
| 48 | SCL ----------x--------o |-----------x------------------- pin 2 |
| 49 | | \| | | |
| 50 | | | | |
| 51 | | |\ | | |
| 52 | SDA ----------x----x---| o---x--------------------------- pin 13 |
| 53 | | |/ | |
| 54 | | | |
| 55 | | /| | |
| 56 | ---------o |----------------x-------------- pin 3 |
| 57 | \| | | |
| 58 | | | |
| 59 | --- --- |
| 60 | | | | | |
| 61 | |R| |R| |
| 62 | | | | | |
| 63 | --- --- |
| 64 | | | |
| 65 | ### ### |
| 66 | GND GND |
| 67 | |
| 68 | Remarks: |
| 69 | - This is the exact pinout and electronics used on the Analog Devices |
| 70 | evaluation boards. |
| 71 | /| |
| 72 | - All inverters -o |- must be 74HC05, they must be open collector output. |
| 73 | \| |
| 74 | - All resitors are 10k. |
| 75 | - Pins 18-25 of the parallel port connected to GND. |
| 76 | - Pins 4-9 (D2-D7) could be used as VDD is the driver drives them high. |
| 77 | The ADM1032 evaluation board uses D4-D7. Beware that the amount of |
| 78 | current you can draw from the parallel port is limited. Also note that |
| 79 | all connected lines MUST BE driven at the same state, else you'll short |
| 80 | circuit the output buffers! So plugging the I2C adapter after loading |
| 81 | the i2c-parport module might be a good safety since data line state |
| 82 | prior to init may be unknown. |
| 83 | - This is 5V! |
| 84 | - Obviously you cannot read SCL (so it's not really standard-compliant). |
| 85 | Pretty easy to add, just copy the SDA part and use another input pin. |
| 86 | That would give (ELV compatible pinout): |
| 87 | |
| 88 | |
| 89 | Device PC |
| 90 | Side ______________________________Vdd (+) Side |
| 91 | | | | | |
| 92 | --- --- --- --- |
| 93 | | | | | | | | | |
| 94 | |R| |R| |R| |R| |
| 95 | | | | | | | | | |
| 96 | --- --- --- --- |
| 97 | | | | | |
| 98 | | | |\ | | |
| 99 | SCL ----------x--------x--| o---x------------------------ pin 15 |
| 100 | | | |/ | |
| 101 | | | | |
| 102 | | | /| | |
| 103 | | ---o |-------------x-------------- pin 2 |
| 104 | | \| | | |
| 105 | | | | |
| 106 | | | | |
| 107 | | |\ | | |
| 108 | SDA ---------------x---x--| o--------x------------------- pin 10 |
| 109 | | |/ | |
| 110 | | | |
| 111 | | /| | |
| 112 | ---o |------------------x--------- pin 3 |
| 113 | \| | | |
| 114 | | | |
| 115 | --- --- |
| 116 | | | | | |
| 117 | |R| |R| |
| 118 | | | | | |
| 119 | --- --- |
| 120 | | | |
| 121 | ### ### |
| 122 | GND GND |
| 123 | |
| 124 | |
| 125 | If possible, you should use the same pinout configuration as existing |
| 126 | adapters do, so you won't even have to change the code. |
| 127 | |
| 128 | |
| 129 | Similar (but different) drivers |
| 130 | ------------------------------- |
| 131 | |
| 132 | This driver is NOT the same as the i2c-pport driver found in the i2c |
| 133 | package. The i2c-pport driver makes use of modern parallel port features so |
| 134 | that you don't need additional electronics. It has other restrictions |
| 135 | however, and was not ported to Linux 2.6 (yet). |
| 136 | |
| 137 | This driver is also NOT the same as the i2c-pcf-epp driver found in the |
| 138 | lm_sensors package. The i2c-pcf-epp driver doesn't use the parallel port as |
| 139 | an I2C bus directly. Instead, it uses it to control an external I2C bus |
| 140 | master. That driver was not ported to Linux 2.6 (yet) either. |
| 141 | |
| 142 | |
| 143 | Legacy documentation for Velleman adapter |
| 144 | ----------------------------------------- |
| 145 | |
| 146 | Useful links: |
| 147 | Velleman http://www.velleman.be/ |
| 148 | Velleman K8000 Howto http://howto.htlw16.ac.at/k8000-howto.html |
| 149 | |
| 150 | The project has lead to new libs for the Velleman K8000 and K8005: |
| 151 | LIBK8000 v1.99.1 and LIBK8005 v0.21 |
| 152 | With these libs, you can control the K8000 interface card and the K8005 |
| 153 | stepper motor card with the simple commands which are in the original |
| 154 | Velleman software, like SetIOchannel, ReadADchannel, SendStepCCWFull and |
| 155 | many more, using /dev/velleman. |
| 156 | http://home.wanadoo.nl/hihihi/libk8000.htm |
| 157 | http://home.wanadoo.nl/hihihi/libk8005.htm |
| 158 | http://struyve.mine.nu:8080/index.php?block=k8000 |
| 159 | http://sourceforge.net/projects/libk8005/ |