1 /** @file
2   ACPI Alert Standard Format Description Table ASF! as described in the ASF2.0 Specification
3 
4   Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
5   This program and the accompanying materials
6   are licensed and made available under the terms and conditions of the BSD License
7   which accompanies this distribution.  The full text of the license may be found at
8   http://opensource.org/licenses/bsd-license.php
9 
10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 **/
13 
14 #ifndef _ALERT_STANDARD_FORMAT_TABLE_H_
15 #define _ALERT_STANDARD_FORMAT_TABLE_H_
16 
17 #include <IndustryStandard/Acpi.h>
18 
19 //
20 // Ensure proper structure formats
21 //
22 #pragma pack (1)
23 
24 ///
25 /// Information Record header that appears at the beginning of each record
26 ///
27 typedef struct {
28   UINT8                                Type;
29   UINT8                                Reserved;
30   UINT16                               RecordLength;
31 } EFI_ACPI_ASF_RECORD_HEADER;
32 
33 ///
34 /// This structure contains information that identifies the system's type
35 /// and configuration
36 ///
37 typedef struct {
38   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
39   UINT8                                MinWatchDogResetValue;
40   UINT8                                MinPollingInterval;
41   UINT16                               SystemID;
42   UINT32                               IANAManufactureID;
43   UINT8                                FeatureFlags;
44   UINT8                                Reserved[3];
45 } EFI_ACPI_ASF_INFO;
46 
47 ///
48 /// ASF Alert Data
49 ///
50 typedef struct {
51   UINT8                                DeviceAddress;
52   UINT8                                Command;
53   UINT8                                DataMask;
54   UINT8                                CompareValue;
55   UINT8                                EventSenseType;
56   UINT8                                EventType;
57   UINT8                                EventOffset;
58   UINT8                                EventSourceType;
59   UINT8                                EventSeverity;
60   UINT8                                SensorNumber;
61   UINT8                                Entity;
62   UINT8                                EntityInstance;
63 } EFI_ACPI_ASF_ALERTDATA;
64 
65 ///
66 /// Alert sensors definition
67 ///
68 typedef struct {
69   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
70   UINT8                                AssertionEventBitMask;
71   UINT8                                DeassertionEventBitMask;
72   UINT8                                NumberOfAlerts;
73   UINT8                                ArrayElementLength; ///< For ASF version 1.0 and later, this filed is set to 0x0C
74   ///
75   /// EFI_ACPI_ASF_ALERTDATA           DeviceArray[ANYSIZE_ARRAY];
76   ///
77 } EFI_ACPI_ASF_ALRT;
78 
79 ///
80 /// Alert Control Data
81 ///
82 typedef struct {
83   UINT8                                Function;
84   UINT8                                DeviceAddress;
85   UINT8                                Command;
86   UINT8                                DataValue;
87 } EFI_ACPI_ASF_CONTROLDATA;
88 
89 ///
90 /// Alert Remote Control System Actions
91 ///
92 typedef struct {
93   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
94   UINT8                                NumberOfControls;
95   UINT8                                ArrayElementLength; ///< For ASF version 1.0 and later, this filed is set to 0x4
96   UINT16                               RctlReserved;
97   ///
98   /// EFI_ACPI_ASF_CONTROLDATA;        DeviceArray[ANYSIZE_ARRAY];
99   ///
100 } EFI_ACPI_ASF_RCTL;
101 
102 
103 ///
104 /// Remote Control Capabilities
105 ///
106 typedef struct {
107   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
108   UINT8                                RemoteControlCapabilities[7];
109   UINT8                                RMCPCompletionCode;
110   UINT32                               RMCPIANA;
111   UINT8                                RMCPSpecialCommand;
112   UINT8                                RMCPSpecialCommandParameter[2];
113   UINT8                                RMCPBootOptions[2];
114   UINT8                                RMCPOEMParameters[2];
115 } EFI_ACPI_ASF_RMCP;
116 
117 ///
118 /// SMBus Devices with fixed addresses
119 ///
120 typedef struct {
121   EFI_ACPI_ASF_RECORD_HEADER           RecordHeader;
122   UINT8                                SEEPROMAddress;
123   UINT8                                NumberOfDevices;
124   ///
125   /// UINT8                            FixedSmbusAddresses[ANYSIZE_ARRAY];
126   ///
127 } EFI_ACPI_ASF_ADDR;
128 
129 ///
130 /// ASF! Description Table Header
131 ///
132 typedef EFI_ACPI_DESCRIPTION_HEADER EFI_ACPI_ASF_DESCRIPTION_HEADER;
133 
134 ///
135 /// The revision stored in ASF! DESCRIPTION TABLE as BCD value
136 ///
137 #define EFI_ACPI_2_0_ASF_DESCRIPTION_TABLE_REVISION   0x20
138 
139 ///
140 /// "ASF!" ASF Description Table Signature
141 ///
142 #define EFI_ACPI_ASF_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32 ('A', 'S', 'F', '!')
143 
144 #pragma pack ()
145 
146 #endif // _ALERT_STANDARD_FORMAT_TABLE_H
147