Bug 190541

Summary: Data integrity error in parport_pc?
Product: Drivers Reporter: Martin Schreiber (mse00000)
Component: ParallelAssignee: drivers_parallel
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: i386   
OS: Linux   
Kernel Version: 3.16.7-53.1-i686 (kernel-desktop openSUSE 13.2) Subsystem:
Regression: Yes Bisected commit-id:

Description Martin Schreiber 2016-12-17 07:59:26 UTC
I try to connect a HP Laserjet 6P with Centronics connection to an Acer Veriton M4640G on openSUSE 13.2 32bit. The parallel port is provided by a
"
03:00.0 Communication controller: MosChip Semiconductor Technology Ltd. PCI 9815 Multi-I/O Controller (rev 01)
Subsystem: LSI Logic / Symbios Logic 2P0S (2 port parallel adaptor)
Flags: medium devsel, IRQ 18
I/O ports at d050 [size=8]
I/O ports at d040 [size=8]
I/O ports at d030 [size=8]
I/O ports at d020 [size=8]
I/O ports at d010 [size=8]
I/O ports at d000 [size=16]
Kernel modules: parport_pc
"
PCI card.
Yast correctly finds and initializes the printer, printing of some characters works, longer texts or graphics print garbage.
Exactly the same happens with a HP Laserjet 4MP.

Also the same happens with the same printers on a second computer with 64bit openSUSE Leap 42.1 and two other different PCI-Express parport cards with different chips.
The Windows7 64 bit installation on this second computer worked with the same printers and both PCI-Express cards IIRC.

A third slower computer with the older openSUSE 13.1 32bit worked OK with the "LSI Logic / Symbios Logic 2P0S" card, other cards not tested, sadly that computer died. :-(

A timing/handshake problem with faster computers and/or newer kernels maybe?
Comment 1 Martin Schreiber 2016-12-27 13:47:29 UTC
Printing by motherboard LPT1 header works.
Comment 2 Martin Schreiber 2017-01-04 07:33:59 UTC
It could be that FIFO operation in parport_pc causes the data errors. With "options parport_pc io=0x378,0xd050,0xd030 dma=none,none,none irq=7,18,10" in "/etc/modprobe.d/99-local.conf" the motherboard port and the two ports on the PCI card all work OK, "dmesg|grep parport" lists:
"
[   17.250204] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
[   17.333784] parport1: PC-style at 0xd050, irq 18 [PCSPP,TRISTATE,EPP]
[   17.416860] parport2: PC-style at 0xd030, irq 10 [PCSPP,TRISTATE,EPP]
[   17.424652] parport2: Printer, Hewlett-Packard HP LaserJet 6P
[  105.840722] lp0: using parport0 (interrupt-driven).
[  105.840745] lp1: using parport1 (interrupt-driven).
[  105.840766] lp2: using parport2 (interrupt-driven).
"
instead of:
"
[   17.229035] parport_pc 00:03: reported by Plug and Play ACPI
[   17.229146] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
[   17.312448] parport1: PC-style at 0xd050 (0xd040), irq 18, using FIFO [PCSPP,TRISTATE,COMPAT,ECP]
[   17.396935] parport2: PC-style at 0xd030 (0xd020), irq 18, using FIFO [PCSPP,TRISTATE,COMPAT,ECP]
[   17.404834] parport2: Printer, Hewlett-Packard HP LaserJet 6P
[  117.824110] lp0: using parport0 (interrupt-driven).
[  117.824135] lp1: using parport1 (interrupt-driven).
[  117.824156] lp2: using parport2 (interrupt-driven).
" 
with the default settings.
A thread about the experiments is here:
https://forums.opensuse.org/showthread.php/521726-Parallelport-support-broken?p=2804416#post2804416