utdecode.c revision 1.2 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.1 jruoho "IPMI",
191 1.1 jruoho "DataTable"
192 1.1 jruoho };
193 1.1 jruoho
194 1.1 jruoho
195 1.2 jruoho const char *
196 1.1 jruoho AcpiUtGetRegionName (
197 1.1 jruoho UINT8 SpaceId)
198 1.1 jruoho {
199 1.1 jruoho
200 1.1 jruoho if (SpaceId >= ACPI_USER_REGION_BEGIN)
201 1.1 jruoho {
202 1.1 jruoho return ("UserDefinedRegion");
203 1.1 jruoho }
204 1.1 jruoho else if (SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE)
205 1.1 jruoho {
206 1.1 jruoho return ("FunctionalFixedHW");
207 1.1 jruoho }
208 1.1 jruoho else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS)
209 1.1 jruoho {
210 1.1 jruoho return ("InvalidSpaceId");
211 1.1 jruoho }
212 1.1 jruoho
213 1.1 jruoho return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId]));
214 1.1 jruoho }
215 1.1 jruoho
216 1.1 jruoho
217 1.1 jruoho /*******************************************************************************
218 1.1 jruoho *
219 1.1 jruoho * FUNCTION: AcpiUtGetEventName
220 1.1 jruoho *
221 1.1 jruoho * PARAMETERS: EventId - Fixed event ID
222 1.1 jruoho *
223 1.1 jruoho * RETURN: Decoded event ID name
224 1.1 jruoho *
225 1.1 jruoho * DESCRIPTION: Translate a Event ID into a name string (Debug only)
226 1.1 jruoho *
227 1.1 jruoho ******************************************************************************/
228 1.1 jruoho
229 1.1 jruoho /* Event type decoding */
230 1.1 jruoho
231 1.1 jruoho static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
232 1.1 jruoho {
233 1.1 jruoho "PM_Timer",
234 1.1 jruoho "GlobalLock",
235 1.1 jruoho "PowerButton",
236 1.1 jruoho "SleepButton",
237 1.1 jruoho "RealTimeClock",
238 1.1 jruoho };
239 1.1 jruoho
240 1.1 jruoho
241 1.2 jruoho const char *
242 1.1 jruoho AcpiUtGetEventName (
243 1.1 jruoho UINT32 EventId)
244 1.1 jruoho {
245 1.1 jruoho
246 1.1 jruoho if (EventId > ACPI_EVENT_MAX)
247 1.1 jruoho {
248 1.1 jruoho return ("InvalidEventID");
249 1.1 jruoho }
250 1.1 jruoho
251 1.1 jruoho return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId]));
252 1.1 jruoho }
253 1.1 jruoho
254 1.1 jruoho
255 1.1 jruoho /*******************************************************************************
256 1.1 jruoho *
257 1.1 jruoho * FUNCTION: AcpiUtGetTypeName
258 1.1 jruoho *
259 1.1 jruoho * PARAMETERS: Type - An ACPI object type
260 1.1 jruoho *
261 1.1 jruoho * RETURN: Decoded ACPI object type name
262 1.1 jruoho *
263 1.1 jruoho * DESCRIPTION: Translate a Type ID into a name string (Debug only)
264 1.1 jruoho *
265 1.1 jruoho ******************************************************************************/
266 1.1 jruoho
267 1.1 jruoho /*
268 1.1 jruoho * Elements of AcpiGbl_NsTypeNames below must match
269 1.1 jruoho * one-to-one with values of ACPI_OBJECT_TYPE
270 1.1 jruoho *
271 1.1 jruoho * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
272 1.1 jruoho * when stored in a table it really means that we have thus far seen no
273 1.1 jruoho * evidence to indicate what type is actually going to be stored for this entry.
274 1.1 jruoho */
275 1.1 jruoho static const char AcpiGbl_BadType[] = "UNDEFINED";
276 1.1 jruoho
277 1.1 jruoho /* Printable names of the ACPI object types */
278 1.1 jruoho
279 1.1 jruoho static const char *AcpiGbl_NsTypeNames[] =
280 1.1 jruoho {
281 1.1 jruoho /* 00 */ "Untyped",
282 1.1 jruoho /* 01 */ "Integer",
283 1.1 jruoho /* 02 */ "String",
284 1.1 jruoho /* 03 */ "Buffer",
285 1.1 jruoho /* 04 */ "Package",
286 1.1 jruoho /* 05 */ "FieldUnit",
287 1.1 jruoho /* 06 */ "Device",
288 1.1 jruoho /* 07 */ "Event",
289 1.1 jruoho /* 08 */ "Method",
290 1.1 jruoho /* 09 */ "Mutex",
291 1.1 jruoho /* 10 */ "Region",
292 1.1 jruoho /* 11 */ "Power",
293 1.1 jruoho /* 12 */ "Processor",
294 1.1 jruoho /* 13 */ "Thermal",
295 1.1 jruoho /* 14 */ "BufferField",
296 1.1 jruoho /* 15 */ "DdbHandle",
297 1.1 jruoho /* 16 */ "DebugObject",
298 1.1 jruoho /* 17 */ "RegionField",
299 1.1 jruoho /* 18 */ "BankField",
300 1.1 jruoho /* 19 */ "IndexField",
301 1.1 jruoho /* 20 */ "Reference",
302 1.1 jruoho /* 21 */ "Alias",
303 1.1 jruoho /* 22 */ "MethodAlias",
304 1.1 jruoho /* 23 */ "Notify",
305 1.1 jruoho /* 24 */ "AddrHandler",
306 1.1 jruoho /* 25 */ "ResourceDesc",
307 1.1 jruoho /* 26 */ "ResourceFld",
308 1.1 jruoho /* 27 */ "Scope",
309 1.1 jruoho /* 28 */ "Extra",
310 1.1 jruoho /* 29 */ "Data",
311 1.1 jruoho /* 30 */ "Invalid"
312 1.1 jruoho };
313 1.1 jruoho
314 1.1 jruoho
315 1.2 jruoho const char *
316 1.1 jruoho AcpiUtGetTypeName (
317 1.1 jruoho ACPI_OBJECT_TYPE Type)
318 1.1 jruoho {
319 1.1 jruoho
320 1.1 jruoho if (Type > ACPI_TYPE_INVALID)
321 1.1 jruoho {
322 1.1 jruoho return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
323 1.1 jruoho }
324 1.1 jruoho
325 1.1 jruoho return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type]));
326 1.1 jruoho }
327 1.1 jruoho
328 1.1 jruoho
329 1.2 jruoho const char *
330 1.1 jruoho AcpiUtGetObjectTypeName (
331 1.1 jruoho ACPI_OPERAND_OBJECT *ObjDesc)
332 1.1 jruoho {
333 1.1 jruoho
334 1.1 jruoho if (!ObjDesc)
335 1.1 jruoho {
336 1.1 jruoho return ("[NULL Object Descriptor]");
337 1.1 jruoho }
338 1.1 jruoho
339 1.1 jruoho return (AcpiUtGetTypeName (ObjDesc->Common.Type));
340 1.1 jruoho }
341 1.1 jruoho
342 1.1 jruoho
343 1.1 jruoho /*******************************************************************************
344 1.1 jruoho *
345 1.1 jruoho * FUNCTION: AcpiUtGetNodeName
346 1.1 jruoho *
347 1.1 jruoho * PARAMETERS: Object - A namespace node
348 1.1 jruoho *
349 1.1 jruoho * RETURN: ASCII name of the node
350 1.1 jruoho *
351 1.1 jruoho * DESCRIPTION: Validate the node and return the node's ACPI name.
352 1.1 jruoho *
353 1.1 jruoho ******************************************************************************/
354 1.1 jruoho
355 1.2 jruoho const char *
356 1.1 jruoho AcpiUtGetNodeName (
357 1.1 jruoho void *Object)
358 1.1 jruoho {
359 1.1 jruoho ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object;
360 1.1 jruoho
361 1.1 jruoho
362 1.1 jruoho /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
363 1.1 jruoho
364 1.1 jruoho if (!Object)
365 1.1 jruoho {
366 1.1 jruoho return ("NULL");
367 1.1 jruoho }
368 1.1 jruoho
369 1.1 jruoho /* Check for Root node */
370 1.1 jruoho
371 1.1 jruoho if ((Object == ACPI_ROOT_OBJECT) ||
372 1.1 jruoho (Object == AcpiGbl_RootNode))
373 1.1 jruoho {
374 1.1 jruoho return ("\"\\\" ");
375 1.1 jruoho }
376 1.1 jruoho
377 1.1 jruoho /* Descriptor must be a namespace node */
378 1.1 jruoho
379 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
380 1.1 jruoho {
381 1.1 jruoho return ("####");
382 1.1 jruoho }
383 1.1 jruoho
384 1.1 jruoho /*
385 1.1 jruoho * Ensure name is valid. The name was validated/repaired when the node
386 1.1 jruoho * was created, but make sure it has not been corrupted.
387 1.1 jruoho */
388 1.1 jruoho AcpiUtRepairName (Node->Name.Ascii);
389 1.1 jruoho
390 1.1 jruoho /* Return the name */
391 1.1 jruoho
392 1.1 jruoho return (Node->Name.Ascii);
393 1.1 jruoho }
394 1.1 jruoho
395 1.1 jruoho
396 1.1 jruoho /*******************************************************************************
397 1.1 jruoho *
398 1.1 jruoho * FUNCTION: AcpiUtGetDescriptorName
399 1.1 jruoho *
400 1.1 jruoho * PARAMETERS: Object - An ACPI object
401 1.1 jruoho *
402 1.1 jruoho * RETURN: Decoded name of the descriptor type
403 1.1 jruoho *
404 1.1 jruoho * DESCRIPTION: Validate object and return the descriptor type
405 1.1 jruoho *
406 1.1 jruoho ******************************************************************************/
407 1.1 jruoho
408 1.1 jruoho /* Printable names of object descriptor types */
409 1.1 jruoho
410 1.1 jruoho static const char *AcpiGbl_DescTypeNames[] =
411 1.1 jruoho {
412 1.1 jruoho /* 00 */ "Not a Descriptor",
413 1.1 jruoho /* 01 */ "Cached",
414 1.1 jruoho /* 02 */ "State-Generic",
415 1.1 jruoho /* 03 */ "State-Update",
416 1.1 jruoho /* 04 */ "State-Package",
417 1.1 jruoho /* 05 */ "State-Control",
418 1.1 jruoho /* 06 */ "State-RootParseScope",
419 1.1 jruoho /* 07 */ "State-ParseScope",
420 1.1 jruoho /* 08 */ "State-WalkScope",
421 1.1 jruoho /* 09 */ "State-Result",
422 1.1 jruoho /* 10 */ "State-Notify",
423 1.1 jruoho /* 11 */ "State-Thread",
424 1.1 jruoho /* 12 */ "Walk",
425 1.1 jruoho /* 13 */ "Parser",
426 1.1 jruoho /* 14 */ "Operand",
427 1.1 jruoho /* 15 */ "Node"
428 1.1 jruoho };
429 1.1 jruoho
430 1.1 jruoho
431 1.2 jruoho const char *
432 1.1 jruoho AcpiUtGetDescriptorName (
433 1.1 jruoho void *Object)
434 1.1 jruoho {
435 1.1 jruoho
436 1.1 jruoho if (!Object)
437 1.1 jruoho {
438 1.1 jruoho return ("NULL OBJECT");
439 1.1 jruoho }
440 1.1 jruoho
441 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX)
442 1.1 jruoho {
443 1.1 jruoho return ("Not a Descriptor");
444 1.1 jruoho }
445 1.1 jruoho
446 1.1 jruoho return (ACPI_CAST_PTR (char,
447 1.1 jruoho AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]));
448 1.1 jruoho
449 1.1 jruoho }
450 1.1 jruoho
451 1.1 jruoho
452 1.1 jruoho /*******************************************************************************
453 1.1 jruoho *
454 1.1 jruoho * FUNCTION: AcpiUtGetReferenceName
455 1.1 jruoho *
456 1.1 jruoho * PARAMETERS: Object - An ACPI reference object
457 1.1 jruoho *
458 1.1 jruoho * RETURN: Decoded name of the type of reference
459 1.1 jruoho *
460 1.1 jruoho * DESCRIPTION: Decode a reference object sub-type to a string.
461 1.1 jruoho *
462 1.1 jruoho ******************************************************************************/
463 1.1 jruoho
464 1.1 jruoho /* Printable names of reference object sub-types */
465 1.1 jruoho
466 1.1 jruoho static const char *AcpiGbl_RefClassNames[] =
467 1.1 jruoho {
468 1.1 jruoho /* 00 */ "Local",
469 1.1 jruoho /* 01 */ "Argument",
470 1.1 jruoho /* 02 */ "RefOf",
471 1.1 jruoho /* 03 */ "Index",
472 1.1 jruoho /* 04 */ "DdbHandle",
473 1.1 jruoho /* 05 */ "Named Object",
474 1.1 jruoho /* 06 */ "Debug"
475 1.1 jruoho };
476 1.1 jruoho
477 1.1 jruoho const char *
478 1.1 jruoho AcpiUtGetReferenceName (
479 1.1 jruoho ACPI_OPERAND_OBJECT *Object)
480 1.1 jruoho {
481 1.1 jruoho
482 1.1 jruoho if (!Object)
483 1.1 jruoho {
484 1.1 jruoho return ("NULL Object");
485 1.1 jruoho }
486 1.1 jruoho
487 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND)
488 1.1 jruoho {
489 1.1 jruoho return ("Not an Operand object");
490 1.1 jruoho }
491 1.1 jruoho
492 1.1 jruoho if (Object->Common.Type != ACPI_TYPE_LOCAL_REFERENCE)
493 1.1 jruoho {
494 1.1 jruoho return ("Not a Reference object");
495 1.1 jruoho }
496 1.1 jruoho
497 1.1 jruoho if (Object->Reference.Class > ACPI_REFCLASS_MAX)
498 1.1 jruoho {
499 1.1 jruoho return ("Unknown Reference class");
500 1.1 jruoho }
501 1.1 jruoho
502 1.1 jruoho return (AcpiGbl_RefClassNames[Object->Reference.Class]);
503 1.1 jruoho }
504 1.1 jruoho
505 1.1 jruoho
506 1.1 jruoho #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
507 1.1 jruoho /*
508 1.1 jruoho * Strings and procedures used for debug only
509 1.1 jruoho */
510 1.1 jruoho
511 1.1 jruoho /*******************************************************************************
512 1.1 jruoho *
513 1.1 jruoho * FUNCTION: AcpiUtGetMutexName
514 1.1 jruoho *
515 1.1 jruoho * PARAMETERS: MutexId - The predefined ID for this mutex.
516 1.1 jruoho *
517 1.1 jruoho * RETURN: Decoded name of the internal mutex
518 1.1 jruoho *
519 1.1 jruoho * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
520 1.1 jruoho *
521 1.1 jruoho ******************************************************************************/
522 1.1 jruoho
523 1.1 jruoho /* Names for internal mutex objects, used for debug output */
524 1.1 jruoho
525 1.1 jruoho static char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] =
526 1.1 jruoho {
527 1.1 jruoho "ACPI_MTX_Interpreter",
528 1.1 jruoho "ACPI_MTX_Namespace",
529 1.1 jruoho "ACPI_MTX_Tables",
530 1.1 jruoho "ACPI_MTX_Events",
531 1.1 jruoho "ACPI_MTX_Caches",
532 1.1 jruoho "ACPI_MTX_Memory",
533 1.1 jruoho "ACPI_MTX_CommandComplete",
534 1.1 jruoho "ACPI_MTX_CommandReady"
535 1.1 jruoho };
536 1.1 jruoho
537 1.2 jruoho const char *
538 1.1 jruoho AcpiUtGetMutexName (
539 1.1 jruoho UINT32 MutexId)
540 1.1 jruoho {
541 1.1 jruoho
542 1.1 jruoho if (MutexId > ACPI_MAX_MUTEX)
543 1.1 jruoho {
544 1.1 jruoho return ("Invalid Mutex ID");
545 1.1 jruoho }
546 1.1 jruoho
547 1.1 jruoho return (AcpiGbl_MutexNames[MutexId]);
548 1.1 jruoho }
549 1.1 jruoho
550 1.1 jruoho
551 1.1 jruoho /*******************************************************************************
552 1.1 jruoho *
553 1.1 jruoho * FUNCTION: AcpiUtGetNotifyName
554 1.1 jruoho *
555 1.1 jruoho * PARAMETERS: NotifyValue - Value from the Notify() request
556 1.1 jruoho *
557 1.1 jruoho * RETURN: Decoded name for the notify value
558 1.1 jruoho *
559 1.1 jruoho * DESCRIPTION: Translate a Notify Value to a notify namestring.
560 1.1 jruoho *
561 1.1 jruoho ******************************************************************************/
562 1.1 jruoho
563 1.1 jruoho /* Names for Notify() values, used for debug output */
564 1.1 jruoho
565 1.1 jruoho static const char *AcpiGbl_NotifyValueNames[] =
566 1.1 jruoho {
567 1.1 jruoho "Bus Check",
568 1.1 jruoho "Device Check",
569 1.1 jruoho "Device Wake",
570 1.1 jruoho "Eject Request",
571 1.1 jruoho "Device Check Light",
572 1.1 jruoho "Frequency Mismatch",
573 1.1 jruoho "Bus Mode Mismatch",
574 1.1 jruoho "Power Fault",
575 1.1 jruoho "Capabilities Check",
576 1.1 jruoho "Device PLD Check",
577 1.1 jruoho "Reserved",
578 1.1 jruoho "System Locality Update"
579 1.1 jruoho };
580 1.1 jruoho
581 1.1 jruoho const char *
582 1.1 jruoho AcpiUtGetNotifyName (
583 1.1 jruoho UINT32 NotifyValue)
584 1.1 jruoho {
585 1.1 jruoho
586 1.1 jruoho if (NotifyValue <= ACPI_NOTIFY_MAX)
587 1.1 jruoho {
588 1.1 jruoho return (AcpiGbl_NotifyValueNames[NotifyValue]);
589 1.1 jruoho }
590 1.1 jruoho else if (NotifyValue <= ACPI_MAX_SYS_NOTIFY)
591 1.1 jruoho {
592 1.1 jruoho return ("Reserved");
593 1.1 jruoho }
594 1.1 jruoho else /* Greater or equal to 0x80 */
595 1.1 jruoho {
596 1.1 jruoho return ("**Device Specific**");
597 1.1 jruoho }
598 1.1 jruoho }
599 1.1 jruoho #endif
600 1.1 jruoho
601 1.1 jruoho
602 1.1 jruoho /*******************************************************************************
603 1.1 jruoho *
604 1.1 jruoho * FUNCTION: AcpiUtValidObjectType
605 1.1 jruoho *
606 1.1 jruoho * PARAMETERS: Type - Object type to be validated
607 1.1 jruoho *
608 1.1 jruoho * RETURN: TRUE if valid object type, FALSE otherwise
609 1.1 jruoho *
610 1.1 jruoho * DESCRIPTION: Validate an object type
611 1.1 jruoho *
612 1.1 jruoho ******************************************************************************/
613 1.1 jruoho
614 1.1 jruoho BOOLEAN
615 1.1 jruoho AcpiUtValidObjectType (
616 1.1 jruoho ACPI_OBJECT_TYPE Type)
617 1.1 jruoho {
618 1.1 jruoho
619 1.1 jruoho if (Type > ACPI_TYPE_LOCAL_MAX)
620 1.1 jruoho {
621 1.1 jruoho /* Note: Assumes all TYPEs are contiguous (external/local) */
622 1.1 jruoho
623 1.1 jruoho return (FALSE);
624 1.1 jruoho }
625 1.1 jruoho
626 1.1 jruoho return (TRUE);
627 1.1 jruoho }
628