[parisc-linux] ASP Parallel port driver broken on HP9000/730
Helge Deller
deller@gmx.de
Thu, 15 Feb 2001 01:01:35 +0100
On Wednesday 14 February 2001 17:49, Richard Hirst wrote:
> I can reproduce this on a 715/75. When it crashes I get:
>
> ASP version 1 at 0xf0800000 found.
> LED (ASP-style) display at f0800020 registered
> Found HIL at 0xf0821000, IRQ 94
> HIL: keyboard found at id 3
> parport_init_chip: initialize bidirectional-mode.
> Dumping Stack from c5ff0000 to c5ff0980:
>
>
> IAOQ = _gsc_readb + 0x0c
> r2 = parport_PS2_supported + 0x64
> r26 = 0xf0824800
>
> r26 corresponds to
>
> Scorpio Sr. Core Centronics (10) at 0xf0824000, versions 0x19, 0x0, 0x74,
> 0x0, 0x0
>
>
> From drivers/parport/parport_gsc.c:
>
> port = ((unsigned long) d->hpa) + PARPORT_GSC_OFFSET;
>
> /*
> some older machines with ASP-chip don't support the enhanced
> parport modes */
> if (!pdc_add_valid( (void *)(port+4))) {
> /* Initialize bidirectional-mode (0x10) & data-tranfer-mode #1
> (0x20) */ printk("%s: initialize bidirectional-mode.\n", __FUNCTION__);
> parport_writeb ( (0x10 + 0x20), port + 4);
> } else {
> printk("%s: enhanced parport-modes not supported.\n",
> __FUNCTION__); }
>
> So, I guess it shouldn't have tried to initialise bidirectional-mode
> on my old 715/75 with ASP. If I force that 'if' to fail, then on reboot
> I get:
>
> ASP version 1 at 0xf0800000 found.
> LED (ASP-style) display at f0800020 registered
> Found HIL at 0xf0821000, IRQ 94
> HIL: keyboard found at id 3
> parport_init_chip: enhanced parport-modes not supported.
> parport0: PC-style at 0xf0824800, irq 88 [PCSPP]
On my 715/64 I get with bidirectional mode enabled:
parport0: PC-style at 0xf0102800, irq 88 [PCSPP,TRISTATE]
and this (TRISTATE) is why I wanted to enable this mode.
> And the machine boots ok. I added debug just to check, (port+4) is
> 0xf0824804. So is pdc_add_valid() broken, or is that not the right
> address to be testing?
I'm still sure, that this is the correct address to test, but maybe we should
just disable the initialisation of bidirectional mode for machines which
- have an ASP chip, or
- have their parport-chip at address 0xf0824800 (which is the only region
where the ASP has it's parport), or
- on machines, where "parisc_get_cpu_type(cpu_data[0]) < pcxt_" (from
hardware.h and processor.h) [but I'm not sure if pcxt_ is correct. You'll
need to verify]
This are just some possible solutions to work around the problem for now, but
I'm sure there may be some others too.
> Oh, and a simple 'ls / > /dev/lp0' worked too.
Great.
> Richard
Greetings,
Helge