1 /** @file
2   ACPI memory mapped configuration space access table definition, defined at
3   in the PCI Firmware Specification, version 3.0.
4   Specification is available at http://www.pcisig.com.
5 
6   Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.<BR>
7   This program and the accompanying materials
8   are licensed and made available under the terms and conditions of the BSD License
9   which accompanies this distribution.  The full text of the license may be found at
10   http://opensource.org/licenses/bsd-license.php
11 
12   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 **/
15 
16 #ifndef _MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_H_
17 #define _MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_H_
18 
19 //
20 // Ensure proper structure formats
21 //
22 #pragma pack(1)
23 
24 ///
25 /// Memory Mapped Configuration Space Access Table (MCFG)
26 /// This table is a basic description table header followed by
27 /// a number of base address allocation structures.
28 ///
29 typedef struct {
30   UINT64  BaseAddress;
31   UINT16  PciSegmentGroupNumber;
32   UINT8   StartBusNumber;
33   UINT8   EndBusNumber;
34   UINT32  Reserved;
35 } EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_SPACE_BASE_ADDRESS_ALLOCATION_STRUCTURE;
36 
37 ///
38 /// MCFG Table header definition.  The rest of the table
39 /// must be defined in a platform specific manner.
40 ///
41 typedef struct {
42   EFI_ACPI_DESCRIPTION_HEADER                       Header;
43   UINT64                                            Reserved;
44 } EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE_HEADER;
45 
46 ///
47 /// MCFG Revision (defined in spec)
48 ///
49 #define EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REVISION  0x01
50 
51 #pragma pack()
52 
53 #endif
54