For now I'll declare this a distro problem and deal with it via a
semi-kludge. If somebody feels like digging through the TurboLinux
distro feel free. This is based on their 6.0.4 CDROM set. This uses
the modular parport and parport_pc. What I've found is:
1) parport_pc module correctly reports the PC parallel port hardware
configuration via printk. So, the hardware recognition and setting of
port->base_hi is correct.
2) the parport structure returned by parport_enumerate() has the
port->base_hi value set to zero.
As far as I can tell there is no code anywhere in any parallel related
module that modifies the parport struct after that configuration
printk(). This leaves me with a mystery. Somewhere, somehow, something
in that kernel is destroying that location. One guess is some sort of
build problem. The base_hi is the last item in the structure. Maybe one
of the routines was compiled with an older version?
The workaround for me, since I don't feel like debugging an old kernel
on an old distro, is adding a compile option to my driver: BROKEN_PCI,
which redefines the ECONTROL and FIFO macros to compute addresses as
offsets relative to base rather than base_hi. It breaks PCI boards,
hence the name, but PCI boards are already rather broken on a system
with this kernel bug.
R Horn
-- To unsubscribe, send mail to: linux-parport-request@torque.net --
-- with the single word "unsubscribe" in the body of the message. --
This archive was generated by hypermail 2b29 : Sat Sep 30 2000 - 14:01:55 EDT