1 /** @file
2   Macro and type definitions for QEMU's Red Hat vendor-specific PCI
3   capabilities that provide various hints about PCI Bridges.
4 
5   Refer to "docs/pcie_pci_bridge.txt" in the QEMU source directory.
6 
7   Copyright (C) 2017, Red Hat, Inc.
8 
9   SPDX-License-Identifier: BSD-2-Clause-Patent
10 **/
11 
12 #ifndef __QEMU_PCI_BRIDGE_CAPABILITIES_H__
13 #define __QEMU_PCI_BRIDGE_CAPABILITIES_H__
14 
15 #include <IndustryStandard/Pci23.h>
16 
17 //
18 // The hints apply to PCI Bridges whose PCI_DEVICE_INDEPENDENT_REGION.VendorId
19 // equals the following value.
20 //
21 #define QEMU_PCI_BRIDGE_VENDOR_ID_REDHAT 0x1B36
22 
23 //
24 // Common capability header for all hints.
25 //
26 #pragma pack (1)
27 typedef struct {
28   EFI_PCI_CAPABILITY_VENDOR_HDR VendorHdr;
29   UINT8                         Type;
30 } QEMU_PCI_BRIDGE_CAPABILITY_HDR;
31 #pragma pack ()
32 
33 //
34 // Values defined for QEMU_PCI_BRIDGE_CAPABILITY_HDR.Type.
35 //
36 #define QEMU_PCI_BRIDGE_CAPABILITY_TYPE_RESOURCE_RESERVATION 0x01
37 
38 //
39 // PCI Resource Reservation structure for when
40 // QEMU_PCI_BRIDGE_CAPABILITY_HDR.Type equals
41 // QEMU_PCI_BRIDGE_CAPABILITY_TYPE_RESOURCE_RESERVATION.
42 //
43 #pragma pack (1)
44 typedef struct {
45   QEMU_PCI_BRIDGE_CAPABILITY_HDR BridgeHdr;
46   UINT32                         BusNumbers;
47   UINT64                         Io;
48   UINT32                         NonPrefetchable32BitMmio;
49   UINT32                         Prefetchable32BitMmio;
50   UINT64                         Prefetchable64BitMmio;
51 } QEMU_PCI_BRIDGE_CAPABILITY_RESOURCE_RESERVATION;
52 #pragma pack ()
53 
54 #endif
55