]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/Include/IndustryStandard/Acpi.h
BaseTools: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BaseTools / Source / C / Include / IndustryStandard / Acpi.h
CommitLineData
30fdf114
LG
1/** @file\r
2 This file contains some basic ACPI definitions that are consumed by drivers\r
3 that do not care about ACPI versions.\r
4\r
97fa0ee9 5 Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
30fdf114 6\r
2e351cbe 7 SPDX-License-Identifier: BSD-2-Clause-Patent\r
30fdf114 8\r
30fdf114
LG
9**/\r
10\r
11#ifndef _ACPI_H_\r
12#define _ACPI_H_\r
13\r
14//\r
15// Common table header, this prefaces all ACPI tables, including FACS, but\r
16// excluding the RSD PTR structure\r
17//\r
18typedef struct {\r
19 UINT32 Signature;\r
20 UINT32 Length;\r
21} EFI_ACPI_COMMON_HEADER;\r
22\r
23//\r
24// Common ACPI description table header. This structure prefaces most ACPI tables.\r
25//\r
26#pragma pack(1)\r
27\r
28typedef struct {\r
29 UINT32 Signature;\r
30 UINT32 Length;\r
31 UINT8 Revision;\r
32 UINT8 Checksum;\r
33 UINT8 OemId[6];\r
34 UINT64 OemTableId;\r
35 UINT32 OemRevision;\r
36 UINT32 CreatorId;\r
37 UINT32 CreatorRevision;\r
38} EFI_ACPI_DESCRIPTION_HEADER;\r
39\r
40#pragma pack()\r
41//\r
42// Define for Pci Host Bridge Resource Allocation\r
43//\r
44#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
45#define ACPI_END_TAG_DESCRIPTOR 0x79\r
46\r
47#define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00\r
48#define ACPI_ADDRESS_SPACE_TYPE_IO 0x01\r
49#define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02\r
50\r
51//\r
52// Power Management Timer frequency is fixed at 3.579545MHz\r
53//\r
54#define ACPI_TIMER_FREQUENCY 3579545\r
55\r
56//\r
57// Make sure structures match spec\r
58//\r
59#pragma pack(1)\r
60\r
61typedef struct {\r
62 UINT8 Desc;\r
63 UINT16 Len;\r
64 UINT8 ResType;\r
65 UINT8 GenFlag;\r
66 UINT8 SpecificFlag;\r
67 UINT64 AddrSpaceGranularity;\r
68 UINT64 AddrRangeMin;\r
69 UINT64 AddrRangeMax;\r
70 UINT64 AddrTranslationOffset;\r
71 UINT64 AddrLen;\r
72} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;\r
73\r
74typedef struct {\r
75 UINT8 Desc;\r
76 UINT8 Checksum;\r
77} EFI_ACPI_END_TAG_DESCRIPTOR;\r
78\r
79//\r
80// General use definitions\r
81//\r
82#define EFI_ACPI_RESERVED_BYTE 0x00\r
83#define EFI_ACPI_RESERVED_WORD 0x0000\r
84#define EFI_ACPI_RESERVED_DWORD 0x00000000\r
85#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000\r
86\r
87//\r
88// Resource Type Specific Flags\r
89// Ref ACPI specification 6.4.3.5.5\r
90//\r
91// Bit [0] : Write Status, _RW\r
92//\r
93#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0)\r
94#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0)\r
95//\r
96// Bit [2:1] : Memory Attributes, _MEM\r
97//\r
98#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1)\r
99#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1)\r
100#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)\r
101#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1)\r
102//\r
103// Bit [4:3] : Memory Attributes, _MTP\r
104//\r
105#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3)\r
106#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3)\r
107#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3)\r
108#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3)\r
109//\r
110// Bit [5] : Memory to I/O Translation, _TTP\r
111//\r
112#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5)\r
113#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5)\r
114\r
115#pragma pack()\r
116\r
117#endif\r