Re: (1) ACPI messes up Parallel support in kernels >2.6.9

From: Petr Vandrovec
Date: Thu Jan 05 2006 - 14:19:38 EST


Adam Belay wrote:
On Wed, Jan 04, 2006 at 10:52:09PM -0800, Andrew Morton wrote:

Dane Mutters <dmutters@xxxxxxxxx> wrote:

I've been attempting to figure out this problem for a long time, and have come to the conclusion that it must be a kernel bug (that or perhaps I'm a bit dense). Whenever I have the option, "Device Drivers > Plug and Play > ACPI Support" enabled, I become unable to print using my parallel port.

hm, regressions are bad and the fact that it _used_ to work meand that we
should be able to make it work again.

Could you please raise a bug reports against acpi at bugzilla.kernel.org? It might help if that report includes the output of `dmesg -s 1000000' for
both working and non-working kernels.

Thanks.


This may be a PnP bug. If you can provide further information, I'll
look into it.

At least on my hardware (ASUS A8V, W83627THF superio) problem is that it now uses ECP...

Once parport_pc is loaded, it says it found PnPBIOS parport and finds printer

parport: PnPBIOS parport detected.
parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA]
parport0: Printer, HEWLETT-PACKARD DESKJET 690C
lp0: using parport0 (interrupt-driven).
lp0: ECP mode

unfortunately write to /dev/lp* blocks indefinitely. SuperIO registers inspection reveals that SIO is actually programmed to use DMA 1 and not DMA 3. When SuperIO is reprogrammed, data are apparently sent somewhere (as writes to /dev/lp no longer blocks), IRQ count is incremented for each block sent, but unfortunately printer does not seem to agree that any data arrived.

Actually I believe that ECP mode never worked for me - but in the past parport_pc just used SPP or EPP, and everything was happy. Now 'modprobe parport_pc io=0x378' does not work anymore as parallel port hardware is kindly disabled by PnPBIOS code :-( So I have to first enable parport in SuperIO, then set parport mode to SPP, PS2, EPP1.7 or EPP1.9 (low three bits of F0 register in function 1 must be 100, 000, 001 or 101) and load parport_pc io=0x378 io_hi=0x778 irq=7 dma=1. Then ECP mode is not used and printing works...

parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE,EPP]
parport0: Printer, HEWLETT-PACKARD DESKJET 690C
lp0: using parport0 (interrupt-driven).

If you are interested, ACPI DSDT is available at http://platan.vc.cvut.cz/ftp/private/a8v.acpi.dsdt. W83627THF datasheet is available from Winbond website... I do not understand AML sufficiently to tell whether problem with DMA is caused by parport or AML interpreter or buggy DSDT. Non-working ECP is either dead hardware or parport problem existing for very long.

SuperIO dump after initial parport_pc load:

RR/EN 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17
BASE: 0B 82 84 FF FE A2 00 00 FF 20 00 00 1A 48 00 00 FF
FN00: 01 03 F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 06 FF FF FF 02 FF FF FF
: 8E 00 FF FF 00 00 FF FF FF FF FF FF FF FF FF FF
FN01: 01 03 78 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 07 FF FF FF 01 FF FF FF
: 3A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FN02: 01 03 F8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 04 FF FF FF FF FF FF FF
: 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FN03: 01 02 F8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 03 FF FF FF FF FF FF FF
: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FN04: 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FN05: 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF 00 FF 00 FF FF FF FF FF
: 83 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FN06: 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FN07: 08 02 01 03 30 FF FF FF FF FF FF FF FF FF FF FF FF 00 FF FF FF FF FF FF FF
: FF FF FF FF E3 00 FF FF FF FF FF FF FF FF FF 00
FN08: 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
: FF 38 00 00 FF 00 00 00 FF FF FF FF FF FF FF FF
FN09: 03 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
: FF 51 00 00 DF 21 00 FF FF FF FF FF FF FF FF FF
FN0A: 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 FF FF FF FF FF FF FF
: 00 AF FF 3F 00 FF 00 00 FF 00 FF FF FF FF 00 00
FN0B: 01 02 90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 FF FF FF FF FF FF FF
: 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
PowerState: 01

Petr

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/