]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/Acpi.h
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2835 6f19259b...
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi.h
CommitLineData
a7ed1e2e 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
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
a7ed1e2e 14**/\r
15\r
16#ifndef _ACPI_H_\r
17#define _ACPI_H_\r
18\r
19//\r
20// Common table header, this prefaces all ACPI tables, including FACS, but\r
21// excluding the RSD PTR structure\r
22//\r
23typedef struct {\r
24 UINT32 Signature;\r
25 UINT32 Length;\r
26} EFI_ACPI_COMMON_HEADER;\r
27\r
28//\r
29// Common ACPI description table header. This structure prefaces most ACPI tables.\r
30//\r
31#pragma pack(1)\r
32\r
33typedef struct {\r
34 UINT32 Signature;\r
35 UINT32 Length;\r
36 UINT8 Revision;\r
37 UINT8 Checksum;\r
38 UINT8 OemId[6];\r
39 UINT64 OemTableId;\r
40 UINT32 OemRevision;\r
41 UINT32 CreatorId;\r
42 UINT32 CreatorRevision;\r
43} EFI_ACPI_DESCRIPTION_HEADER;\r
44\r
45#pragma pack()\r
46//\r
47// Define for Pci Host Bridge Resource Allocation\r
48//\r
49#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
50#define ACPI_END_TAG_DESCRIPTOR 0x79\r
51\r
52#define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00\r
53#define ACPI_ADDRESS_SPACE_TYPE_IO 0x01\r
54#define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02\r
55\r
56//\r
57// Power Management Timer frequency is fixed at 3.579545MHz\r
58//\r
59#define ACPI_TIMER_FREQUENCY 3579545\r
60\r
61//\r
62// Make sure structures match spec\r
63//\r
64#pragma pack(1)\r
65\r
66typedef struct {\r
67 UINT8 Desc;\r
68 UINT16 Len;\r
69 UINT8 ResType;\r
70 UINT8 GenFlag;\r
71 UINT8 SpecificFlag;\r
72 UINT64 AddrSpaceGranularity;\r
73 UINT64 AddrRangeMin;\r
74 UINT64 AddrRangeMax;\r
75 UINT64 AddrTranslationOffset;\r
76 UINT64 AddrLen;\r
77} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;\r
78\r
79typedef struct {\r
80 UINT8 Desc;\r
81 UINT8 Checksum;\r
82} EFI_ACPI_END_TAG_DESCRIPTOR;\r
83\r
84//\r
85// General use definitions\r
86//\r
87#define EFI_ACPI_RESERVED_BYTE 0x00\r
88#define EFI_ACPI_RESERVED_WORD 0x0000\r
89#define EFI_ACPI_RESERVED_DWORD 0x00000000\r
90#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000\r
91\r
92//\r
93// Resource Type Specific Flags\r
94// Ref ACPI specification 6.4.3.5.5\r
95//\r
96// Bit [0] : Write Status, _RW\r
97//\r
98#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0)\r
99#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0)\r
100//\r
101// Bit [2:1] : Memory Attributes, _MEM\r
102//\r
103#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1)\r
104#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1)\r
105#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)\r
106#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1)\r
107//\r
108// Bit [4:3] : Memory Attributes, _MTP\r
109//\r
110#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3)\r
111#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3)\r
112#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3)\r
113#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3)\r
114//\r
115// Bit [5] : Memory to I/O Translation, _TTP\r
116//\r
117#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5)\r
118#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5)\r
119\r
120#pragma pack()\r
121\r
122#endif\r