[parisc-linux] EISA support

Matthew Wilcox willy@debian.org
Wed, 10 Oct 2001 16:38:46 +0100


On Wed, Oct 10, 2001 at 03:48:10PM +0100, Matthew Wilcox wrote:
> I'm not sure which IO ports correspond the ISA and which to EISA.
> Guessing based on the hp100 driver, I decided that ports less than 0x400
> were ISA and the rest were EISA.  Anyone want to explain port numbers
> to me properly?  The description in the Mongoose ERS assumes you know
> a fair bit about EISA, and I don't.

Ah, I found an appendix :-)

EISA cards have a slot number which determines the upper nybble of their
IO port numbers.  Then within that 0xfff of space, they use 0-ff, 400-4ff,
800-8ff, c00-cff.  The rest are ISA ports (or aliases of ISA ports).

So here's the function to use:

static inline unsigned long eisa_permute(u16 port)
{
	if (port & 0x0300) {
		return 0xfc000000 | ((port & 0xfc00) >> 6) | ((port & 0x3f8) << 9) | (port & 7);
	} else {
		return 0xfc000000 | port;
	}
}

-- 
Revolutions do not require corporate support.