openblt

a hobby OS from the late 90s
git clone http://frotz.net/git/openblt.git
Log | Files | Refs | LICENSE

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