Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Jan 2004 14:13:50 -0700 (MST)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        nate@root.org
Cc:        cvs-all@FreeBSD.org
Subject:    Re: cvs commit: src/share/man/man9 bus_alloc_resource.9 bus_set_resource.9
Message-ID:  <20040127.141350.122061896.imp@bsdimp.com>
In-Reply-To: <20040127112940.W37323@root.org>
References:  <200401270604.i0R64Fpc076025@repoman.freebsd.org> <20040127.091238.05978307.imp@bsdimp.com> <20040127112940.W37323@root.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20040127112940.W37323@root.org>
            Nate Lawson <nate@root.org> writes:
: On Tue, 27 Jan 2004, M. Warner Losh wrote:
: > In message: <200401270604.i0R64Fpc076025@repoman.freebsd.org>
: >             Nate Lawson <njl@FreeBSD.org> writes:
: > : njl         2004/01/26 22:04:15 PST
: > :
: > :   FreeBSD src repository
: > :
: > :   Modified files:
: > :     share/man/man9       bus_alloc_resource.9 bus_set_resource.9
: > :   Log:
: > :   Document my adventures in newbus land.  Clarify some examples, especially
: > :   that count is in bytes, not bits.  There are some drivers that I think make
: > :   this mistake.  (I've seen counts of 16 in the tree).
: >
: > Counts of 16 in the tree are likely correct.  Many devices have 8 or
: > 16 or 32 io ports in ISA land.  I've not seen any drivers make this
: > mistake.  Care to give an example?
: 
: Well, for one ichsmb(4).  It allocates 16 IO ports but only uses 8
: according to its .h.  The netgraph bt3c driver allocates 8 but only uses
: 5.  I'm curious if wi/owi really need 64 IO ports.

Yes, wi/owi really does need 64 ports!  At least for some of the
boards (32 is typically, although there's some that decode '48' which
really means 64).  Both the PCI and pccard code, however, do the right
thing and ignore this number and allocate the actual size rounded to a
power of 2.

As far as allocating 16 and using 8, that's not a bits/bytes error.
It might be an alignment requirement for the hardware (eg, there
really are 16 bytes being decoded, the upper 8 being reserved).  The
using only 5 isn't unusual either: most hardware only decodes based on
a multiple of 2.  We have several hunks of hardware that have 6 or 7
registers, but decode either 8 or 16 I/O addresses.  Remember, you
must reserve what the hardware decodes, even if it only uses a subset
of the register space for normal operations.

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040127.141350.122061896.imp>