Add in the 1st version of ECP.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2832 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
DMARemappingReportingTable.h
|
||||
|
||||
Abstract:
|
||||
|
||||
The definition for ACPI DMA-Remapping Reporting (DMAR) Table.
|
||||
It is defined in "Intel VT for Direct IO Architecture Specification".
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _EFI_DMA_REMAPPING_REPORTING_TABLE_H_
|
||||
#define _EFI_DMA_REMAPPING_REPORTING_TABLE_H_
|
||||
|
||||
#include "AcpiCommon.h"
|
||||
|
||||
//
|
||||
// "DMAR" DMAR Description Table Signature
|
||||
//
|
||||
#define EFI_ACPI_DMAR_DESCRIPTION_TABLE_SIGNATURE 0x52414d44
|
||||
|
||||
//
|
||||
// DMAR Revision
|
||||
//
|
||||
#define EFI_ACPI_DMAR_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
//
|
||||
// Ensure proper structure formats
|
||||
//
|
||||
#pragma pack (1)
|
||||
|
||||
//
|
||||
// Definition for DMA Remapping Structure Types
|
||||
//
|
||||
#define EFI_ACPI_DMA_REMAPPING_STRUCTURE_TYPE_DRHD 0
|
||||
#define EFI_ACPI_DMA_REMAPPING_STRUCTURE_TYPE_RMRR 1
|
||||
#define EFI_ACPI_DMA_REMAPPING_STRUCTURE_TYPE_ATSR 2
|
||||
|
||||
//
|
||||
// Definition for DMA Remapping Structure Header
|
||||
//
|
||||
typedef struct {
|
||||
UINT16 Type;
|
||||
UINT16 Length;
|
||||
} EFI_ACPI_DMAR_STRUCTURE_HEADER;
|
||||
|
||||
//
|
||||
// Definition for DMA-Remapping PCI Path
|
||||
//
|
||||
typedef struct {
|
||||
UINT8 Device;
|
||||
UINT8 Function;
|
||||
} EFI_ACPI_DMAR_PCI_PATH;
|
||||
|
||||
//
|
||||
// Definition for DMA-Remapping Device Scope Entry Structure
|
||||
//
|
||||
#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_ENDPOINT 0x01
|
||||
#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_BRIDGE 0x02
|
||||
#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_IOAPIC 0x03
|
||||
#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_MSI_CAPABLE_HPET 0x04
|
||||
typedef struct {
|
||||
UINT8 DeviceScopeEntryType;
|
||||
UINT8 Length;
|
||||
UINT16 Reserved_2;
|
||||
UINT8 EnumerationID;
|
||||
UINT8 StartingBusNumber;
|
||||
} EFI_ACPI_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE;
|
||||
|
||||
//
|
||||
// Definition for DMA-Remapping Hardware Definition (DRHD) Structure
|
||||
//
|
||||
#define EFI_ACPI_DMAR_DRHD_FLAGS_INCLUDE_ALL_SET 0x1
|
||||
#define EFI_ACPI_DMAR_DRHD_FLAGS_INCLUDE_ALL_CLEAR 0x0
|
||||
typedef struct {
|
||||
UINT16 Type;
|
||||
UINT16 Length;
|
||||
UINT8 Flags;
|
||||
UINT8 Reserved_5;
|
||||
UINT16 SegmentNumber;
|
||||
UINT64 RegisterBaseAddress;
|
||||
} EFI_ACPI_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE;
|
||||
|
||||
//
|
||||
// Definition for Reserved Memory Region Reporting (RMRR) Structure
|
||||
//
|
||||
typedef struct {
|
||||
UINT16 Type;
|
||||
UINT16 Length;
|
||||
UINT8 Reserved_4[2];
|
||||
UINT16 SegmentNumber;
|
||||
UINT64 ReservedMemoryRegionBaseAddress;
|
||||
UINT64 ReservedMemoryRegionLimitAddress;
|
||||
} EFI_ACPI_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE;
|
||||
|
||||
//
|
||||
// Definition for Root Port ATS Capability Reporting (ATSR) Structure
|
||||
//
|
||||
#define EFI_ACPI_DMAR_ATSR_FLAGS_ALL_PORTS_SET 0x1
|
||||
#define EFI_ACPI_DMAR_ATSR_FLAGS_ALL_PORTS_CLEAR 0x0
|
||||
typedef struct {
|
||||
UINT16 Type;
|
||||
UINT16 Length;
|
||||
UINT8 Flags;
|
||||
UINT8 Reserved_5;
|
||||
UINT16 SegmentNumber;
|
||||
} EFI_ACPI_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE;
|
||||
|
||||
//
|
||||
// Definition for DMA Remapping Structure
|
||||
//
|
||||
typedef union {
|
||||
EFI_ACPI_DMAR_STRUCTURE_HEADER DMARStructureHeader;
|
||||
EFI_ACPI_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE DMARHardwareUnitDefinition;
|
||||
EFI_ACPI_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE DMARReservedMemoryRegionReporting;
|
||||
EFI_ACPI_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE DMARRootPortATSCapabilityReporting;
|
||||
} EFI_ACPI_DMA_REMAPPING_STRUCTURE;
|
||||
|
||||
//
|
||||
// Definition for DMA-Remapping Reporting ACPI Table
|
||||
//
|
||||
#define EFI_ACPI_DMAR_TABLE_FLAGS_INTR_REMAP_SET 0x01
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT8 HostAddressWidth;
|
||||
UINT8 Flags;
|
||||
UINT8 Reserved_38[10];
|
||||
} EFI_ACPI_DMAR_DESCRIPTION_TABLE;
|
||||
|
||||
//
|
||||
// The Platform specific definition can be as follows:
|
||||
// NOTE: we use /**/ as comment for user convenience to copy it.
|
||||
//
|
||||
|
||||
/*
|
||||
|
||||
//
|
||||
// Dmar.h
|
||||
//
|
||||
|
||||
#define EFI_ACPI_MAX_NUM_PCI_PATH_ENTRIES 0x01 // user need to update
|
||||
typedef struct {
|
||||
EFI_ACPI_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE Header;
|
||||
EFI_ACPI_DMAR_PCI_PATH PciPath[EFI_ACPI_MAX_NUM_PCI_PATH_ENTRIES];
|
||||
} EFI_ACPI_3_0_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE;
|
||||
|
||||
#define EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_DHRD_ENTRY 0x01 // user need to update
|
||||
typedef struct {
|
||||
EFI_ACPI_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE Header;
|
||||
EFI_ACPI_3_0_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE DeviceScopeEntry[EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_DHRD_ENTRY];
|
||||
} EFI_ACPI_3_0_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE;
|
||||
|
||||
#define EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_RMRR_ENTRY 0x01 // user need to update
|
||||
typedef struct {
|
||||
EFI_ACPI_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE Header;
|
||||
EFI_ACPI_3_0_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE DeviceScopeEntry[EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_RMRR_ENTRY];
|
||||
} EFI_ACPI_3_0_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE;
|
||||
|
||||
#define EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_ATSR_ENTRY 0x01 // user need to update
|
||||
typedef struct {
|
||||
EFI_ACPI_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE Header;
|
||||
EFI_ACPI_3_0_DMAR_DEVICE_SCOPE_ENTRY_STRUCTURE DeviceScopeEntry[EFI_ACPI_MAX_NUM_OF_DEVICE_SCOPE_PER_ATSR_ENTRY];
|
||||
} EFI_ACPI_3_0_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE;
|
||||
|
||||
#define EFI_ACPI_DMAR_DHRD_ENTRY_COUNT 0x1 // user need to update
|
||||
#define EFI_ACPI_DMAR_RMRR_ENTRY_COUNT 0x1 // user need to update
|
||||
#define EFI_ACPI_DMAR_ATSR_ENTRY_COUNT 0x1 // user need to update
|
||||
|
||||
typedef struct {
|
||||
EFI_ACPI_DMAR_DESCRIPTION_TABLE Header;
|
||||
|
||||
#if EFI_ACPI_3_0_DMAR_DHRD_ENTRY_COUNT > 0
|
||||
EFI_ACPI_3_0_DMAR_HARDWARE_UNIT_DEFINITION_STRUCTURE Dhrd[EFI_ACPI_DMAR_DHRD_ENTRY_COUNT];
|
||||
#endif
|
||||
|
||||
#if EFI_ACPI_3_0_DMAR_RMRR_ENTRY_COUNT > 0
|
||||
EFI_ACPI_3_0_DMAR_RESERVED_MEMORY_REGION_REPORTING_STRUCTURE Rmrr[EFI_ACPI_DMAR_RMRR_ENTRY_COUNT];
|
||||
#endif
|
||||
|
||||
#if EFI_ACPI_3_0_DMAR_ATSR_ENTRY_COUNT > 0
|
||||
EFI_ACPI_3_0_DMAR_ROOT_PORT_ATS_CAPABILITY_REPORTING_STRUCTURE Atsr[EFI_ACPI_DMAR_ATSR_ENTRY_COUNT];
|
||||
#endif
|
||||
|
||||
} EFI_ACPI_3_0_DMA_REMAPPING_REPORTING_TABLE;
|
||||
|
||||
*/
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user