[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pcibios.h
- Date: 08 Sep 2003 13:05:34 +0100
- From: hv at uninova.pt (Hugo)
- Subject: pcibios.h
Hi!
I am trying to use pcibios.h but so far I have been unable.
In the end of this message I show the part of the code that scans the
PCI.
Everytime I use pcib_conf_write32 I get the return -6.
Could anyone please tell me what I am doing wrong?!
Many thanks
HV
Here's the code:
#define PCI_CONFIG_ADDR 0x0CF8
#define PCI_CONFIG_DATA 0x0CFC
int pcibios_read_config_dword (unsigned char bus, unsigned char dev,
unsigned char fun, unsigned int *val) {
int res;
int sig = PCIB_DEVSIG_MAKE( bus, dev, fun );
res = pcib_conf_write32( sig, PCI_CONFIG_ADDR, *val );
if ( res < 0 ) {
perror("write32.");
return -1;
}
res = pcib_conf_read32( sig, PCI_CONFIG_DATA, val );
if ( res < 0 ) {
perror("read32.");
return -2;
}
return 0;
}
int find_pci( ) {
int pci_bus =0;
int pci_dev;
int pci_fun;
int dev_num = 0;
int res = pcib_init();
printf( "INIT: %d\n", res );
for( pci_dev=0; pci_dev<32; pci_dev++ ) {
for( pci_fun=0; pci_fun<8; pci_fun++ ) {
unsigned int pci_id = 0;
pcibios_read_config_dword( pci_bus, pci_dev, pci_fun, &pci_id );
if ( pci_id == 0xFFFFFFFF ) {
continue;
}
dev_num++;
printf( "Found pci_id: %x\n", pci_id );
}
}
return 0;
}