PCI Programming
Cole
cole at opteqint.net
Thu Apr 28 10:33:03 PDT 2005
Hey
Im currently trying to port some linux pci driver to FreeBSD code. But im running into a problem. Its using a function that I cant
seem to find the equivalent of for FreeBSD.
Heres the function up to the point where im getting stuck.
int FindDevice( void )
{
static struct pci_dev *pciptr;
int pci_info_index = 0;
U16 wDev;
unsigned int tmp_addr;
/*-----------------------------------------*/
#ifdef CONFIG_PCI // find the specified device and its configuration
if( pcibios_present() ){
pci_for_each_dev( pciptr ){
if ((pciptr->vendor == VENDOR_ID) && \
(pciptr->device == DEVICE_ID) && \
(pciptr->subsystem_vendor == SUBSYSTEM_VID) && \
(pciptr->subsystem_device == SUBSYSTEM_DID) && \
(PCI_FUNC(pciptr->devfn) == 0) )
{
DevExtension[pci_info_index].wBus= pciptr->bus->number;
DevExtension[pci_info_index].wDevFunc= pciptr->devfn;
DevExtension[pci_info_index].wCard = pci_info_index;
tmp_addr = pci_resource_start( pciptr, 4 );
DevExtension[pci_info_index].func0_bar = (tmp_addr & ~0x03);
now the function im getting stuck at, is the "tmp_addr = pci_resource_start(pciptr, 4). I was wondering if anyone knows of an
equivalent under FreeBSD. Or if there is a way to obtain that value with some other method in FreeBSD. I am pretty much fine up
until that point.
If anyone has any sample code or anything that I could read to proceed any further, it would be greatly appreciated.
Regards
/Cole
More information about the freebsd-hackers
mailing list