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