Subject: Re: multi function PCI devices with shared registers
To: Roger Brooks <>
From: Chris G. Demetriou <>
List: tech-kern
Date: 03/03/1999 12:06:46
Roger Brooks <> writes:
> Could one deal with this by constructing a "bus" on the card?  E.g.
> sillycard* at pci? dev ? function ?
> sillycardbus* at sillycard?
> device_a* at sillycardbus?  <some config data probably required>
> device_b* at sillycardbus?  <some config data probably required>

you could probably do that iff:

* sillycard matched/attached _all_ functions of the device, and knew
what to do (or not to do) with all of them), or

* you were willing to attach only to the first function, and have the
rest printed as unmatched, _and_ nothing else thought they were

What you really want is the ability to say:

normalcard* at pci? dev ?
foo* at normalcard? function ?

for normal cards/devices, and:

sillycard* at pci? dev ?

where 'sillycard' can do whatever it wants: attach its own subdevices,
treat the entire card as one monolitic device, etc.

Chris Demetriou - -
Disclaimer: Not speaking for NetBSD, just expressing my own opinion.