aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-04-27 19:53:50 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-04-27 19:53:50 -0400
commit0ad4991cae47c0d3ae93e1531ba5572d223d700c (patch)
tree65ef2e310b84c159b56630f36e2d9c75c3c9f9e6 /include/acpi
parent2467d7b7037438f2d1fed826fc5217dddf4b37fb (diff)
parent8ee88d591154ad7d9d413ba150a1ddbb8c2bf198 (diff)
Merge branch 'acpica'
* acpica: (33 commits) ACPICA: Update version to 20130328 ACPICA: Add a lock to the internal object reference count mechanism ACPICA: Fix a format string for 64-bit generation ACPICA: Remove FORCE_DELETE option for global reference count mechanism ACPICA: Improve error message for Index() operator ACPICA: FADT: Remove extraneous warning for very large GPE registers ACPICA: Fix a typo in a function header, no functional change ACPICA: Fix a typo in an error message ACPICA: Fix for some comments/headers ACPICA: _OSI Support: handle any errors from acpi_os_acquire_mutex() ACPICA: Predefine names: Add allowed argument types to master info table ACPI: Set length even for TYPE_END_TAG acpi resource ACPICA: Update version to 20130214 ACPICA: Object repair: Allow 0-length packages for variable-length packages ACPICA: Disassembler: Add warnings for unresolved control methods ACPICA: Return object repair: Add resource template repairs ACPICA: Return object repair: Add string-to-unicode conversion ACPICA: Split object conversion functions to a new file ACPICA: Add mechanism for early object repairs on a per-name basis ACPICA: Remove trailing comma in enum declarations ...
Diffstat (limited to 'include/acpi')
-rw-r--r--include/acpi/acexcep.h461
-rw-r--r--include/acpi/acoutput.h53
-rw-r--r--include/acpi/acpixf.h2
-rw-r--r--include/acpi/actbl2.h47
-rw-r--r--include/acpi/actbl3.h55
-rw-r--r--include/acpi/actypes.h1
6 files changed, 402 insertions, 217 deletions
diff --git a/include/acpi/acexcep.h b/include/acpi/acexcep.h
index 9bf59d0e8aaa..cf051e05a8fe 100644
--- a/include/acpi/acexcep.h
+++ b/include/acpi/acexcep.h
@@ -44,17 +44,50 @@
44#ifndef __ACEXCEP_H__ 44#ifndef __ACEXCEP_H__
45#define __ACEXCEP_H__ 45#define __ACEXCEP_H__
46 46
47/* This module contains all possible exception codes for acpi_status */
48
47/* 49/*
48 * Exceptions returned by external ACPI interfaces 50 * Exception code classes
49 */ 51 */
50#define AE_CODE_ENVIRONMENTAL 0x0000 52#define AE_CODE_ENVIRONMENTAL 0x0000 /* General ACPICA environment */
51#define AE_CODE_PROGRAMMER 0x1000 53#define AE_CODE_PROGRAMMER 0x1000 /* External ACPICA interface caller */
52#define AE_CODE_ACPI_TABLES 0x2000 54#define AE_CODE_ACPI_TABLES 0x2000 /* ACPI tables */
53#define AE_CODE_AML 0x3000 55#define AE_CODE_AML 0x3000 /* From executing AML code */
54#define AE_CODE_CONTROL 0x4000 56#define AE_CODE_CONTROL 0x4000 /* Internal control codes */
57
55#define AE_CODE_MAX 0x4000 58#define AE_CODE_MAX 0x4000
56#define AE_CODE_MASK 0xF000 59#define AE_CODE_MASK 0xF000
57 60
61/*
62 * Macros to insert the exception code classes
63 */
64#define EXCEP_ENV(code) ((acpi_status) (code | AE_CODE_ENVIRONMENTAL))
65#define EXCEP_PGM(code) ((acpi_status) (code | AE_CODE_PROGRAMMER))
66#define EXCEP_TBL(code) ((acpi_status) (code | AE_CODE_ACPI_TABLES))
67#define EXCEP_AML(code) ((acpi_status) (code | AE_CODE_AML))
68#define EXCEP_CTL(code) ((acpi_status) (code | AE_CODE_CONTROL))
69
70/*
71 * Exception info table. The "Description" field is used only by the
72 * ACPICA help application (acpihelp).
73 */
74struct acpi_exception_info {
75 char *name;
76
77#ifdef ACPI_HELP_APP
78 char *description;
79#endif
80};
81
82#ifdef ACPI_HELP_APP
83#define EXCEP_TXT(name,description) {name, description}
84#else
85#define EXCEP_TXT(name,description) {name}
86#endif
87
88/*
89 * Success is always zero, failure is non-zero
90 */
58#define ACPI_SUCCESS(a) (!(a)) 91#define ACPI_SUCCESS(a) (!(a))
59#define ACPI_FAILURE(a) (a) 92#define ACPI_FAILURE(a) (a)
60 93
@@ -64,60 +97,60 @@
64/* 97/*
65 * Environmental exceptions 98 * Environmental exceptions
66 */ 99 */
67#define AE_ERROR (acpi_status) (0x0001 | AE_CODE_ENVIRONMENTAL) 100#define AE_ERROR EXCEP_ENV (0x0001)
68#define AE_NO_ACPI_TABLES (acpi_status) (0x0002 | AE_CODE_ENVIRONMENTAL) 101#define AE_NO_ACPI_TABLES EXCEP_ENV (0x0002)
69#define AE_NO_NAMESPACE (acpi_status) (0x0003 | AE_CODE_ENVIRONMENTAL) 102#define AE_NO_NAMESPACE EXCEP_ENV (0x0003)
70#define AE_NO_MEMORY (acpi_status) (0x0004 | AE_CODE_ENVIRONMENTAL) 103#define AE_NO_MEMORY EXCEP_ENV (0x0004)
71#define AE_NOT_FOUND (acpi_status) (0x0005 | AE_CODE_ENVIRONMENTAL) 104#define AE_NOT_FOUND EXCEP_ENV (0x0005)
72#define AE_NOT_EXIST (acpi_status) (0x0006 | AE_CODE_ENVIRONMENTAL) 105#define AE_NOT_EXIST EXCEP_ENV (0x0006)
73#define AE_ALREADY_EXISTS (acpi_status) (0x0007 | AE_CODE_ENVIRONMENTAL) 106#define AE_ALREADY_EXISTS EXCEP_ENV (0x0007)
74#define AE_TYPE (acpi_status) (0x0008 | AE_CODE_ENVIRONMENTAL) 107#define AE_TYPE EXCEP_ENV (0x0008)
75#define AE_NULL_OBJECT (acpi_status) (0x0009 | AE_CODE_ENVIRONMENTAL) 108#define AE_NULL_OBJECT EXCEP_ENV (0x0009)
76#define AE_NULL_ENTRY (acpi_status) (0x000A | AE_CODE_ENVIRONMENTAL) 109#define AE_NULL_ENTRY EXCEP_ENV (0x000A)
77#define AE_BUFFER_OVERFLOW (acpi_status) (0x000B | AE_CODE_ENVIRONMENTAL) 110#define AE_BUFFER_OVERFLOW EXCEP_ENV (0x000B)
78#define AE_STACK_OVERFLOW (acpi_status) (0x000C | AE_CODE_ENVIRONMENTAL) 111#define AE_STACK_OVERFLOW EXCEP_ENV (0x000C)
79#define AE_STACK_UNDERFLOW (acpi_status) (0x000D | AE_CODE_ENVIRONMENTAL) 112#define AE_STACK_UNDERFLOW EXCEP_ENV (0x000D)
80#define AE_NOT_IMPLEMENTED (acpi_status) (0x000E | AE_CODE_ENVIRONMENTAL) 113#define AE_NOT_IMPLEMENTED EXCEP_ENV (0x000E)
81#define AE_SUPPORT (acpi_status) (0x000F | AE_CODE_ENVIRONMENTAL) 114#define AE_SUPPORT EXCEP_ENV (0x000F)
82#define AE_LIMIT (acpi_status) (0x0010 | AE_CODE_ENVIRONMENTAL) 115#define AE_LIMIT EXCEP_ENV (0x0010)
83#define AE_TIME (acpi_status) (0x0011 | AE_CODE_ENVIRONMENTAL) 116#define AE_TIME EXCEP_ENV (0x0011)
84#define AE_ACQUIRE_DEADLOCK (acpi_status) (0x0012 | AE_CODE_ENVIRONMENTAL) 117#define AE_ACQUIRE_DEADLOCK EXCEP_ENV (0x0012)
85#define AE_RELEASE_DEADLOCK (acpi_status) (0x0013 | AE_CODE_ENVIRONMENTAL) 118#define AE_RELEASE_DEADLOCK EXCEP_ENV (0x0013)
86#define AE_NOT_ACQUIRED (acpi_status) (0x0014 | AE_CODE_ENVIRONMENTAL) 119#define AE_NOT_ACQUIRED EXCEP_ENV (0x0014)
87#define AE_ALREADY_ACQUIRED (acpi_status) (0x0015 | AE_CODE_ENVIRONMENTAL) 120#define AE_ALREADY_ACQUIRED EXCEP_ENV (0x0015)
88#define AE_NO_HARDWARE_RESPONSE (acpi_status) (0x0016 | AE_CODE_ENVIRONMENTAL) 121#define AE_NO_HARDWARE_RESPONSE EXCEP_ENV (0x0016)
89#define AE_NO_GLOBAL_LOCK (acpi_status) (0x0017 | AE_CODE_ENVIRONMENTAL) 122#define AE_NO_GLOBAL_LOCK EXCEP_ENV (0x0017)
90#define AE_ABORT_METHOD (acpi_status) (0x0018 | AE_CODE_ENVIRONMENTAL) 123#define AE_ABORT_METHOD EXCEP_ENV (0x0018)
91#define AE_SAME_HANDLER (acpi_status) (0x0019 | AE_CODE_ENVIRONMENTAL) 124#define AE_SAME_HANDLER EXCEP_ENV (0x0019)
92#define AE_NO_HANDLER (acpi_status) (0x001A | AE_CODE_ENVIRONMENTAL) 125#define AE_NO_HANDLER EXCEP_ENV (0x001A)
93#define AE_OWNER_ID_LIMIT (acpi_status) (0x001B | AE_CODE_ENVIRONMENTAL) 126#define AE_OWNER_ID_LIMIT EXCEP_ENV (0x001B)
94#define AE_NOT_CONFIGURED (acpi_status) (0x001C | AE_CODE_ENVIRONMENTAL) 127#define AE_NOT_CONFIGURED EXCEP_ENV (0x001C)
95 128
96#define AE_CODE_ENV_MAX 0x001C 129#define AE_CODE_ENV_MAX 0x001C
97 130
98/* 131/*
99 * Programmer exceptions 132 * Programmer exceptions
100 */ 133 */
101#define AE_BAD_PARAMETER (acpi_status) (0x0001 | AE_CODE_PROGRAMMER) 134#define AE_BAD_PARAMETER EXCEP_PGM (0x0001)
102#define AE_BAD_CHARACTER (acpi_status) (0x0002 | AE_CODE_PROGRAMMER) 135#define AE_BAD_CHARACTER EXCEP_PGM (0x0002)
103#define AE_BAD_PATHNAME (acpi_status) (0x0003 | AE_CODE_PROGRAMMER) 136#define AE_BAD_PATHNAME EXCEP_PGM (0x0003)
104#define AE_BAD_DATA (acpi_status) (0x0004 | AE_CODE_PROGRAMMER) 137#define AE_BAD_DATA EXCEP_PGM (0x0004)
105#define AE_BAD_HEX_CONSTANT (acpi_status) (0x0005 | AE_CODE_PROGRAMMER) 138#define AE_BAD_HEX_CONSTANT EXCEP_PGM (0x0005)
106#define AE_BAD_OCTAL_CONSTANT (acpi_status) (0x0006 | AE_CODE_PROGRAMMER) 139#define AE_BAD_OCTAL_CONSTANT EXCEP_PGM (0x0006)
107#define AE_BAD_DECIMAL_CONSTANT (acpi_status) (0x0007 | AE_CODE_PROGRAMMER) 140#define AE_BAD_DECIMAL_CONSTANT EXCEP_PGM (0x0007)
108#define AE_MISSING_ARGUMENTS (acpi_status) (0x0008 | AE_CODE_PROGRAMMER) 141#define AE_MISSING_ARGUMENTS EXCEP_PGM (0x0008)
109#define AE_BAD_ADDRESS (acpi_status) (0x0009 | AE_CODE_PROGRAMMER) 142#define AE_BAD_ADDRESS EXCEP_PGM (0x0009)
110 143
111#define AE_CODE_PGM_MAX 0x0009 144#define AE_CODE_PGM_MAX 0x0009
112 145
113/* 146/*
114 * Acpi table exceptions 147 * Acpi table exceptions
115 */ 148 */
116#define AE_BAD_SIGNATURE (acpi_status) (0x0001 | AE_CODE_ACPI_TABLES) 149#define AE_BAD_SIGNATURE EXCEP_TBL (0x0001)
117#define AE_BAD_HEADER (acpi_status) (0x0002 | AE_CODE_ACPI_TABLES) 150#define AE_BAD_HEADER EXCEP_TBL (0x0002)
118#define AE_BAD_CHECKSUM (acpi_status) (0x0003 | AE_CODE_ACPI_TABLES) 151#define AE_BAD_CHECKSUM EXCEP_TBL (0x0003)
119#define AE_BAD_VALUE (acpi_status) (0x0004 | AE_CODE_ACPI_TABLES) 152#define AE_BAD_VALUE EXCEP_TBL (0x0004)
120#define AE_INVALID_TABLE_LENGTH (acpi_status) (0x0005 | AE_CODE_ACPI_TABLES) 153#define AE_INVALID_TABLE_LENGTH EXCEP_TBL (0x0005)
121 154
122#define AE_CODE_TBL_MAX 0x0005 155#define AE_CODE_TBL_MAX 0x0005
123 156
@@ -125,58 +158,58 @@
125 * AML exceptions. These are caused by problems with 158 * AML exceptions. These are caused by problems with
126 * the actual AML byte stream 159 * the actual AML byte stream
127 */ 160 */
128#define AE_AML_BAD_OPCODE (acpi_status) (0x0001 | AE_CODE_AML) 161#define AE_AML_BAD_OPCODE EXCEP_AML (0x0001)
129#define AE_AML_NO_OPERAND (acpi_status) (0x0002 | AE_CODE_AML) 162#define AE_AML_NO_OPERAND EXCEP_AML (0x0002)
130#define AE_AML_OPERAND_TYPE (acpi_status) (0x0003 | AE_CODE_AML) 163#define AE_AML_OPERAND_TYPE EXCEP_AML (0x0003)
131#define AE_AML_OPERAND_VALUE (acpi_status) (0x0004 | AE_CODE_AML) 164#define AE_AML_OPERAND_VALUE EXCEP_AML (0x0004)
132#define AE_AML_UNINITIALIZED_LOCAL (acpi_status) (0x0005 | AE_CODE_AML) 165#define AE_AML_UNINITIALIZED_LOCAL EXCEP_AML (0x0005)
133#define AE_AML_UNINITIALIZED_ARG (acpi_status) (0x0006 | AE_CODE_AML) 166#define AE_AML_UNINITIALIZED_ARG EXCEP_AML (0x0006)
134#define AE_AML_UNINITIALIZED_ELEMENT (acpi_status) (0x0007 | AE_CODE_AML) 167#define AE_AML_UNINITIALIZED_ELEMENT EXCEP_AML (0x0007)
135#define AE_AML_NUMERIC_OVERFLOW (acpi_status) (0x0008 | AE_CODE_AML) 168#define AE_AML_NUMERIC_OVERFLOW EXCEP_AML (0x0008)
136#define AE_AML_REGION_LIMIT (acpi_status) (0x0009 | AE_CODE_AML) 169#define AE_AML_REGION_LIMIT EXCEP_AML (0x0009)
137#define AE_AML_BUFFER_LIMIT (acpi_status) (0x000A | AE_CODE_AML) 170#define AE_AML_BUFFER_LIMIT EXCEP_AML (0x000A)
138#define AE_AML_PACKAGE_LIMIT (acpi_status) (0x000B | AE_CODE_AML) 171#define AE_AML_PACKAGE_LIMIT EXCEP_AML (0x000B)
139#define AE_AML_DIVIDE_BY_ZERO (acpi_status) (0x000C | AE_CODE_AML) 172#define AE_AML_DIVIDE_BY_ZERO EXCEP_AML (0x000C)
140#define AE_AML_BAD_NAME (acpi_status) (0x000D | AE_CODE_AML) 173#define AE_AML_BAD_NAME EXCEP_AML (0x000D)
141#define AE_AML_NAME_NOT_FOUND (acpi_status) (0x000E | AE_CODE_AML) 174#define AE_AML_NAME_NOT_FOUND EXCEP_AML (0x000E)
142#define AE_AML_INTERNAL (acpi_status) (0x000F | AE_CODE_AML) 175#define AE_AML_INTERNAL EXCEP_AML (0x000F)
143#define AE_AML_INVALID_SPACE_ID (acpi_status) (0x0010 | AE_CODE_AML) 176#define AE_AML_INVALID_SPACE_ID EXCEP_AML (0x0010)
144#define AE_AML_STRING_LIMIT (acpi_status) (0x0011 | AE_CODE_AML) 177#define AE_AML_STRING_LIMIT EXCEP_AML (0x0011)
145#define AE_AML_NO_RETURN_VALUE (acpi_status) (0x0012 | AE_CODE_AML) 178#define AE_AML_NO_RETURN_VALUE EXCEP_AML (0x0012)
146#define AE_AML_METHOD_LIMIT (acpi_status) (0x0013 | AE_CODE_AML) 179#define AE_AML_METHOD_LIMIT EXCEP_AML (0x0013)
147#define AE_AML_NOT_OWNER (acpi_status) (0x0014 | AE_CODE_AML) 180#define AE_AML_NOT_OWNER EXCEP_AML (0x0014)
148#define AE_AML_MUTEX_ORDER (acpi_status) (0x0015 | AE_CODE_AML) 181#define AE_AML_MUTEX_ORDER EXCEP_AML (0x0015)
149#define AE_AML_MUTEX_NOT_ACQUIRED (acpi_status) (0x0016 | AE_CODE_AML) 182#define AE_AML_MUTEX_NOT_ACQUIRED EXCEP_AML (0x0016)
150#define AE_AML_INVALID_RESOURCE_TYPE (acpi_status) (0x0017 | AE_CODE_AML) 183#define AE_AML_INVALID_RESOURCE_TYPE EXCEP_AML (0x0017)
151#define AE_AML_INVALID_INDEX (acpi_status) (0x0018 | AE_CODE_AML) 184#define AE_AML_INVALID_INDEX EXCEP_AML (0x0018)
152#define AE_AML_REGISTER_LIMIT (acpi_status) (0x0019 | AE_CODE_AML) 185#define AE_AML_REGISTER_LIMIT EXCEP_AML (0x0019)
153#define AE_AML_NO_WHILE (acpi_status) (0x001A | AE_CODE_AML) 186#define AE_AML_NO_WHILE EXCEP_AML (0x001A)
154#define AE_AML_ALIGNMENT (acpi_status) (0x001B | AE_CODE_AML) 187#define AE_AML_ALIGNMENT EXCEP_AML (0x001B)
155#define AE_AML_NO_RESOURCE_END_TAG (acpi_status) (0x001C | AE_CODE_AML) 188#define AE_AML_NO_RESOURCE_END_TAG EXCEP_AML (0x001C)
156#define AE_AML_BAD_RESOURCE_VALUE (acpi_status) (0x001D | AE_CODE_AML) 189#define AE_AML_BAD_RESOURCE_VALUE EXCEP_AML (0x001D)
157#define AE_AML_CIRCULAR_REFERENCE (acpi_status) (0x001E | AE_CODE_AML) 190#define AE_AML_CIRCULAR_REFERENCE EXCEP_AML (0x001E)
158#define AE_AML_BAD_RESOURCE_LENGTH (acpi_status) (0x001F | AE_CODE_AML) 191#define AE_AML_BAD_RESOURCE_LENGTH EXCEP_AML (0x001F)
159#define AE_AML_ILLEGAL_ADDRESS (acpi_status) (0x0020 | AE_CODE_AML) 192#define AE_AML_ILLEGAL_ADDRESS EXCEP_AML (0x0020)
160#define AE_AML_INFINITE_LOOP (acpi_status) (0x0021 | AE_CODE_AML) 193#define AE_AML_INFINITE_LOOP EXCEP_AML (0x0021)
161 194
162#define AE_CODE_AML_MAX 0x0021 195#define AE_CODE_AML_MAX 0x0021
163 196
164/* 197/*
165 * Internal exceptions used for control 198 * Internal exceptions used for control
166 */ 199 */
167#define AE_CTRL_RETURN_VALUE (acpi_status) (0x0001 | AE_CODE_CONTROL) 200#define AE_CTRL_RETURN_VALUE EXCEP_CTL (0x0001)
168#define AE_CTRL_PENDING (acpi_status) (0x0002 | AE_CODE_CONTROL) 201#define AE_CTRL_PENDING EXCEP_CTL (0x0002)
169#define AE_CTRL_TERMINATE (acpi_status) (0x0003 | AE_CODE_CONTROL) 202#define AE_CTRL_TERMINATE EXCEP_CTL (0x0003)
170#define AE_CTRL_TRUE (acpi_status) (0x0004 | AE_CODE_CONTROL) 203#define AE_CTRL_TRUE EXCEP_CTL (0x0004)
171#define AE_CTRL_FALSE (acpi_status) (0x0005 | AE_CODE_CONTROL) 204#define AE_CTRL_FALSE EXCEP_CTL (0x0005)
172#define AE_CTRL_DEPTH (acpi_status) (0x0006 | AE_CODE_CONTROL) 205#define AE_CTRL_DEPTH EXCEP_CTL (0x0006)
173#define AE_CTRL_END (acpi_status) (0x0007 | AE_CODE_CONTROL) 206#define AE_CTRL_END EXCEP_CTL (0x0007)
174#define AE_CTRL_TRANSFER (acpi_status) (0x0008 | AE_CODE_CONTROL) 207#define AE_CTRL_TRANSFER EXCEP_CTL (0x0008)
175#define AE_CTRL_BREAK (acpi_status) (0x0009 | AE_CODE_CONTROL) 208#define AE_CTRL_BREAK EXCEP_CTL (0x0009)
176#define AE_CTRL_CONTINUE (acpi_status) (0x000A | AE_CODE_CONTROL) 209#define AE_CTRL_CONTINUE EXCEP_CTL (0x000A)
177#define AE_CTRL_SKIP (acpi_status) (0x000B | AE_CODE_CONTROL) 210#define AE_CTRL_SKIP EXCEP_CTL (0x000B)
178#define AE_CTRL_PARSE_CONTINUE (acpi_status) (0x000C | AE_CODE_CONTROL) 211#define AE_CTRL_PARSE_CONTINUE EXCEP_CTL (0x000C)
179#define AE_CTRL_PARSE_PENDING (acpi_status) (0x000D | AE_CODE_CONTROL) 212#define AE_CTRL_PARSE_PENDING EXCEP_CTL (0x000D)
180 213
181#define AE_CODE_CTRL_MAX 0x000D 214#define AE_CODE_CTRL_MAX 0x000D
182 215
@@ -188,112 +221,156 @@
188 * String versions of the exception codes above 221 * String versions of the exception codes above
189 * These strings must match the corresponding defines exactly 222 * These strings must match the corresponding defines exactly
190 */ 223 */
191char const *acpi_gbl_exception_names_env[] = { 224static const struct acpi_exception_info acpi_gbl_exception_names_env[] = {
192 "AE_OK", 225 EXCEP_TXT("AE_OK", "No error"),
193 "AE_ERROR", 226 EXCEP_TXT("AE_ERROR", "Unspecified error"),
194 "AE_NO_ACPI_TABLES", 227 EXCEP_TXT("AE_NO_ACPI_TABLES", "ACPI tables could not be found"),
195 "AE_NO_NAMESPACE", 228 EXCEP_TXT("AE_NO_NAMESPACE", "A namespace has not been loaded"),
196 "AE_NO_MEMORY", 229 EXCEP_TXT("AE_NO_MEMORY", "Insufficient dynamic memory"),
197 "AE_NOT_FOUND", 230 EXCEP_TXT("AE_NOT_FOUND", "The name was not found in the namespace"),
198 "AE_NOT_EXIST", 231 EXCEP_TXT("AE_NOT_EXIST", "A required entity does not exist"),
199 "AE_ALREADY_EXISTS", 232 EXCEP_TXT("AE_ALREADY_EXISTS", "An entity already exists"),
200 "AE_TYPE", 233 EXCEP_TXT("AE_TYPE", "The object type is incorrect"),
201 "AE_NULL_OBJECT", 234 EXCEP_TXT("AE_NULL_OBJECT", "A required object was missing"),
202 "AE_NULL_ENTRY", 235 EXCEP_TXT("AE_NULL_ENTRY", "The requested object does not exist"),
203 "AE_BUFFER_OVERFLOW", 236 EXCEP_TXT("AE_BUFFER_OVERFLOW", "The buffer provided is too small"),
204 "AE_STACK_OVERFLOW", 237 EXCEP_TXT("AE_STACK_OVERFLOW", "An internal stack overflowed"),
205 "AE_STACK_UNDERFLOW", 238 EXCEP_TXT("AE_STACK_UNDERFLOW", "An internal stack underflowed"),
206 "AE_NOT_IMPLEMENTED", 239 EXCEP_TXT("AE_NOT_IMPLEMENTED", "The feature is not implemented"),
207 "AE_SUPPORT", 240 EXCEP_TXT("AE_SUPPORT", "The feature is not supported"),
208 "AE_LIMIT", 241 EXCEP_TXT("AE_LIMIT", "A predefined limit was exceeded"),
209 "AE_TIME", 242 EXCEP_TXT("AE_TIME", "A time limit or timeout expired"),
210 "AE_ACQUIRE_DEADLOCK", 243 EXCEP_TXT("AE_ACQUIRE_DEADLOCK",
211 "AE_RELEASE_DEADLOCK", 244 "Internal error, attempt was made to acquire a mutex in improper order"),
212 "AE_NOT_ACQUIRED", 245 EXCEP_TXT("AE_RELEASE_DEADLOCK",
213 "AE_ALREADY_ACQUIRED", 246 "Internal error, attempt was made to release a mutex in improper order"),
214 "AE_NO_HARDWARE_RESPONSE", 247 EXCEP_TXT("AE_NOT_ACQUIRED",
215 "AE_NO_GLOBAL_LOCK", 248 "An attempt to release a mutex or Global Lock without a previous acquire"),
216 "AE_ABORT_METHOD", 249 EXCEP_TXT("AE_ALREADY_ACQUIRED",
217 "AE_SAME_HANDLER", 250 "Internal error, attempt was made to acquire a mutex twice"),
218 "AE_NO_HANDLER", 251 EXCEP_TXT("AE_NO_HARDWARE_RESPONSE",
219 "AE_OWNER_ID_LIMIT", 252 "Hardware did not respond after an I/O operation"),
220 "AE_NOT_CONFIGURED" 253 EXCEP_TXT("AE_NO_GLOBAL_LOCK", "There is no FACS Global Lock"),
254 EXCEP_TXT("AE_ABORT_METHOD", "A control method was aborted"),
255 EXCEP_TXT("AE_SAME_HANDLER",
256 "Attempt was made to install the same handler that is already installed"),
257 EXCEP_TXT("AE_NO_HANDLER",
258 "A handler for the operation is not installed"),
259 EXCEP_TXT("AE_OWNER_ID_LIMIT",
260 "There are no more Owner IDs available for ACPI tables or control methods"),
261 EXCEP_TXT("AE_NOT_CONFIGURED",
262 "The interface is not part of the current subsystem configuration")
221}; 263};
222 264
223char const *acpi_gbl_exception_names_pgm[] = { 265static const struct acpi_exception_info acpi_gbl_exception_names_pgm[] = {
224 NULL, 266 EXCEP_TXT(NULL, NULL),
225 "AE_BAD_PARAMETER", 267 EXCEP_TXT("AE_BAD_PARAMETER", "A parameter is out of range or invalid"),
226 "AE_BAD_CHARACTER", 268 EXCEP_TXT("AE_BAD_CHARACTER",
227 "AE_BAD_PATHNAME", 269 "An invalid character was found in a name"),
228 "AE_BAD_DATA", 270 EXCEP_TXT("AE_BAD_PATHNAME",
229 "AE_BAD_HEX_CONSTANT", 271 "An invalid character was found in a pathname"),
230 "AE_BAD_OCTAL_CONSTANT", 272 EXCEP_TXT("AE_BAD_DATA",
231 "AE_BAD_DECIMAL_CONSTANT", 273 "A package or buffer contained incorrect data"),
232 "AE_MISSING_ARGUMENTS", 274 EXCEP_TXT("AE_BAD_HEX_CONSTANT", "Invalid character in a Hex constant"),
233 "AE_BAD_ADDRESS" 275 EXCEP_TXT("AE_BAD_OCTAL_CONSTANT",
276 "Invalid character in an Octal constant"),
277 EXCEP_TXT("AE_BAD_DECIMAL_CONSTANT",
278 "Invalid character in a Decimal constant"),
279 EXCEP_TXT("AE_MISSING_ARGUMENTS",
280 "Too few arguments were passed to a control method"),
281 EXCEP_TXT("AE_BAD_ADDRESS", "An illegal null I/O address")
234}; 282};
235 283
236char const *acpi_gbl_exception_names_tbl[] = { 284static const struct acpi_exception_info acpi_gbl_exception_names_tbl[] = {
237 NULL, 285 EXCEP_TXT(NULL, NULL),
238 "AE_BAD_SIGNATURE", 286 EXCEP_TXT("AE_BAD_SIGNATURE", "An ACPI table has an invalid signature"),
239 "AE_BAD_HEADER", 287 EXCEP_TXT("AE_BAD_HEADER", "Invalid field in an ACPI table header"),
240 "AE_BAD_CHECKSUM", 288 EXCEP_TXT("AE_BAD_CHECKSUM", "An ACPI table checksum is not correct"),
241 "AE_BAD_VALUE", 289 EXCEP_TXT("AE_BAD_VALUE", "An invalid value was found in a table"),
242 "AE_INVALID_TABLE_LENGTH" 290 EXCEP_TXT("AE_INVALID_TABLE_LENGTH",
291 "The FADT or FACS has improper length")
243}; 292};
244 293
245char const *acpi_gbl_exception_names_aml[] = { 294static const struct acpi_exception_info acpi_gbl_exception_names_aml[] = {
246 NULL, 295 EXCEP_TXT(NULL, NULL),
247 "AE_AML_BAD_OPCODE", 296 EXCEP_TXT("AE_AML_BAD_OPCODE", "Invalid AML opcode encountered"),
248 "AE_AML_NO_OPERAND", 297 EXCEP_TXT("AE_AML_NO_OPERAND", "A required operand is missing"),
249 "AE_AML_OPERAND_TYPE", 298 EXCEP_TXT("AE_AML_OPERAND_TYPE",
250 "AE_AML_OPERAND_VALUE", 299 "An operand of an incorrect type was encountered"),
251 "AE_AML_UNINITIALIZED_LOCAL", 300 EXCEP_TXT("AE_AML_OPERAND_VALUE",
252 "AE_AML_UNINITIALIZED_ARG", 301 "The operand had an inappropriate or invalid value"),
253 "AE_AML_UNINITIALIZED_ELEMENT", 302 EXCEP_TXT("AE_AML_UNINITIALIZED_LOCAL",
254 "AE_AML_NUMERIC_OVERFLOW", 303 "Method tried to use an uninitialized local variable"),
255 "AE_AML_REGION_LIMIT", 304 EXCEP_TXT("AE_AML_UNINITIALIZED_ARG",
256 "AE_AML_BUFFER_LIMIT", 305 "Method tried to use an uninitialized argument"),
257 "AE_AML_PACKAGE_LIMIT", 306 EXCEP_TXT("AE_AML_UNINITIALIZED_ELEMENT",
258 "AE_AML_DIVIDE_BY_ZERO", 307 "Method tried to use an empty package element"),
259 "AE_AML_BAD_NAME", 308 EXCEP_TXT("AE_AML_NUMERIC_OVERFLOW",
260 "AE_AML_NAME_NOT_FOUND", 309 "Overflow during BCD conversion or other"),
261 "AE_AML_INTERNAL", 310 EXCEP_TXT("AE_AML_REGION_LIMIT",
262 "AE_AML_INVALID_SPACE_ID", 311 "Tried to access beyond the end of an Operation Region"),
263 "AE_AML_STRING_LIMIT", 312 EXCEP_TXT("AE_AML_BUFFER_LIMIT",
264 "AE_AML_NO_RETURN_VALUE", 313 "Tried to access beyond the end of a buffer"),
265 "AE_AML_METHOD_LIMIT", 314 EXCEP_TXT("AE_AML_PACKAGE_LIMIT",
266 "AE_AML_NOT_OWNER", 315 "Tried to access beyond the end of a package"),
267 "AE_AML_MUTEX_ORDER", 316 EXCEP_TXT("AE_AML_DIVIDE_BY_ZERO",
268 "AE_AML_MUTEX_NOT_ACQUIRED", 317 "During execution of AML Divide operator"),
269 "AE_AML_INVALID_RESOURCE_TYPE", 318 EXCEP_TXT("AE_AML_BAD_NAME",
270 "AE_AML_INVALID_INDEX", 319 "An ACPI name contains invalid character(s)"),
271 "AE_AML_REGISTER_LIMIT", 320 EXCEP_TXT("AE_AML_NAME_NOT_FOUND",
272 "AE_AML_NO_WHILE", 321 "Could not resolve a named reference"),
273 "AE_AML_ALIGNMENT", 322 EXCEP_TXT("AE_AML_INTERNAL", "An internal error within the interprete"),
274 "AE_AML_NO_RESOURCE_END_TAG", 323 EXCEP_TXT("AE_AML_INVALID_SPACE_ID",
275 "AE_AML_BAD_RESOURCE_VALUE", 324 "An Operation Region SpaceID is invalid"),
276 "AE_AML_CIRCULAR_REFERENCE", 325 EXCEP_TXT("AE_AML_STRING_LIMIT",
277 "AE_AML_BAD_RESOURCE_LENGTH", 326 "String is longer than 200 characters"),
278 "AE_AML_ILLEGAL_ADDRESS", 327 EXCEP_TXT("AE_AML_NO_RETURN_VALUE",
279 "AE_AML_INFINITE_LOOP" 328 "A method did not return a required value"),
329 EXCEP_TXT("AE_AML_METHOD_LIMIT",
330 "A control method reached the maximum reentrancy limit of 255"),
331 EXCEP_TXT("AE_AML_NOT_OWNER",
332 "A thread tried to release a mutex that it does not own"),
333 EXCEP_TXT("AE_AML_MUTEX_ORDER", "Mutex SyncLevel release mismatch"),
334 EXCEP_TXT("AE_AML_MUTEX_NOT_ACQUIRED",
335 "Attempt to release a mutex that was not previously acquired"),
336 EXCEP_TXT("AE_AML_INVALID_RESOURCE_TYPE",
337 "Invalid resource type in resource list"),
338 EXCEP_TXT("AE_AML_INVALID_INDEX",
339 "Invalid Argx or Localx (x too large)"),
340 EXCEP_TXT("AE_AML_REGISTER_LIMIT",
341 "Bank value or Index value beyond range of register"),
342 EXCEP_TXT("AE_AML_NO_WHILE", "Break or Continue without a While"),
343 EXCEP_TXT("AE_AML_ALIGNMENT",
344 "Non-aligned memory transfer on platform that does not support this"),
345 EXCEP_TXT("AE_AML_NO_RESOURCE_END_TAG",
346 "No End Tag in a resource list"),
347 EXCEP_TXT("AE_AML_BAD_RESOURCE_VALUE",
348 "Invalid value of a resource element"),
349 EXCEP_TXT("AE_AML_CIRCULAR_REFERENCE",
350 "Two references refer to each other"),
351 EXCEP_TXT("AE_AML_BAD_RESOURCE_LENGTH",
352 "The length of a Resource Descriptor in the AML is incorrect"),
353 EXCEP_TXT("AE_AML_ILLEGAL_ADDRESS",
354 "A memory, I/O, or PCI configuration address is invalid"),
355 EXCEP_TXT("AE_AML_INFINITE_LOOP",
356 "An apparent infinite AML While loop, method was aborted")
280}; 357};
281 358
282char const *acpi_gbl_exception_names_ctrl[] = { 359static const struct acpi_exception_info acpi_gbl_exception_names_ctrl[] = {
283 NULL, 360 EXCEP_TXT(NULL, NULL),
284 "AE_CTRL_RETURN_VALUE", 361 EXCEP_TXT("AE_CTRL_RETURN_VALUE", "A Method returned a value"),
285 "AE_CTRL_PENDING", 362 EXCEP_TXT("AE_CTRL_PENDING", "Method is calling another method"),
286 "AE_CTRL_TERMINATE", 363 EXCEP_TXT("AE_CTRL_TERMINATE", "Terminate the executing method"),
287 "AE_CTRL_TRUE", 364 EXCEP_TXT("AE_CTRL_TRUE", "An If or While predicate result"),
288 "AE_CTRL_FALSE", 365 EXCEP_TXT("AE_CTRL_FALSE", "An If or While predicate result"),
289 "AE_CTRL_DEPTH", 366 EXCEP_TXT("AE_CTRL_DEPTH", "Maximum search depth has been reached"),
290 "AE_CTRL_END", 367 EXCEP_TXT("AE_CTRL_END", "An If or While predicate is false"),
291 "AE_CTRL_TRANSFER", 368 EXCEP_TXT("AE_CTRL_TRANSFER", "Transfer control to called method"),
292 "AE_CTRL_BREAK", 369 EXCEP_TXT("AE_CTRL_BREAK", "A Break has been executed"),
293 "AE_CTRL_CONTINUE", 370 EXCEP_TXT("AE_CTRL_CONTINUE", "A Continue has been executed"),
294 "AE_CTRL_SKIP", 371 EXCEP_TXT("AE_CTRL_SKIP", "Not currently used"),
295 "AE_CTRL_PARSE_CONTINUE", 372 EXCEP_TXT("AE_CTRL_PARSE_CONTINUE", "Used to skip over bad opcodes"),
296 "AE_CTRL_PARSE_PENDING" 373 EXCEP_TXT("AE_CTRL_PARSE_PENDING", "Used to implement AML While loops")
297}; 374};
298 375
299#endif /* EXCEPTION_TABLE */ 376#endif /* EXCEPTION_TABLE */
diff --git a/include/acpi/acoutput.h b/include/acpi/acoutput.h
index 9885276178e0..4f52ea795c7a 100644
--- a/include/acpi/acoutput.h
+++ b/include/acpi/acoutput.h
@@ -324,9 +324,9 @@
324 324
325/* Helper macro */ 325/* Helper macro */
326 326
327#define ACPI_TRACE_ENTRY(name, function, cast, param) \ 327#define ACPI_TRACE_ENTRY(name, function, type, param) \
328 ACPI_FUNCTION_NAME (name) \ 328 ACPI_FUNCTION_NAME (name) \
329 function (ACPI_DEBUG_PARAMETERS, cast (param)) 329 function (ACPI_DEBUG_PARAMETERS, (type) (param))
330 330
331/* The actual entry trace macros */ 331/* The actual entry trace macros */
332 332
@@ -335,13 +335,13 @@
335 acpi_ut_trace (ACPI_DEBUG_PARAMETERS) 335 acpi_ut_trace (ACPI_DEBUG_PARAMETERS)
336 336
337#define ACPI_FUNCTION_TRACE_PTR(name, pointer) \ 337#define ACPI_FUNCTION_TRACE_PTR(name, pointer) \
338 ACPI_TRACE_ENTRY (name, acpi_ut_trace_ptr, (void *), pointer) 338 ACPI_TRACE_ENTRY (name, acpi_ut_trace_ptr, void *, pointer)
339 339
340#define ACPI_FUNCTION_TRACE_U32(name, value) \ 340#define ACPI_FUNCTION_TRACE_U32(name, value) \
341 ACPI_TRACE_ENTRY (name, acpi_ut_trace_u32, (u32), value) 341 ACPI_TRACE_ENTRY (name, acpi_ut_trace_u32, u32, value)
342 342
343#define ACPI_FUNCTION_TRACE_STR(name, string) \ 343#define ACPI_FUNCTION_TRACE_STR(name, string) \
344 ACPI_TRACE_ENTRY (name, acpi_ut_trace_str, (char *), string) 344 ACPI_TRACE_ENTRY (name, acpi_ut_trace_str, char *, string)
345 345
346#define ACPI_FUNCTION_ENTRY() \ 346#define ACPI_FUNCTION_ENTRY() \
347 acpi_ut_track_stack_ptr() 347 acpi_ut_track_stack_ptr()
@@ -355,16 +355,37 @@
355 * 355 *
356 * One of the FUNCTION_TRACE macros above must be used in conjunction 356 * One of the FUNCTION_TRACE macros above must be used in conjunction
357 * with these macros so that "_AcpiFunctionName" is defined. 357 * with these macros so that "_AcpiFunctionName" is defined.
358 *
359 * There are two versions of most of the return macros. The default version is
360 * safer, since it avoids side-effects by guaranteeing that the argument will
361 * not be evaluated twice.
362 *
363 * A less-safe version of the macros is provided for optional use if the
364 * compiler uses excessive CPU stack (for example, this may happen in the
365 * debug case if code optimzation is disabled.)
358 */ 366 */
359 367
360/* Exit trace helper macro */ 368/* Exit trace helper macro */
361 369
362#define ACPI_TRACE_EXIT(function, cast, param) \ 370#ifndef ACPI_SIMPLE_RETURN_MACROS
371
372#define ACPI_TRACE_EXIT(function, type, param) \
373 ACPI_DO_WHILE0 ({ \
374 register type _param = (type) (param); \
375 function (ACPI_DEBUG_PARAMETERS, _param); \
376 return (_param); \
377 })
378
379#else /* Use original less-safe macros */
380
381#define ACPI_TRACE_EXIT(function, type, param) \
363 ACPI_DO_WHILE0 ({ \ 382 ACPI_DO_WHILE0 ({ \
364 function (ACPI_DEBUG_PARAMETERS, cast (param)); \ 383 function (ACPI_DEBUG_PARAMETERS, (type) (param)); \
365 return ((param)); \ 384 return (param); \
366 }) 385 })
367 386
387#endif /* ACPI_SIMPLE_RETURN_MACROS */
388
368/* The actual exit macros */ 389/* The actual exit macros */
369 390
370#define return_VOID \ 391#define return_VOID \
@@ -374,13 +395,19 @@
374 }) 395 })
375 396
376#define return_ACPI_STATUS(status) \ 397#define return_ACPI_STATUS(status) \
377 ACPI_TRACE_EXIT (acpi_ut_status_exit, (acpi_status), status) 398 ACPI_TRACE_EXIT (acpi_ut_status_exit, acpi_status, status)
378 399
379#define return_PTR(pointer) \ 400#define return_PTR(pointer) \
380 ACPI_TRACE_EXIT (acpi_ut_ptr_exit, (u8 *), pointer) 401 ACPI_TRACE_EXIT (acpi_ut_ptr_exit, void *, pointer)
381 402
382#define return_VALUE(value) \ 403#define return_VALUE(value) \
383 ACPI_TRACE_EXIT (acpi_ut_value_exit, (u64), value) 404 ACPI_TRACE_EXIT (acpi_ut_value_exit, u64, value)
405
406#define return_UINT32(value) \
407 ACPI_TRACE_EXIT (acpi_ut_value_exit, u32, value)
408
409#define return_UINT8(value) \
410 ACPI_TRACE_EXIT (acpi_ut_value_exit, u8, value)
384 411
385/* Conditional execution */ 412/* Conditional execution */
386 413
@@ -428,8 +455,10 @@
428 455
429#define return_VOID return 456#define return_VOID return
430#define return_ACPI_STATUS(s) return(s) 457#define return_ACPI_STATUS(s) return(s)
431#define return_VALUE(s) return(s)
432#define return_PTR(s) return(s) 458#define return_PTR(s) return(s)
459#define return_VALUE(s) return(s)
460#define return_UINT8(s) return(s)
461#define return_UINT32(s) return(s)
433 462
434#endif /* ACPI_DEBUG_OUTPUT */ 463#endif /* ACPI_DEBUG_OUTPUT */
435 464
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
index 03322dddd88e..454881e6450a 100644
--- a/include/acpi/acpixf.h
+++ b/include/acpi/acpixf.h
@@ -46,7 +46,7 @@
46 46
47/* Current ACPICA subsystem version in YYYYMMDD format */ 47/* Current ACPICA subsystem version in YYYYMMDD format */
48 48
49#define ACPI_CA_VERSION 0x20130117 49#define ACPI_CA_VERSION 0x20130328
50 50
51#include <acpi/acconfig.h> 51#include <acpi/acconfig.h>
52#include <acpi/actypes.h> 52#include <acpi/actypes.h>
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index 77dc7a4099a3..ffaac0e7e0c6 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -72,11 +72,13 @@
72#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 72#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
73#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 73#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
74#define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 74#define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */
75#define ACPI_SIG_MTMR "MTMR" /* MID Timer table */
75#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 76#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
76#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 77#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
77#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 78#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
78#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 79#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
79#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 80#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
81#define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */
80#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 82#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
81#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 83#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
82#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 84#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */
@@ -852,6 +854,29 @@ struct acpi_table_mchi {
852 854
853/******************************************************************************* 855/*******************************************************************************
854 * 856 *
857 * MTMR - MID Timer Table
858 * Version 1
859 *
860 * Conforms to "Simple Firmware Interface Specification",
861 * Draft 0.8.2, Oct 19, 2010
862 * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table.
863 *
864 ******************************************************************************/
865
866struct acpi_table_mtmr {
867 struct acpi_table_header header; /* Common ACPI table header */
868};
869
870/* MTMR entry */
871
872struct acpi_mtmr_entry {
873 struct acpi_generic_address physical_address;
874 u32 frequency;
875 u32 irq;
876};
877
878/*******************************************************************************
879 *
855 * SLIC - Software Licensing Description Table 880 * SLIC - Software Licensing Description Table
856 * Version 1 881 * Version 1
857 * 882 *
@@ -1025,6 +1050,28 @@ struct acpi_table_uefi {
1025 1050
1026/******************************************************************************* 1051/*******************************************************************************
1027 * 1052 *
1053 * VRTC - Virtual Real Time Clock Table
1054 * Version 1
1055 *
1056 * Conforms to "Simple Firmware Interface Specification",
1057 * Draft 0.8.2, Oct 19, 2010
1058 * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table.
1059 *
1060 ******************************************************************************/
1061
1062struct acpi_table_vrtc {
1063 struct acpi_table_header header; /* Common ACPI table header */
1064};
1065
1066/* VRTC entry */
1067
1068struct acpi_vrtc_entry {
1069 struct acpi_generic_address physical_address;
1070 u32 irq;
1071};
1072
1073/*******************************************************************************
1074 *
1028 * WAET - Windows ACPI Emulated devices Table 1075 * WAET - Windows ACPI Emulated devices Table
1029 * Version 1 1076 * Version 1
1030 * 1077 *
diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h
index 332b17e3bec8..e2c0931a3d67 100644
--- a/include/acpi/actbl3.h
+++ b/include/acpi/actbl3.h
@@ -174,7 +174,7 @@ struct acpi_fpdt_header {
174 174
175enum acpi_fpdt_type { 175enum acpi_fpdt_type {
176 ACPI_FPDT_TYPE_BOOT = 0, 176 ACPI_FPDT_TYPE_BOOT = 0,
177 ACPI_FPDT_TYPE_S3PERF = 1, 177 ACPI_FPDT_TYPE_S3PERF = 1
178}; 178};
179 179
180/* 180/*
@@ -223,7 +223,7 @@ struct acpi_s3pt_header {
223 223
224enum acpi_s3pt_type { 224enum acpi_s3pt_type {
225 ACPI_S3PT_TYPE_RESUME = 0, 225 ACPI_S3PT_TYPE_RESUME = 0,
226 ACPI_S3PT_TYPE_SUSPEND = 1, 226 ACPI_S3PT_TYPE_SUSPEND = 1
227}; 227};
228 228
229struct acpi_s3pt_resume { 229struct acpi_s3pt_resume {
@@ -505,26 +505,59 @@ struct acpi_rasf_shared_memory {
505 u32 signature; 505 u32 signature;
506 u16 command; 506 u16 command;
507 u16 status; 507 u16 status;
508 u64 requested_address; 508 u16 version;
509 u64 requested_length; 509 u8 capabilities[16];
510 u64 actual_address; 510 u8 set_capabilities[16];
511 u64 actual_length; 511 u16 num_parameter_blocks;
512 u32 set_capabilities_status;
513};
514
515/* RASF Parameter Block Structure Header */
516
517struct acpi_rasf_parameter_block {
518 u16 type;
519 u16 version;
520 u16 length;
521};
522
523/* RASF Parameter Block Structure for PATROL_SCRUB */
524
525struct acpi_rasf_patrol_scrub_parameter {
526 struct acpi_rasf_parameter_block header;
527 u16 patrol_scrub_command;
528 u64 requested_address_range[2];
529 u64 actual_address_range[2];
512 u16 flags; 530 u16 flags;
513 u8 speed; 531 u8 requested_speed;
514}; 532};
515 533
516/* Masks for Flags and Speed fields above */ 534/* Masks for Flags and Speed fields above */
517 535
518#define ACPI_RASF_SCRUBBER_RUNNING 1 536#define ACPI_RASF_SCRUBBER_RUNNING 1
519#define ACPI_RASF_SPEED (7<<1) 537#define ACPI_RASF_SPEED (7<<1)
538#define ACPI_RASF_SPEED_SLOW (0<<1)
539#define ACPI_RASF_SPEED_MEDIUM (4<<1)
540#define ACPI_RASF_SPEED_FAST (7<<1)
520 541
521/* Channel Commands */ 542/* Channel Commands */
522 543
523enum acpi_rasf_commands { 544enum acpi_rasf_commands {
524 ACPI_RASF_GET_RAS_CAPABILITIES = 1, 545 ACPI_RASF_EXECUTE_RASF_COMMAND = 1
525 ACPI_RASF_GET_PATROL_PARAMETERS = 2, 546};
526 ACPI_RASF_START_PATROL_SCRUBBER = 3, 547
527 ACPI_RASF_STOP_PATROL_SCRUBBER = 4 548/* Platform RAS Capabilities */
549
550enum acpi_rasf_capabiliities {
551 ACPI_HW_PATROL_SCRUB_SUPPORTED = 0,
552 ACPI_SW_PATROL_SCRUB_EXPOSED = 1
553};
554
555/* Patrol Scrub Commands */
556
557enum acpi_rasf_patrol_scrub_commands {
558 ACPI_RASF_GET_PATROL_PARAMETERS = 1,
559 ACPI_RASF_START_PATROL_SCRUBBER = 2,
560 ACPI_RASF_STOP_PATROL_SCRUBBER = 3
528}; 561};
529 562
530/* Channel Command flags */ 563/* Channel Command flags */
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
index 845e75f1ffd8..3fac1be2d8b4 100644
--- a/include/acpi/actypes.h
+++ b/include/acpi/actypes.h
@@ -1128,7 +1128,6 @@ struct acpi_memory_list {
1128 u16 object_size; 1128 u16 object_size;
1129 u16 max_depth; 1129 u16 max_depth;
1130 u16 current_depth; 1130 u16 current_depth;
1131 u16 link_offset;
1132 1131
1133#ifdef ACPI_DBG_TRACK_ALLOCATIONS 1132#ifdef ACPI_DBG_TRACK_ALLOCATIONS
1134 1133