qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

xen-host-pci-device.h (1826B)


      1 #ifndef XEN_HOST_PCI_DEVICE_H
      2 #define XEN_HOST_PCI_DEVICE_H
      3 
      4 #include "hw/pci/pci.h"
      5 
      6 enum {
      7     XEN_HOST_PCI_REGION_TYPE_IO = 1 << 1,
      8     XEN_HOST_PCI_REGION_TYPE_MEM = 1 << 2,
      9     XEN_HOST_PCI_REGION_TYPE_PREFETCH = 1 << 3,
     10     XEN_HOST_PCI_REGION_TYPE_MEM_64 = 1 << 4,
     11 };
     12 
     13 typedef struct XenHostPCIIORegion {
     14     pcibus_t base_addr;
     15     pcibus_t size;
     16     uint8_t type;
     17     uint8_t bus_flags; /* Bus-specific bits */
     18 } XenHostPCIIORegion;
     19 
     20 typedef struct XenHostPCIDevice {
     21     uint16_t domain;
     22     uint8_t bus;
     23     uint8_t dev;
     24     uint8_t func;
     25 
     26     uint16_t vendor_id;
     27     uint16_t device_id;
     28     uint32_t class_code;
     29     int irq;
     30 
     31     XenHostPCIIORegion io_regions[PCI_NUM_REGIONS - 1];
     32     XenHostPCIIORegion rom;
     33 
     34     bool is_virtfn;
     35 
     36     int config_fd;
     37 } XenHostPCIDevice;
     38 
     39 void xen_host_pci_device_get(XenHostPCIDevice *d, uint16_t domain,
     40                              uint8_t bus, uint8_t dev, uint8_t func,
     41                              Error **errp);
     42 void xen_host_pci_device_put(XenHostPCIDevice *pci_dev);
     43 bool xen_host_pci_device_closed(XenHostPCIDevice *d);
     44 
     45 int xen_host_pci_get_byte(XenHostPCIDevice *d, int pos, uint8_t *p);
     46 int xen_host_pci_get_word(XenHostPCIDevice *d, int pos, uint16_t *p);
     47 int xen_host_pci_get_long(XenHostPCIDevice *d, int pos, uint32_t *p);
     48 int xen_host_pci_get_block(XenHostPCIDevice *d, int pos, uint8_t *buf,
     49                            int len);
     50 int xen_host_pci_set_byte(XenHostPCIDevice *d, int pos, uint8_t data);
     51 int xen_host_pci_set_word(XenHostPCIDevice *d, int pos, uint16_t data);
     52 int xen_host_pci_set_long(XenHostPCIDevice *d, int pos, uint32_t data);
     53 int xen_host_pci_set_block(XenHostPCIDevice *d, int pos, uint8_t *buf,
     54                            int len);
     55 
     56 int xen_host_pci_find_ext_cap_offset(XenHostPCIDevice *s, uint32_t cap);
     57 
     58 #endif /* XEN_HOST_PCI_DEVICE_H */