This module controls a linear actuator through the parallel
port.

STROBE (pin 1) is normally high (inactive) and it is pulled low (active)
               with the actuator device opened, you can use it as an
               enable line if your PC activates the parallel port data
               lines during boot-up
D0    (pin 2)  is used as a "rotate west" output
D1    (pin 3)  is "rotate east"

D0 and D1 have to be connected to a driver (here I'm using NPN
transistors) and a relay, if you need it you can also use STROBE to enable
the movement (remeber that it is active low), if you don't need it you can
simply omit the PNP transistors.

Ack input (pin 10) is connected to the reed switch in the
actuator for position control. It has do be connected through
a debouncing circuit

I'm not a kernel expert, so this module is probably bug ridden and,
while I put some compatibility defines for older kernels, I cannot
ensure it will compile and work for anything else than my kernel
(at the time of writing 4.15.0).

It should be possible to build the module by simply typing "make", provided
you have the kernel source or kernel headers as packaged by your distribution.

If you have dkms you can try to use

sudo ./dkms-install.sh

Since the module uses the parallel port interrupt to count pulses, be sure
that you give the correct parameters to the parport_pc module since the
default is to use no interrupt, e.g.:

modprobe parport_pc io=0x378 irq=7

If you don't do so, when you load this module it will complain that it
didn't find an interrupt for the port (look at dmesg output).

WARNING WARNING WARNING WARNING WARNING WARNING WARNING

Frank Welter <frank.welter at skynet dot be> lost many hours of sleep
because the module was counting pulses even with nothing connected to the
parallel port. It turns out that there's a problem with some motherboards
and the pic (Programmable Interrupt Controller) that generates bogus
interrupts on irq 7. The problem is best explained here:

http://groups-beta.google.com/group/linux.kernel/messages/12fe109073f549e7

You can workaround this problem by assigning a different irq (e.g. 5) to
your parallel port (if the parallel port is integrated in the motherboard
look in the bios setup). Note that this interrupt cannot be shared, i.e. it
must be exclusively assigned to the parallel port.
If you also have to assign a non stantard address (i.e. not 0x378), you'll
have to tell the actuator module the address. Let's say you set your
parallel port at 0x278, irq 5:

modprobe parport_pc io=0x278 irq=5
insmod actuator.ko base=0x278

