#ifndef PCIACCESS_H #define PCIACCESS_H #include #include #ifdef __cplusplus extern "C" { #endif typedef uint64_t pciaddr_t; #define PCIREGION_TYPE_MEMORY 1 #define PCIREGION_TYPE_IO 2 struct pci_device_region { int type; pciaddr_t bus_addr; pciaddr_t base_addr; pciaddr_t size; int is_IO; int is_prefetchable; int is_64; }; struct pci_device { unsigned int domain; unsigned int bus; unsigned int dev; unsigned int func; unsigned int vendor_id; unsigned int device_id; unsigned int revision; unsigned int class_code; unsigned int subclass; unsigned int prog_if; struct pci_device_region regions[6]; void *_internal; }; int pci_system_init(void); void pci_system_cleanup(void); struct pci_device *pci_device_find_by_slot(unsigned int domain, unsigned int bus, unsigned int dev, unsigned int func); int pci_device_probe(struct pci_device *dev); #ifdef __cplusplus } #endif #endif