1 #pragma once 2 typedef uint64_t pciaddr_t; 3 struct pci_mem_region { 4 void *memory; 5 pciaddr_t bus_addr; 6 pciaddr_t base_addr; 7 pciaddr_t size; 8 unsigned is_IO:1; 9 unsigned is_prefetchable:1; 10 unsigned is_64:1; 11 }; 12 struct pci_device { 13 uint16_t domain; 14 uint8_t bus; 15 uint8_t dev; 16 uint8_t func; 17 uint16_t vendor_id; 18 uint16_t device_id; 19 uint16_t subvendor_id; 20 uint16_t subdevice_id; 21 uint32_t device_class; 22 uint8_t revision; 23 struct pci_mem_region regions[6]; 24 pciaddr_t rom_size; 25 int irq; 26 intptr_t user_data; 27 int vgaarb_rsrc; 28 }; 29