bus device driver
John Baldwin
jhb at freebsd.org
Tue Jul 14 14:08:54 UTC 2009
On Tuesday 14 July 2009 3:08:40 am Norbert Koch wrote:
>
> John Baldwin schrieb:
> > On Monday 13 July 2009 10:05:15 am Norbert Koch wrote:
> >
> >> Hello.
> >>
> >> I just started to write a device
> >> driver for a multi-function pci card.
> >> This card replaces a number of
> >> independant isa hardware devices.
> >> This pci card contains memory, i/o
> >> and interrupt sources.
> >> I want my device driver to
> >> serve as a bus driver between
> >> the pci driver and the specific
> >> device drivers.
> >>
> >> Do I need more than the following (see below)?
> >> Do I have to do any bookkeeping for allocated resources?
> >>
> >
> > How do the child devices receive resources? Do they suballocate regions
from
> > BARs in the PCI device or is your device a subtractive bridge that will
> > forward requests for ISA ranges and your devices all use ISA ranges?
> >
> >
> I am not quite sure that I understand what you mean. What is the difference?
> My old device drivers were isa based. We had all our resources in the
> 15-16M isa hole.
> So I want to change them to just allocate resources from the pci bus
> through the bus device driver.
> I thought it would be sufficient to just forward *_alloc_resource calls
> directly to the pci driver.
> Clearly, my drivers will have to know that they are just forwarded
> through to pci
> and have to know what sub-resources to allocate.
From a hardware perspective, how do your devices know which addresses to
decode? Do they consume subranges of BARs or are they assigned fixed
addresses somehow? Do they have programmable decoders of some sort
themselves? If you wish to have the PCI bus assign you resources then that
implies that your PCI device has a BAR and that you want to request resources
for that BAR and then hand out subranges of that to your children. If that
is the case, then you will need to allocate the resources for the BAR for the
PCI device from the PCI bus. Then your bus driver for the PCI device will
need to suballoc from that BAR to your children devices.
--
John Baldwin
More information about the freebsd-hackers
mailing list