PCI Programming
Dipjyoti Saikia
dipjyoti.saikia at gmail.com
Fri Apr 29 02:47:13 PDT 2005
Hi,
The normal usage of pci_resource_start() in Linux is to get the base
address of the BAR for further reads/writes using inb/outb etc.
In Free BSD you can use the following :
bus_alloc_resource();
rman_get_bustag();
rman_get_bushandle();
Usually the ret value of rman_get_bushandle() gives the starting
address of the resource (of the BAR for which you called
bus_alloc_resource) .
Normally we use bus_space_* api's to read/write in FreeBSD. The use of
bus_space_ functions need us to only specify the offset rather than
the Linux like usage
inb(base+offset) etc.
Thanks
Dip
On 4/28/05, Cole <cole at opteqint.net> wrote:
> 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
>
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>
More information about the freebsd-hackers
mailing list