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 _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[email protected]"

