| #ifndef _PCI_CAP_H |
| #define _PCI_CAP_H |
| |
| #include "types.h" |
| |
| /* |
| * |
| * QEMU-specific vendor(Red Hat)-specific capability. |
| * It's intended to provide some hints for firmware to init PCI devices. |
| * |
| * Its structure is shown below: |
| * |
| * Header: |
| * |
| * u8 id; Standard PCI Capability Header field |
| * u8 next; Standard PCI Capability Header field |
| * u8 len; Standard PCI Capability Header field |
| * u8 type; Red Hat vendor-specific capability type |
| * Data: |
| * |
| * u32 bus_res; minimum bus number to reserve; |
| * this is necessary for PCI Express Root Ports |
| * to support PCI bridges hotplug |
| * u64 io; IO space to reserve |
| * u32 mem; non-prefetchable memory to reserve |
| * |
| * At most of the following two fields may be set to a value |
| * different from 0xFF...F: |
| * u32 prefetchable_mem_32; prefetchable memory to reserve (32-bit MMIO) |
| * u64 prefetchable_mem_64; prefetchable memory to reserve (64-bit MMIO) |
| * |
| * If any field value in Data section is 0xFF...F, |
| * it means that such kind of reservation is not needed and must be ignored. |
| * |
| */ |
| |
| /* Offset of vendor-specific capability type field */ |
| #define PCI_CAP_REDHAT_TYPE_OFFSET 3 |
| |
| /* List of valid Red Hat vendor-specific capability types */ |
| #define REDHAT_CAP_RESOURCE_RESERVE 1 |
| |
| |
| /* Offsets of RESOURCE_RESERVE capability fields */ |
| #define RES_RESERVE_BUS_RES 4 |
| #define RES_RESERVE_IO 8 |
| #define RES_RESERVE_MEM 16 |
| #define RES_RESERVE_PREF_MEM_32 20 |
| #define RES_RESERVE_PREF_MEM_64 24 |
| #define RES_RESERVE_CAP_SIZE 32 |
| |
| #endif /* _PCI_CAP_H */ |