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