1/*++
2
3Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
4This program and the accompanying materials
5are licensed and made available under the terms and conditions of the BSD License
6which accompanies this distribution.  The full text of the license may be found at
7http://opensource.org/licenses/bsd-license.php
8
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12Module Name:
13
14    AcpiDescription.h
15
16Abstract:
17
18
19   GUIDs used for ACPI Description
20
21--*/
22
23#ifndef _EFI_ACPI_DESCRIPTION_H_
24#define _EFI_ACPI_DESCRIPTION_H_
25
26#define EFI_ACPI_DESCRIPTION_GUID \
27  { \
28    0x3c699197, 0x93c, 0x4c69, {0xb0, 0x6b, 0x12, 0x8a, 0xe3, 0x48, 0x1d, 0xc9} \
29  }
30
31#pragma pack(1)
32typedef struct {
33  UINT8   AddressSpaceId;
34  UINT8   RegisterBitWidth;
35  UINT8   RegisterBitOffset;
36  UINT8   AccessSize;
37  UINT64  Address;
38} EFI_ACPI_GENERIC_ADDRESS_STRUCTURE;
39
40#define ACPI_ADDRESS_ID_MEMORY    0
41#define ACPI_ADDRESS_ID_IO        1
42#define ACPI_ADDRESS_ID_PCI       2
43#define ACPI_ADDRESS_ID_EC        3
44#define ACPI_ADDRESS_ID_SMBUS     4
45
46#define ACPI_ADDRESS_ACCESS_ANY   0
47#define ACPI_ADDRESS_ACCESS_BYTE  1
48#define ACPI_ADDRESS_ACCESS_WORD  2
49#define ACPI_ADDRESS_ACCESS_DWORD 3
50#define ACPI_ADDRESS_ACCESS_QWORD 4
51
52//
53// Following structure defines ACPI Description information.
54// This information is platform specific, may be consumed by DXE generic driver.
55//
56typedef struct _EFI_ACPI_DESCRIPTION {
57  //
58  // For Timer
59  //
60  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       PM_TMR_BLK;
61  UINT8                                    PM_TMR_LEN;
62  UINT8                                    TMR_VAL_EXT;
63
64  //
65  // For RTC
66  //
67  UINT8                                    DAY_ALRM;
68  UINT8                                    MON_ALRM;
69  UINT8                                    CENTURY;
70
71  //
72  // For Reset
73  //
74  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       RESET_REG;
75  UINT8                                    RESET_VALUE;
76
77  //
78  // For Shutdown
79  //
80  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       PM1a_EVT_BLK;
81  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       PM1b_EVT_BLK;
82  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       PM1a_CNT_BLK;
83  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       PM1b_CNT_BLK;
84  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       PM2_CNT_BLK;
85  UINT8                                    PM1_EVT_LEN;
86  UINT8                                    PM1_CNT_LEN;
87  UINT8                                    PM2_CNT_LEN;
88  UINT8                                    SLP_TYPa;
89  UINT8                                    SLP_TYPb;
90
91  //
92  // For sleep
93  //
94  UINT8                                    SLP1_TYPa;
95  UINT8                                    SLP1_TYPb;
96  UINT8                                    SLP2_TYPa;
97  UINT8                                    SLP2_TYPb;
98  UINT8                                    SLP3_TYPa;
99  UINT8                                    SLP3_TYPb;
100  UINT8                                    SLP4_TYPa;
101  UINT8                                    SLP4_TYPb;
102
103  //
104  // GPE
105  //
106  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       GPE0_BLK;
107  EFI_ACPI_GENERIC_ADDRESS_STRUCTURE       GPE1_BLK;
108  UINT8                                    GPE0_BLK_LEN;
109  UINT8                                    GPE1_BLK_LEN;
110  UINT8                                    GPE1_BASE;
111
112  //
113  // IAPC Boot Arch
114  //
115  UINT16                                   IAPC_BOOT_ARCH;
116
117  //
118  // Flags
119  //
120  UINT32                                   Flags;
121
122} EFI_ACPI_DESCRIPTION;
123#pragma pack()
124
125extern EFI_GUID gEfiAcpiDescriptionGuid;
126
127#endif
128