mirror of
https://github.com/torvalds/linux.git
synced 2024-12-05 02:23:16 +00:00
e97b81ddbb
This patch forces the user to specify what type of adapter is present when loading i2c-parport or i2c-parport-light. If none is specified, the driver init simply fails - instead of assuming adapter type 0. This alleviates the sometimes lengthy boot time delays which can be caused by accidentally building one of these into a kernel along with several i2c slave drivers that have lengthy probe routines (e.g. hwmon drivers). Kconfig and documentation updated accordingly. Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
160 lines
6.6 KiB
Plaintext
160 lines
6.6 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
|
|
|
|
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.
|
|
|
|
|
|
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/
|