pciglue.cpp (545B)
1 #define PCI_STUB 2 3 #include <pci.h> 4 5 extern "C" { 6 int find_pci(uint16 vendor, uint16 device, int *iobase, int *irq); 7 } 8 9 using namespace BLT; 10 11 int find_pci(uint16 vendor, uint16 device, int *iobase, int *irq) 12 { 13 Message msg; 14 pci_cfg cfg; 15 int n; 16 int res = 0; 17 18 PCI *pci = PCI::FindService(); 19 20 if(pci){ 21 for(n=0;pci->get_nth_cfg(n,&cfg) == 0;n++){ 22 if((cfg.device_id == device) && 23 (cfg.vendor_id == vendor)){ 24 *iobase = cfg.base[0] & 0xfff8; 25 *irq = cfg.irq; 26 res = 1; 27 break; 28 } 29 } 30 delete pci; 31 } 32 33 return res; 34 } 35