Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Apr 2005 19:39:33 +0200
From:      "Cole" <cole@opteqint.net>
To:        <freebsd-hackers@freebsd.org>
Subject:   PCI Programming
Message-ID:  <000901c54c19$3dba2570$4206000a@deadmind>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000901c54c19$3dba2570$4206000a>