Parallel port problem

Hi,

hopefully someone can help me with this. I use libk8000 with Velleman K8000 IO-board. It works fine with a machine which have port integrated on the motherboard.
But my new machine does not have LPT on the motherboard. Therefore I bought a PCI LPT-card which have two LPT ports.

It is a board from NetMos Technology. lspci -vvvv gives following.
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- <MAbort- >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

In the libk8000 the data,status and control ports are statically defined. Are the I/O addresses and IRQ-line dynamically defined each time computer is restarted. Might they change in each boot or only when hardware is changed? If so any links to code that dynamically aquires these values would be helpfull. Kernel supports this card because I can connect printer to it and it works. Where in the parport-subsystem is the code which aquires the IO and IRQ?

If the IO and IRQ don’t change in each boot then what might be the data,control and status ports for LPT1 and LPT2 on the above lspci-listing? I have tried several compinations without result.
On the motherboard LPT the ports are in increasing order with 1 byte. On the lspci-listing above there are 8 byte regions with each IO-address. The last one have 16-byte area - why ?

I am totally lost with this and need help - please.

Best Regards
Kari[/size][/size][/size][/size][/size][/size]

I use a similar card for the same reason. Have you now resolved the problem ?

You don’t say which release of openSUSE you are using. The card & it’s LPT1 work fine for me with openSUSE 11.1, using just the default configurations.

With openSUSE 11.2 the printer prints a bunch of graphics characters. I’m not yet convinced that it is a problem with the NetMOS card, because 11.2 does not print correctly to the same printer from an older box having onboard parallel port.

with parport printers, some are plug-n-play aware others are not
as for the port config there are 3 general types STD, ECP, EPP and you must configure the port in a manor that works for the printer.
eg. I have a old dot matrix for chugging out program listings on fanfold paper, it only works if the printer is connected to a parport configured as STD. My Cannon inkjet BJC4100 only works with parport configured EPP and my nine other newer printers work only if parport is configured ECP or EPP. Bad config on all these printers results in garbage being printed.

I use a single parallel port card with netmos chipsets. comparing the

dmesg | grep parport

and got the following response

Suse 11.1

parport_pc 0000:05:02.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
parport0: PC-style at 0xec00 (0xe880) [PCSPP,TRISTATE]
parport0: Legacy device
lp0: using parport0 (polling).

Suse 11.2
5.270030] parport_pc 0000:05:02.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
5.270089] parport0: PC-style at 0xec00 (0xe880), irq 18, using FIFO [PCSPP,TRISTATE,COMPAT,ECP]
5.279743] parport0: Legacy device
62.013408] lp0: using parport0 (interrupt-driven).

So it is interruptdriven on 11.2 and in polling mode in 11.1

NetMos 9805

After alot of google I found the file where I could change the parport_pc behaviour

I added the bold line in Suse 11.2

linux-a:# /etc/modprobe.d/00-system.conf

.

.

.

end of common part for modprobe.conf

begin of i386 part for modprobe.conf

alias parport_lowlevel parport_pc

disable DMA for parallel port (bnc#180390)

options parport_pc dma=none

options parport_pc io=0xec00 irq=none

options parport_pc io=0x378 irq=none

If you have multiple parallel ports, specify them this way:

options parport_pc io=0x378,0x278 irq=none,none

With this change my printer operates in polling mode and prints perfect pages.

But I would like to use the IRQ to get faster responses.

Something with ECP EPP has to be configured but how. Any ideas welcome.

If you go into the bios, you should be able to map the parport to the legacy standard io lpt0 = 378, lpt1 = 278, lpt2 = 0bc and for lpt0 and lpt1 you can change their mode from STD to ECP to EPP to ECP/EPP for these. lpt2 at 0bc can only function in poll mode as STD. On Multiplex parport cards it is possible to assign them to other port #'s but you may find this offers only polled mode since irq 5 and irq 7 only work with 378 and 278 for interupt driven functionallity. I am working from memory here because my reference material is NLA after a move of location.

techwiz03 wrote:

>
> If you go into the bios, you should be able to map the parport to the
> legacy standard io lpt0 = 378, lpt1 = 278, lpt2 = 0bc and for lpt0 and
> lpt1 you can change their mode from STD to ECP to EPP to ECP/EPP for
> these. lpt2 at 0bc can only function in poll mode as STD. On Multiplex
> parport cards it is possible to assign them to other port #'s but you
> may find this offers only polled mode since irq 5 and irq 7 only work
> with 378 and 278 for interupt driven functionallity. I am working from
> memory here because my reference material is NLA after a move of
> location.
>
>

In Suse 11.2 you have to look at the /etc/modprobe.d/00-system.conf - in
older versions use /etc/modprobe.conf. There is a line

— Schnipp —

If you have multiple parallel ports, specify them this way:

options parport_pc io=0x378,0xcd00,0xcf00 irq=none,none,none
— Schnapp —

There you have to put the adresses of your parallel card. My Delock 89016
(Netmos 9815) has six adresses for 2 parallel ports

— Schnipp —
Region 0: I/O ports at cf00 [size=8]
Region 1: I/O ports at ce00 [size=8]
Region 2: I/O ports at cd00 [size=8]
Region 3: I/O ports at cc00 [size=8]
Region 4: I/O ports at cb00 [size=8]
Region 5: I/O ports at ca00 [size=16]
— Schnapp—

and every parport uses 2 adresses. Whith the above option-line I get lpt2
and lpt3.

In my new computer (GA-MA785GT-UD3H) I had to use for the internal port on
the card lpt3 and for the external slot bracket lpt2, on my old Asrock K7VTA
is was the other way round. Since I got this hint, my old LaserJet 4 works
as fine as in older Suse-versions.

Lemi
[/size][/size][/size][/size][/size][/size]