The bus width probe doesn't always work properly, producing a false positive

for 12-bit addresses.  This causes PCMCIA cards mapped at 0x400 and higher
to not function properly.  However, the range 0x300-0x3ff causes some
laptops (e.g. the NEC Versa 6030X) to hang if cards are mapped there.

So, after some experimentation, we compromise.  If the probe discovers
a 12-bit address bus, don't trust it.  Instead, use the range 0x330-0x3ff.
This has been shown to work on the laptops that the 0x300-0x3ff range is
known to fail on.
This commit is contained in:
thorpej 1997-11-05 21:41:36 +00:00
parent 446696d688
commit 8fc6835062

View File

@ -1,4 +1,4 @@
/* $NetBSD: i82365_isa.c,v 1.6 1997/10/29 22:48:43 thorpej Exp $ */
/* $NetBSD: i82365_isa.c,v 1.7 1997/11/05 21:41:36 thorpej Exp $ */
#define PCICISADEBUG
@ -321,8 +321,22 @@ pcic_isa_attach(parent, self, aux)
sc->iobase = 0x300;
sc->iosize = 0x0ff;
} else {
#if 0
/*
* This is what we'd like to use, but...
*/
sc->iobase = 0x400;
sc->iosize = 0xbff;
#else
/*
* ...the above bus width probe doesn't always work.
* So, experimentation has shown the following range
* to not lose on systems that 0x300-0x3ff loses on
* (e.g. the NEC Versa 6030X).
*/
sc->iobase = 0x330;
sc->iosize = 0x0cf;
#endif
}
DPRINTF(("%s: bus_space_alloc range 0x%04lx-0x%04lx (probed)\n",