utdecode.c revision 1.4 1 1.1 jruoho /******************************************************************************
2 1.1 jruoho *
3 1.1 jruoho * Module Name: utdecode - Utility decoding routines (value-to-string)
4 1.1 jruoho *
5 1.1 jruoho *****************************************************************************/
6 1.1 jruoho
7 1.1 jruoho /*
8 1.1 jruoho * Copyright (C) 2000 - 2011, Intel Corp.
9 1.1 jruoho * All rights reserved.
10 1.1 jruoho *
11 1.1 jruoho * Redistribution and use in source and binary forms, with or without
12 1.1 jruoho * modification, are permitted provided that the following conditions
13 1.1 jruoho * are met:
14 1.1 jruoho * 1. Redistributions of source code must retain the above copyright
15 1.1 jruoho * notice, this list of conditions, and the following disclaimer,
16 1.1 jruoho * without modification.
17 1.1 jruoho * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 1.1 jruoho * substantially similar to the "NO WARRANTY" disclaimer below
19 1.1 jruoho * ("Disclaimer") and any redistribution must be conditioned upon
20 1.1 jruoho * including a substantially similar Disclaimer requirement for further
21 1.1 jruoho * binary redistribution.
22 1.1 jruoho * 3. Neither the names of the above-listed copyright holders nor the names
23 1.1 jruoho * of any contributors may be used to endorse or promote products derived
24 1.1 jruoho * from this software without specific prior written permission.
25 1.1 jruoho *
26 1.1 jruoho * Alternatively, this software may be distributed under the terms of the
27 1.1 jruoho * GNU General Public License ("GPL") version 2 as published by the Free
28 1.1 jruoho * Software Foundation.
29 1.1 jruoho *
30 1.1 jruoho * NO WARRANTY
31 1.1 jruoho * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 1.1 jruoho * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 1.1 jruoho * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 1.1 jruoho * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 1.1 jruoho * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 1.1 jruoho * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 1.1 jruoho * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 1.1 jruoho * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 1.1 jruoho * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 1.1 jruoho * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 1.1 jruoho * POSSIBILITY OF SUCH DAMAGES.
42 1.1 jruoho */
43 1.1 jruoho
44 1.1 jruoho #define __UTDECODE_C__
45 1.1 jruoho
46 1.1 jruoho #include "acpi.h"
47 1.1 jruoho #include "accommon.h"
48 1.1 jruoho #include "acnamesp.h"
49 1.1 jruoho
50 1.1 jruoho #define _COMPONENT ACPI_UTILITIES
51 1.1 jruoho ACPI_MODULE_NAME ("utdecode")
52 1.1 jruoho
53 1.1 jruoho
54 1.1 jruoho /*******************************************************************************
55 1.1 jruoho *
56 1.1 jruoho * FUNCTION: AcpiFormatException
57 1.1 jruoho *
58 1.1 jruoho * PARAMETERS: Status - The ACPI_STATUS code to be formatted
59 1.1 jruoho *
60 1.1 jruoho * RETURN: A string containing the exception text. A valid pointer is
61 1.1 jruoho * always returned.
62 1.1 jruoho *
63 1.1 jruoho * DESCRIPTION: This function translates an ACPI exception into an ASCII string
64 1.1 jruoho * It is here instead of utxface.c so it is always present.
65 1.1 jruoho *
66 1.1 jruoho ******************************************************************************/
67 1.1 jruoho
68 1.1 jruoho const char *
69 1.1 jruoho AcpiFormatException (
70 1.1 jruoho ACPI_STATUS Status)
71 1.1 jruoho {
72 1.1 jruoho const char *Exception = NULL;
73 1.1 jruoho
74 1.1 jruoho
75 1.1 jruoho ACPI_FUNCTION_ENTRY ();
76 1.1 jruoho
77 1.1 jruoho
78 1.1 jruoho Exception = AcpiUtValidateException (Status);
79 1.1 jruoho if (!Exception)
80 1.1 jruoho {
81 1.1 jruoho /* Exception code was not recognized */
82 1.1 jruoho
83 1.1 jruoho ACPI_ERROR ((AE_INFO,
84 1.1 jruoho "Unknown exception code: 0x%8.8X", Status));
85 1.1 jruoho
86 1.1 jruoho Exception = "UNKNOWN_STATUS_CODE";
87 1.1 jruoho }
88 1.1 jruoho
89 1.1 jruoho return (ACPI_CAST_PTR (const char, Exception));
90 1.1 jruoho }
91 1.1 jruoho
92 1.1 jruoho ACPI_EXPORT_SYMBOL (AcpiFormatException)
93 1.1 jruoho
94 1.1 jruoho
95 1.1 jruoho /*
96 1.1 jruoho * Properties of the ACPI Object Types, both internal and external.
97 1.1 jruoho * The table is indexed by values of ACPI_OBJECT_TYPE
98 1.1 jruoho */
99 1.1 jruoho const UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] =
100 1.1 jruoho {
101 1.1 jruoho ACPI_NS_NORMAL, /* 00 Any */
102 1.1 jruoho ACPI_NS_NORMAL, /* 01 Number */
103 1.1 jruoho ACPI_NS_NORMAL, /* 02 String */
104 1.1 jruoho ACPI_NS_NORMAL, /* 03 Buffer */
105 1.1 jruoho ACPI_NS_NORMAL, /* 04 Package */
106 1.1 jruoho ACPI_NS_NORMAL, /* 05 FieldUnit */
107 1.1 jruoho ACPI_NS_NEWSCOPE, /* 06 Device */
108 1.1 jruoho ACPI_NS_NORMAL, /* 07 Event */
109 1.1 jruoho ACPI_NS_NEWSCOPE, /* 08 Method */
110 1.1 jruoho ACPI_NS_NORMAL, /* 09 Mutex */
111 1.1 jruoho ACPI_NS_NORMAL, /* 10 Region */
112 1.1 jruoho ACPI_NS_NEWSCOPE, /* 11 Power */
113 1.1 jruoho ACPI_NS_NEWSCOPE, /* 12 Processor */
114 1.1 jruoho ACPI_NS_NEWSCOPE, /* 13 Thermal */
115 1.1 jruoho ACPI_NS_NORMAL, /* 14 BufferField */
116 1.1 jruoho ACPI_NS_NORMAL, /* 15 DdbHandle */
117 1.1 jruoho ACPI_NS_NORMAL, /* 16 Debug Object */
118 1.1 jruoho ACPI_NS_NORMAL, /* 17 DefField */
119 1.1 jruoho ACPI_NS_NORMAL, /* 18 BankField */
120 1.1 jruoho ACPI_NS_NORMAL, /* 19 IndexField */
121 1.1 jruoho ACPI_NS_NORMAL, /* 20 Reference */
122 1.1 jruoho ACPI_NS_NORMAL, /* 21 Alias */
123 1.1 jruoho ACPI_NS_NORMAL, /* 22 MethodAlias */
124 1.1 jruoho ACPI_NS_NORMAL, /* 23 Notify */
125 1.1 jruoho ACPI_NS_NORMAL, /* 24 Address Handler */
126 1.1 jruoho ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */
127 1.1 jruoho ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */
128 1.1 jruoho ACPI_NS_NEWSCOPE, /* 27 Scope */
129 1.1 jruoho ACPI_NS_NORMAL, /* 28 Extra */
130 1.1 jruoho ACPI_NS_NORMAL, /* 29 Data */
131 1.1 jruoho ACPI_NS_NORMAL /* 30 Invalid */
132 1.1 jruoho };
133 1.1 jruoho
134 1.1 jruoho
135 1.1 jruoho /*******************************************************************************
136 1.1 jruoho *
137 1.1 jruoho * FUNCTION: AcpiUtHexToAsciiChar
138 1.1 jruoho *
139 1.1 jruoho * PARAMETERS: Integer - Contains the hex digit
140 1.1 jruoho * Position - bit position of the digit within the
141 1.1 jruoho * integer (multiple of 4)
142 1.1 jruoho *
143 1.1 jruoho * RETURN: The converted Ascii character
144 1.1 jruoho *
145 1.1 jruoho * DESCRIPTION: Convert a hex digit to an Ascii character
146 1.1 jruoho *
147 1.1 jruoho ******************************************************************************/
148 1.1 jruoho
149 1.1 jruoho /* Hex to ASCII conversion table */
150 1.1 jruoho
151 1.1 jruoho static const char AcpiGbl_HexToAscii[] =
152 1.1 jruoho {
153 1.1 jruoho '0','1','2','3','4','5','6','7',
154 1.1 jruoho '8','9','A','B','C','D','E','F'
155 1.1 jruoho };
156 1.1 jruoho
157 1.1 jruoho char
158 1.1 jruoho AcpiUtHexToAsciiChar (
159 1.1 jruoho UINT64 Integer,
160 1.1 jruoho UINT32 Position)
161 1.1 jruoho {
162 1.1 jruoho
163 1.1 jruoho return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]);
164 1.1 jruoho }
165 1.1 jruoho
166 1.1 jruoho
167 1.1 jruoho /*******************************************************************************
168 1.1 jruoho *
169 1.1 jruoho * FUNCTION: AcpiUtGetRegionName
170 1.1 jruoho *
171 1.1 jruoho * PARAMETERS: Space ID - ID for the region
172 1.1 jruoho *
173 1.1 jruoho * RETURN: Decoded region SpaceId name
174 1.1 jruoho *
175 1.1 jruoho * DESCRIPTION: Translate a Space ID into a name string (Debug only)
176 1.1 jruoho *
177 1.1 jruoho ******************************************************************************/
178 1.1 jruoho
179 1.1 jruoho /* Region type decoding */
180 1.1 jruoho
181 1.1 jruoho const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
182 1.1 jruoho {
183 1.1 jruoho "SystemMemory",
184 1.1 jruoho "SystemIO",
185 1.1 jruoho "PCI_Config",
186 1.1 jruoho "EmbeddedControl",
187 1.1 jruoho "SMBus",
188 1.1 jruoho "SystemCMOS",
189 1.1 jruoho "PCIBARTarget",
190 1.4 jruoho "IPMI"
191 1.1 jruoho };
192 1.1 jruoho
193 1.1 jruoho
194 1.2 jruoho const char *
195 1.1 jruoho AcpiUtGetRegionName (
196 1.1 jruoho UINT8 SpaceId)
197 1.1 jruoho {
198 1.1 jruoho
199 1.1 jruoho if (SpaceId >= ACPI_USER_REGION_BEGIN)
200 1.1 jruoho {
201 1.1 jruoho return ("UserDefinedRegion");
202 1.1 jruoho }
203 1.4 jruoho else if (SpaceId == ACPI_ADR_SPACE_DATA_TABLE)
204 1.4 jruoho {
205 1.4 jruoho return ("DataTable");
206 1.4 jruoho }
207 1.1 jruoho else if (SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE)
208 1.1 jruoho {
209 1.1 jruoho return ("FunctionalFixedHW");
210 1.1 jruoho }
211 1.1 jruoho else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS)
212 1.1 jruoho {
213 1.1 jruoho return ("InvalidSpaceId");
214 1.1 jruoho }
215 1.1 jruoho
216 1.1 jruoho return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId]));
217 1.1 jruoho }
218 1.1 jruoho
219 1.1 jruoho
220 1.1 jruoho /*******************************************************************************
221 1.1 jruoho *
222 1.1 jruoho * FUNCTION: AcpiUtGetEventName
223 1.1 jruoho *
224 1.1 jruoho * PARAMETERS: EventId - Fixed event ID
225 1.1 jruoho *
226 1.1 jruoho * RETURN: Decoded event ID name
227 1.1 jruoho *
228 1.1 jruoho * DESCRIPTION: Translate a Event ID into a name string (Debug only)
229 1.1 jruoho *
230 1.1 jruoho ******************************************************************************/
231 1.1 jruoho
232 1.1 jruoho /* Event type decoding */
233 1.1 jruoho
234 1.1 jruoho static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
235 1.1 jruoho {
236 1.1 jruoho "PM_Timer",
237 1.1 jruoho "GlobalLock",
238 1.1 jruoho "PowerButton",
239 1.1 jruoho "SleepButton",
240 1.1 jruoho "RealTimeClock",
241 1.1 jruoho };
242 1.1 jruoho
243 1.1 jruoho
244 1.2 jruoho const char *
245 1.1 jruoho AcpiUtGetEventName (
246 1.1 jruoho UINT32 EventId)
247 1.1 jruoho {
248 1.1 jruoho
249 1.1 jruoho if (EventId > ACPI_EVENT_MAX)
250 1.1 jruoho {
251 1.1 jruoho return ("InvalidEventID");
252 1.1 jruoho }
253 1.1 jruoho
254 1.1 jruoho return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId]));
255 1.1 jruoho }
256 1.1 jruoho
257 1.1 jruoho
258 1.1 jruoho /*******************************************************************************
259 1.1 jruoho *
260 1.1 jruoho * FUNCTION: AcpiUtGetTypeName
261 1.1 jruoho *
262 1.1 jruoho * PARAMETERS: Type - An ACPI object type
263 1.1 jruoho *
264 1.1 jruoho * RETURN: Decoded ACPI object type name
265 1.1 jruoho *
266 1.1 jruoho * DESCRIPTION: Translate a Type ID into a name string (Debug only)
267 1.1 jruoho *
268 1.1 jruoho ******************************************************************************/
269 1.1 jruoho
270 1.1 jruoho /*
271 1.1 jruoho * Elements of AcpiGbl_NsTypeNames below must match
272 1.1 jruoho * one-to-one with values of ACPI_OBJECT_TYPE
273 1.1 jruoho *
274 1.1 jruoho * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
275 1.1 jruoho * when stored in a table it really means that we have thus far seen no
276 1.1 jruoho * evidence to indicate what type is actually going to be stored for this entry.
277 1.1 jruoho */
278 1.1 jruoho static const char AcpiGbl_BadType[] = "UNDEFINED";
279 1.1 jruoho
280 1.1 jruoho /* Printable names of the ACPI object types */
281 1.1 jruoho
282 1.1 jruoho static const char *AcpiGbl_NsTypeNames[] =
283 1.1 jruoho {
284 1.1 jruoho /* 00 */ "Untyped",
285 1.1 jruoho /* 01 */ "Integer",
286 1.1 jruoho /* 02 */ "String",
287 1.1 jruoho /* 03 */ "Buffer",
288 1.1 jruoho /* 04 */ "Package",
289 1.1 jruoho /* 05 */ "FieldUnit",
290 1.1 jruoho /* 06 */ "Device",
291 1.1 jruoho /* 07 */ "Event",
292 1.1 jruoho /* 08 */ "Method",
293 1.1 jruoho /* 09 */ "Mutex",
294 1.1 jruoho /* 10 */ "Region",
295 1.1 jruoho /* 11 */ "Power",
296 1.1 jruoho /* 12 */ "Processor",
297 1.1 jruoho /* 13 */ "Thermal",
298 1.1 jruoho /* 14 */ "BufferField",
299 1.1 jruoho /* 15 */ "DdbHandle",
300 1.1 jruoho /* 16 */ "DebugObject",
301 1.1 jruoho /* 17 */ "RegionField",
302 1.1 jruoho /* 18 */ "BankField",
303 1.1 jruoho /* 19 */ "IndexField",
304 1.1 jruoho /* 20 */ "Reference",
305 1.1 jruoho /* 21 */ "Alias",
306 1.1 jruoho /* 22 */ "MethodAlias",
307 1.1 jruoho /* 23 */ "Notify",
308 1.1 jruoho /* 24 */ "AddrHandler",
309 1.1 jruoho /* 25 */ "ResourceDesc",
310 1.1 jruoho /* 26 */ "ResourceFld",
311 1.1 jruoho /* 27 */ "Scope",
312 1.1 jruoho /* 28 */ "Extra",
313 1.1 jruoho /* 29 */ "Data",
314 1.1 jruoho /* 30 */ "Invalid"
315 1.1 jruoho };
316 1.1 jruoho
317 1.1 jruoho
318 1.3 jruoho char *
319 1.1 jruoho AcpiUtGetTypeName (
320 1.1 jruoho ACPI_OBJECT_TYPE Type)
321 1.1 jruoho {
322 1.1 jruoho
323 1.1 jruoho if (Type > ACPI_TYPE_INVALID)
324 1.1 jruoho {
325 1.1 jruoho return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
326 1.1 jruoho }
327 1.1 jruoho
328 1.1 jruoho return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type]));
329 1.1 jruoho }
330 1.1 jruoho
331 1.1 jruoho
332 1.2 jruoho const char *
333 1.1 jruoho AcpiUtGetObjectTypeName (
334 1.1 jruoho ACPI_OPERAND_OBJECT *ObjDesc)
335 1.1 jruoho {
336 1.1 jruoho
337 1.1 jruoho if (!ObjDesc)
338 1.1 jruoho {
339 1.1 jruoho return ("[NULL Object Descriptor]");
340 1.1 jruoho }
341 1.1 jruoho
342 1.1 jruoho return (AcpiUtGetTypeName (ObjDesc->Common.Type));
343 1.1 jruoho }
344 1.1 jruoho
345 1.1 jruoho
346 1.1 jruoho /*******************************************************************************
347 1.1 jruoho *
348 1.1 jruoho * FUNCTION: AcpiUtGetNodeName
349 1.1 jruoho *
350 1.1 jruoho * PARAMETERS: Object - A namespace node
351 1.1 jruoho *
352 1.1 jruoho * RETURN: ASCII name of the node
353 1.1 jruoho *
354 1.1 jruoho * DESCRIPTION: Validate the node and return the node's ACPI name.
355 1.1 jruoho *
356 1.1 jruoho ******************************************************************************/
357 1.1 jruoho
358 1.2 jruoho const char *
359 1.1 jruoho AcpiUtGetNodeName (
360 1.1 jruoho void *Object)
361 1.1 jruoho {
362 1.1 jruoho ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object;
363 1.1 jruoho
364 1.1 jruoho
365 1.1 jruoho /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
366 1.1 jruoho
367 1.1 jruoho if (!Object)
368 1.1 jruoho {
369 1.1 jruoho return ("NULL");
370 1.1 jruoho }
371 1.1 jruoho
372 1.1 jruoho /* Check for Root node */
373 1.1 jruoho
374 1.1 jruoho if ((Object == ACPI_ROOT_OBJECT) ||
375 1.1 jruoho (Object == AcpiGbl_RootNode))
376 1.1 jruoho {
377 1.1 jruoho return ("\"\\\" ");
378 1.1 jruoho }
379 1.1 jruoho
380 1.1 jruoho /* Descriptor must be a namespace node */
381 1.1 jruoho
382 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
383 1.1 jruoho {
384 1.1 jruoho return ("####");
385 1.1 jruoho }
386 1.1 jruoho
387 1.1 jruoho /*
388 1.1 jruoho * Ensure name is valid. The name was validated/repaired when the node
389 1.1 jruoho * was created, but make sure it has not been corrupted.
390 1.1 jruoho */
391 1.1 jruoho AcpiUtRepairName (Node->Name.Ascii);
392 1.1 jruoho
393 1.1 jruoho /* Return the name */
394 1.1 jruoho
395 1.1 jruoho return (Node->Name.Ascii);
396 1.1 jruoho }
397 1.1 jruoho
398 1.1 jruoho
399 1.1 jruoho /*******************************************************************************
400 1.1 jruoho *
401 1.1 jruoho * FUNCTION: AcpiUtGetDescriptorName
402 1.1 jruoho *
403 1.1 jruoho * PARAMETERS: Object - An ACPI object
404 1.1 jruoho *
405 1.1 jruoho * RETURN: Decoded name of the descriptor type
406 1.1 jruoho *
407 1.1 jruoho * DESCRIPTION: Validate object and return the descriptor type
408 1.1 jruoho *
409 1.1 jruoho ******************************************************************************/
410 1.1 jruoho
411 1.1 jruoho /* Printable names of object descriptor types */
412 1.1 jruoho
413 1.1 jruoho static const char *AcpiGbl_DescTypeNames[] =
414 1.1 jruoho {
415 1.1 jruoho /* 00 */ "Not a Descriptor",
416 1.1 jruoho /* 01 */ "Cached",
417 1.1 jruoho /* 02 */ "State-Generic",
418 1.1 jruoho /* 03 */ "State-Update",
419 1.1 jruoho /* 04 */ "State-Package",
420 1.1 jruoho /* 05 */ "State-Control",
421 1.1 jruoho /* 06 */ "State-RootParseScope",
422 1.1 jruoho /* 07 */ "State-ParseScope",
423 1.1 jruoho /* 08 */ "State-WalkScope",
424 1.1 jruoho /* 09 */ "State-Result",
425 1.1 jruoho /* 10 */ "State-Notify",
426 1.1 jruoho /* 11 */ "State-Thread",
427 1.1 jruoho /* 12 */ "Walk",
428 1.1 jruoho /* 13 */ "Parser",
429 1.1 jruoho /* 14 */ "Operand",
430 1.1 jruoho /* 15 */ "Node"
431 1.1 jruoho };
432 1.1 jruoho
433 1.1 jruoho
434 1.2 jruoho const char *
435 1.1 jruoho AcpiUtGetDescriptorName (
436 1.1 jruoho void *Object)
437 1.1 jruoho {
438 1.1 jruoho
439 1.1 jruoho if (!Object)
440 1.1 jruoho {
441 1.1 jruoho return ("NULL OBJECT");
442 1.1 jruoho }
443 1.1 jruoho
444 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX)
445 1.1 jruoho {
446 1.1 jruoho return ("Not a Descriptor");
447 1.1 jruoho }
448 1.1 jruoho
449 1.1 jruoho return (ACPI_CAST_PTR (char,
450 1.1 jruoho AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]));
451 1.1 jruoho
452 1.1 jruoho }
453 1.1 jruoho
454 1.1 jruoho
455 1.1 jruoho /*******************************************************************************
456 1.1 jruoho *
457 1.1 jruoho * FUNCTION: AcpiUtGetReferenceName
458 1.1 jruoho *
459 1.1 jruoho * PARAMETERS: Object - An ACPI reference object
460 1.1 jruoho *
461 1.1 jruoho * RETURN: Decoded name of the type of reference
462 1.1 jruoho *
463 1.1 jruoho * DESCRIPTION: Decode a reference object sub-type to a string.
464 1.1 jruoho *
465 1.1 jruoho ******************************************************************************/
466 1.1 jruoho
467 1.1 jruoho /* Printable names of reference object sub-types */
468 1.1 jruoho
469 1.1 jruoho static const char *AcpiGbl_RefClassNames[] =
470 1.1 jruoho {
471 1.1 jruoho /* 00 */ "Local",
472 1.1 jruoho /* 01 */ "Argument",
473 1.1 jruoho /* 02 */ "RefOf",
474 1.1 jruoho /* 03 */ "Index",
475 1.1 jruoho /* 04 */ "DdbHandle",
476 1.1 jruoho /* 05 */ "Named Object",
477 1.1 jruoho /* 06 */ "Debug"
478 1.1 jruoho };
479 1.1 jruoho
480 1.1 jruoho const char *
481 1.1 jruoho AcpiUtGetReferenceName (
482 1.1 jruoho ACPI_OPERAND_OBJECT *Object)
483 1.1 jruoho {
484 1.1 jruoho
485 1.1 jruoho if (!Object)
486 1.1 jruoho {
487 1.1 jruoho return ("NULL Object");
488 1.1 jruoho }
489 1.1 jruoho
490 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND)
491 1.1 jruoho {
492 1.1 jruoho return ("Not an Operand object");
493 1.1 jruoho }
494 1.1 jruoho
495 1.1 jruoho if (Object->Common.Type != ACPI_TYPE_LOCAL_REFERENCE)
496 1.1 jruoho {
497 1.1 jruoho return ("Not a Reference object");
498 1.1 jruoho }
499 1.1 jruoho
500 1.1 jruoho if (Object->Reference.Class > ACPI_REFCLASS_MAX)
501 1.1 jruoho {
502 1.1 jruoho return ("Unknown Reference class");
503 1.1 jruoho }
504 1.1 jruoho
505 1.1 jruoho return (AcpiGbl_RefClassNames[Object->Reference.Class]);
506 1.1 jruoho }
507 1.1 jruoho
508 1.1 jruoho
509 1.1 jruoho #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
510 1.1 jruoho /*
511 1.1 jruoho * Strings and procedures used for debug only
512 1.1 jruoho */
513 1.1 jruoho
514 1.1 jruoho /*******************************************************************************
515 1.1 jruoho *
516 1.1 jruoho * FUNCTION: AcpiUtGetMutexName
517 1.1 jruoho *
518 1.1 jruoho * PARAMETERS: MutexId - The predefined ID for this mutex.
519 1.1 jruoho *
520 1.1 jruoho * RETURN: Decoded name of the internal mutex
521 1.1 jruoho *
522 1.1 jruoho * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
523 1.1 jruoho *
524 1.1 jruoho ******************************************************************************/
525 1.1 jruoho
526 1.1 jruoho /* Names for internal mutex objects, used for debug output */
527 1.1 jruoho
528 1.3 jruoho static const char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] =
529 1.1 jruoho {
530 1.1 jruoho "ACPI_MTX_Interpreter",
531 1.1 jruoho "ACPI_MTX_Namespace",
532 1.1 jruoho "ACPI_MTX_Tables",
533 1.1 jruoho "ACPI_MTX_Events",
534 1.1 jruoho "ACPI_MTX_Caches",
535 1.1 jruoho "ACPI_MTX_Memory",
536 1.1 jruoho "ACPI_MTX_CommandComplete",
537 1.1 jruoho "ACPI_MTX_CommandReady"
538 1.1 jruoho };
539 1.1 jruoho
540 1.2 jruoho const char *
541 1.1 jruoho AcpiUtGetMutexName (
542 1.1 jruoho UINT32 MutexId)
543 1.1 jruoho {
544 1.1 jruoho
545 1.1 jruoho if (MutexId > ACPI_MAX_MUTEX)
546 1.1 jruoho {
547 1.1 jruoho return ("Invalid Mutex ID");
548 1.1 jruoho }
549 1.1 jruoho
550 1.1 jruoho return (AcpiGbl_MutexNames[MutexId]);
551 1.1 jruoho }
552 1.1 jruoho
553 1.1 jruoho
554 1.1 jruoho /*******************************************************************************
555 1.1 jruoho *
556 1.1 jruoho * FUNCTION: AcpiUtGetNotifyName
557 1.1 jruoho *
558 1.1 jruoho * PARAMETERS: NotifyValue - Value from the Notify() request
559 1.1 jruoho *
560 1.1 jruoho * RETURN: Decoded name for the notify value
561 1.1 jruoho *
562 1.1 jruoho * DESCRIPTION: Translate a Notify Value to a notify namestring.
563 1.1 jruoho *
564 1.1 jruoho ******************************************************************************/
565 1.1 jruoho
566 1.1 jruoho /* Names for Notify() values, used for debug output */
567 1.1 jruoho
568 1.1 jruoho static const char *AcpiGbl_NotifyValueNames[] =
569 1.1 jruoho {
570 1.1 jruoho "Bus Check",
571 1.1 jruoho "Device Check",
572 1.1 jruoho "Device Wake",
573 1.1 jruoho "Eject Request",
574 1.1 jruoho "Device Check Light",
575 1.1 jruoho "Frequency Mismatch",
576 1.1 jruoho "Bus Mode Mismatch",
577 1.1 jruoho "Power Fault",
578 1.1 jruoho "Capabilities Check",
579 1.1 jruoho "Device PLD Check",
580 1.1 jruoho "Reserved",
581 1.1 jruoho "System Locality Update"
582 1.1 jruoho };
583 1.1 jruoho
584 1.1 jruoho const char *
585 1.1 jruoho AcpiUtGetNotifyName (
586 1.1 jruoho UINT32 NotifyValue)
587 1.1 jruoho {
588 1.1 jruoho
589 1.1 jruoho if (NotifyValue <= ACPI_NOTIFY_MAX)
590 1.1 jruoho {
591 1.1 jruoho return (AcpiGbl_NotifyValueNames[NotifyValue]);
592 1.1 jruoho }
593 1.1 jruoho else if (NotifyValue <= ACPI_MAX_SYS_NOTIFY)
594 1.1 jruoho {
595 1.1 jruoho return ("Reserved");
596 1.1 jruoho }
597 1.1 jruoho else /* Greater or equal to 0x80 */
598 1.1 jruoho {
599 1.1 jruoho return ("**Device Specific**");
600 1.1 jruoho }
601 1.1 jruoho }
602 1.1 jruoho #endif
603 1.1 jruoho
604 1.1 jruoho
605 1.1 jruoho /*******************************************************************************
606 1.1 jruoho *
607 1.1 jruoho * FUNCTION: AcpiUtValidObjectType
608 1.1 jruoho *
609 1.1 jruoho * PARAMETERS: Type - Object type to be validated
610 1.1 jruoho *
611 1.1 jruoho * RETURN: TRUE if valid object type, FALSE otherwise
612 1.1 jruoho *
613 1.1 jruoho * DESCRIPTION: Validate an object type
614 1.1 jruoho *
615 1.1 jruoho ******************************************************************************/
616 1.1 jruoho
617 1.1 jruoho BOOLEAN
618 1.1 jruoho AcpiUtValidObjectType (
619 1.1 jruoho ACPI_OBJECT_TYPE Type)
620 1.1 jruoho {
621 1.1 jruoho
622 1.1 jruoho if (Type > ACPI_TYPE_LOCAL_MAX)
623 1.1 jruoho {
624 1.1 jruoho /* Note: Assumes all TYPEs are contiguous (external/local) */
625 1.1 jruoho
626 1.1 jruoho return (FALSE);
627 1.1 jruoho }
628 1.1 jruoho
629 1.1 jruoho return (TRUE);
630 1.1 jruoho }
631