Subject: Re: Question about iomask and iospace for PCMCIA devices
To: None <tech-kern@netbsd.org>
From: Phil Quinton <pquinton@softhome.net>
List: tech-kern
Date: 03/21/2006 13:38:50
Hi,
A complete aside ... what is the name/ISBN number of the book you've
got?
Thanks.
Phil.
In article <200603201133.31022.sverre@viewmark.com>, sverre@viewmark.com
says...
> Hi,
>
> In kern/32938 I submitted a patch that modifies how I/O space is mapped for
> PCMCIA cards. This patch assumes that if the card's CIS config table entry
> specifies an iospace starting at zero, the I/O space may be mapped to another
> address (set in the IOBASE registers), otherwise it must match exactly the
> config table entry.
>
> Looking through a book on PCCARD and CARDBUS, however, I notice that it is
> iomask that is supposed to determine whether or not mapping is allowed. The
> book appears to imply:
>
> 1) iomask == 0: iospace addresses must be used as provided, no mapping
> allowed.
> 2) iomask > 0 && iomask != 0xa: iospace may be remapped (using IOBASE).
> 3) iomask == 0xa: card follows ISA standard (address space < 1024).
>
> (3) seems to imply that no mapping is allowed when iomask == 0xa
>
> Can anyone confirm or correct this interpretation?
>
> A search of the NetBSD mail archives provides these examples:
>
> pcmcia1: function 0, config table entry 3: I/O card; irq mask ffb8; iomask 0,
> iospace 0-1f; memspace 20000-28fff; ...
>
> No mapping allowed because iomask is zero. Card must be accessed via I/O
> addresses 0-1f
>
> pcmcia0: function 0, config table entry 5: I/O card; irq mask 86b8; iomask 3,
> iospace 0-7; ...
> pcmcia0: function 0, config table entry 3: I/O card; irq mask ffff; iomask 4,
> iospace 0-f; ...
> pcmcia0: function 0, config table entry 1: I/O card; irq mask ffff; iomask 7,
> iospace 0-47; memspace 0-3ff; ...
>
> I/O addresses may be mapped to another range, although it would seem that the
> iomask in the first entry would limit the range to 0-7.
>
> pcmcia0: function 0, config table entry 1: I/O card; irq mask 86b8; iomask a,
> iospace 3f8-3ff; ...
> pcmcia0: function 0, config table entry 3: I/O card; irq mask 86b8; iomask a,
> iospace 2f8-2ff; ...
>
> I/O addresses must be used as provided (although if the card only decodes the
> first 10 address lines, adding a multiple of 1024 would be OK too).
>
> Comments?
>
> Thanks,