1 /*++
2 
3   Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
4 
5 
6   This program and the accompanying materials are licensed and made available under
7 
8   the terms and conditions of the BSD License that accompanies this distribution.
9 
10   The full text of the license may be found at
11 
12   http://opensource.org/licenses/bsd-license.php.
13 
14 
15 
16   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
17 
18   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
19 
20 
21 
22 
23 Module Name:
24 
25   AlertStandardFormatTable.h
26 
27 Abstract:
28 
29   ACPI Alert Standard Format Description Table ASF! as described
30   in the ASF2.0 Specification
31 
32 --*/
33 
34 #ifndef _ALERT_STANDARD_FORMAT_TABLE_H
35 #define _ALERT_STANDARD_FORMAT_TABLE_H
36 
37 #include <IndustryStandard/Acpi20.h>
38 
39 //
40 // Ensure proper structure formats.
41 //
42 #pragma pack (1)
43 
44 //
45 // Information Record header that appears at the beginning of each record.
46 //
47 typedef struct {
48   UINT8                                Type;
49   UINT8                                Reserved;
50   UINT16                               RecordLength;
51 } EFI_ACPI_ASF_RECORD_HEADER;
52 
53 //
54 // This structure contains information that identifies the system type
55 // and configuration.
56 //
57 typedef struct {
58   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
59   UINT8                                MinWatchDogResetValue;
60   UINT8                                MinPollingInterval;
61   UINT16                               SystemID;
62   UINT32                               IANAManufactureID;
63   UINT8                                FeatureFlags;
64   UINT8                                Reserved[3];
65 } EFI_ACPI_ASF_INFO;
66 
67 //
68 // Alert sensors definition.
69 //
70 #define ASF_ALRT_SENSOR_ARRAY_LENGTH     36
71 
72 typedef struct {
73   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
74   UINT8                                AssertionEventBitMask;
75   UINT8                                DeassertionEventBitMask;
76   UINT8                                NumberOfAlerts;
77   UINT8                                ArrayElementLength;
78   UINT8                                DeviceArray[ASF_ALRT_SENSOR_ARRAY_LENGTH];
79 } EFI_ACPI_ASF_ALRT;
80 
81 //
82 // Alert Remote Control System Actions.
83 //
84 #define ASF_RCTL_DEVICES_ARRAY_LENGTH      16
85 
86 typedef struct {
87   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
88   UINT8                                NumberOfControls;
89   UINT8                                ArrayElementLength;
90   UINT16                               RctlReserved;
91   UINT8                                ControlArray[ASF_RCTL_DEVICES_ARRAY_LENGTH];
92 } EFI_ACPI_ASF_RCTL;
93 
94 //
95 // Remote Control Capabilities.
96 //
97 typedef struct {
98   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
99   UINT8                                RemoteControlCapabilities[7];
100   UINT8                                RMCPCompletionCode;
101   UINT32                               RMCPIANA;
102   UINT8                                RMCPSpecialCommand;
103   UINT8                                RMCPSpecialCommandParameter[2];
104   UINT8                                RMCPBootOptions[2];
105   UINT8                                RMCPOEMParameters[2];
106 } EFI_ACPI_ASF_RMCP;
107 
108 //
109 // SMBus Devices with fixed addresses.
110 //
111 #define ASF_ADDR_DEVICE_ARRAY_LENGTH      16
112 
113 typedef struct {
114   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
115   UINT8                                SEEPROMAddress;
116   UINT8                                NumberOfDevices;
117   UINT8                                FixedSmbusAddresses[ASF_ADDR_DEVICE_ARRAY_LENGTH];
118 } EFI_ACPI_ASF_ADDR;
119 
120 typedef struct {
121   EFI_ACPI_DESCRIPTION_HEADER          Header;
122   EFI_ACPI_ASF_INFO                    AsfInfo;
123   EFI_ACPI_ASF_ALRT                    AsfAlert;
124   EFI_ACPI_ASF_RCTL                    AsfRctl;
125   EFI_ACPI_ASF_RMCP                    AsfRmcp;
126   EFI_ACPI_ASF_ADDR                    AsfAddr;
127 } EFI_ACPI_1_0_ASF_DESCRIPTION_TABLE;
128 
129 //
130 // "ASF!" ASF Description Table Signature.
131 //
132 #define EFI_ACPI_1_0_ASF_DESCRIPTION_TABLE_SIGNATURE  0x21465341
133 
134 #pragma pack ()
135 
136 #endif // _ALERT_STANDARD_FORMAT_TABLE_H
137