K8000 and PCI-parallel port in SuSE Linux 11.1 64-bit

Hi,

I am wrestling with K8000 with linux. I use the libk8000 library and it works nicely with a computer which have LPT1-port in mainboard.
On my new computer there where no parallel port so I bought a PCI-card. Naturally all the IO-addresses are in PCI-space. I tried to define those values in the k8000.c . There is

DataPort
StatusPort
ControlPort

and call to ioperm (what does this do?)

Anyway lspci shows following info

05:02.0 Communication controller: NetMos Technology PCI 9815 Multi-I/O Controller (rev 01)
Subsystem: LSI Logic / Symbios Logic 2P0S (2 port parallel adaptor)
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 18
Region 0: I/O ports at e480 [size=8]
Region 1: I/O ports at e400 [size=8]
Region 2: I/O ports at e080 [size=8]
Region 3: I/O ports at e000 [size=8]
Region 4: I/O ports at dc00 [size=8]
Region 5: I/O ports at d880 [size=16]
Kernel driver in use: parport_pc
Kernel modules: parport_pc

I tried to define the ports like in k8000.c in increasing order 0xe480 , 0xe481 and 0xe481 and ioperm on address 0xe480. This worked little.
I was able to get running-light to work. But the IO-AD did not work. It seemed like it read all channels for one line. Also something like i2c errors where printed.

I would need hand holding about which of those I/O ports listed I should use? Why there are so many? There are six of them so three per LPT-port. This card has to LPT-ports. But when motherboard LPT is defined in K8000.c the memory locations are adjasent and here they are not. How I am supposed to know which port is data, control and status. I tried to search which chip is on the ard to get the specifications but without much luck.

OK enough. If someone can help me I would be very greatfull.

Best Regards
Kari

I have no experience with the libk8000 library for Linux, but i do know what ioperm() is used for:
linux.die.net/man/2/ioperm

Concerning the PCI card parallel port address you may check this thread (especially the link in the last post):
viewtopic.php?f=3&t=2336

Now I got it working!

Two things had to be changed.

  1. IO-address
    In Linux /var/log/messages contain information about modules when they load. I grepped it with a
    grep PC-style and got back a line

parport0: PC-style at 0xe480 (0xe400) [PCSPP,TRISTATE]

that is the LPT-port address. I set the addresses in k8000.c increasing from that address.

  1. speed of the machine
    Because libk8000.a controls the I2C protocol itself and therefore the timings, the delays have to be increased.
    I increased the delays to tenfold in the three lines in k8000.c

Now it seems to work. I will try to figure out what the minimum working delays are.

If someone is using K8000 with Linux using link8000.a library I don’t mind you contacting me if you don’t get it working.

I hope Velleman would make a board like k8000 but with USB-connection. I have bought K8061 (still in box) but it has only 8 digital inputs - and I probably would need 16.

Also I would like to know whether K8000 is about to be discontinued? So it is not much idea to invest time to it.

Best Regards
Kari

I forgot my email.

It is klaine8@gmail.com