xref: /freebsd/sys/contrib/dev/acpica/include/acutils.h (revision 3920312eeb2e7efdf36defc51e24014a53c31bb0)
1a9f12690SJung-uk Kim /******************************************************************************
2a9f12690SJung-uk Kim  *
3a9f12690SJung-uk Kim  * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
4a9f12690SJung-uk Kim  *
5a9f12690SJung-uk Kim  *****************************************************************************/
6a9f12690SJung-uk Kim 
7d244b227SJung-uk Kim /*
8f8146b88SJung-uk Kim  * Copyright (C) 2000 - 2016, Intel Corp.
9a9f12690SJung-uk Kim  * All rights reserved.
10a9f12690SJung-uk Kim  *
11d244b227SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
12d244b227SJung-uk Kim  * modification, are permitted provided that the following conditions
13d244b227SJung-uk Kim  * are met:
14d244b227SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
15d244b227SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
16d244b227SJung-uk Kim  *    without modification.
17d244b227SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18d244b227SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
19d244b227SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
20d244b227SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
21d244b227SJung-uk Kim  *    binary redistribution.
22d244b227SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
23d244b227SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
24d244b227SJung-uk Kim  *    from this software without specific prior written permission.
25a9f12690SJung-uk Kim  *
26d244b227SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
27d244b227SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
28d244b227SJung-uk Kim  * Software Foundation.
29a9f12690SJung-uk Kim  *
30d244b227SJung-uk Kim  * NO WARRANTY
31d244b227SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32d244b227SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33d244b227SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34d244b227SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35d244b227SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36d244b227SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37d244b227SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38d244b227SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39d244b227SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40d244b227SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41d244b227SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
42d244b227SJung-uk Kim  */
43a9f12690SJung-uk Kim 
44a9f12690SJung-uk Kim #ifndef _ACUTILS_H
45a9f12690SJung-uk Kim #define _ACUTILS_H
46a9f12690SJung-uk Kim 
47a9f12690SJung-uk Kim 
48a9f12690SJung-uk Kim extern const UINT8                      AcpiGbl_ResourceAmlSizes[];
493f0275a0SJung-uk Kim extern const UINT8                      AcpiGbl_ResourceAmlSerialBusSizes[];
50a9f12690SJung-uk Kim 
51a9f12690SJung-uk Kim /* Strings used by the disassembler and debugger resource dump routines */
52a9f12690SJung-uk Kim 
53313a0c13SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
54a9f12690SJung-uk Kim 
55a9f12690SJung-uk Kim extern const char                       *AcpiGbl_BmDecode[];
56a9f12690SJung-uk Kim extern const char                       *AcpiGbl_ConfigDecode[];
57a9f12690SJung-uk Kim extern const char                       *AcpiGbl_ConsumeDecode[];
58a9f12690SJung-uk Kim extern const char                       *AcpiGbl_DecDecode[];
59a9f12690SJung-uk Kim extern const char                       *AcpiGbl_HeDecode[];
60a9f12690SJung-uk Kim extern const char                       *AcpiGbl_IoDecode[];
61a9f12690SJung-uk Kim extern const char                       *AcpiGbl_LlDecode[];
62a9f12690SJung-uk Kim extern const char                       *AcpiGbl_MaxDecode[];
63a9f12690SJung-uk Kim extern const char                       *AcpiGbl_MemDecode[];
64a9f12690SJung-uk Kim extern const char                       *AcpiGbl_MinDecode[];
65a9f12690SJung-uk Kim extern const char                       *AcpiGbl_MtpDecode[];
66a9f12690SJung-uk Kim extern const char                       *AcpiGbl_RngDecode[];
67a9f12690SJung-uk Kim extern const char                       *AcpiGbl_RwDecode[];
68a9f12690SJung-uk Kim extern const char                       *AcpiGbl_ShrDecode[];
69a9f12690SJung-uk Kim extern const char                       *AcpiGbl_SizDecode[];
70a9f12690SJung-uk Kim extern const char                       *AcpiGbl_TrsDecode[];
71a9f12690SJung-uk Kim extern const char                       *AcpiGbl_TtpDecode[];
72a9f12690SJung-uk Kim extern const char                       *AcpiGbl_TypDecode[];
733f0275a0SJung-uk Kim extern const char                       *AcpiGbl_PpcDecode[];
743f0275a0SJung-uk Kim extern const char                       *AcpiGbl_IorDecode[];
753f0275a0SJung-uk Kim extern const char                       *AcpiGbl_DtsDecode[];
763f0275a0SJung-uk Kim extern const char                       *AcpiGbl_CtDecode[];
773f0275a0SJung-uk Kim extern const char                       *AcpiGbl_SbtDecode[];
783f0275a0SJung-uk Kim extern const char                       *AcpiGbl_AmDecode[];
793f0275a0SJung-uk Kim extern const char                       *AcpiGbl_SmDecode[];
803f0275a0SJung-uk Kim extern const char                       *AcpiGbl_WmDecode[];
813f0275a0SJung-uk Kim extern const char                       *AcpiGbl_CphDecode[];
823f0275a0SJung-uk Kim extern const char                       *AcpiGbl_CpoDecode[];
833f0275a0SJung-uk Kim extern const char                       *AcpiGbl_DpDecode[];
843f0275a0SJung-uk Kim extern const char                       *AcpiGbl_EdDecode[];
853f0275a0SJung-uk Kim extern const char                       *AcpiGbl_BpbDecode[];
863f0275a0SJung-uk Kim extern const char                       *AcpiGbl_SbDecode[];
873f0275a0SJung-uk Kim extern const char                       *AcpiGbl_FcDecode[];
883f0275a0SJung-uk Kim extern const char                       *AcpiGbl_PtDecode[];
89a9f12690SJung-uk Kim #endif
90a9f12690SJung-uk Kim 
91a9d8d09cSJung-uk Kim /*
92a9d8d09cSJung-uk Kim  * For the iASL compiler case, the output is redirected to stderr so that
93a9d8d09cSJung-uk Kim  * any of the various ACPI errors and warnings do not appear in the output
94a9d8d09cSJung-uk Kim  * files, for either the compiler or disassembler portions of the tool.
95a9d8d09cSJung-uk Kim  */
96a9d8d09cSJung-uk Kim #ifdef ACPI_ASL_COMPILER
97a9d8d09cSJung-uk Kim 
98a9d8d09cSJung-uk Kim #include <stdio.h>
99a9d8d09cSJung-uk Kim 
100a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_BEGIN \
101a9d8d09cSJung-uk Kim     FILE                    *OutputFile = AcpiGbl_OutputFile; \
102a9d8d09cSJung-uk Kim     AcpiOsRedirectOutput (stderr);
103a9d8d09cSJung-uk Kim 
104a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_END \
105a9d8d09cSJung-uk Kim     AcpiOsRedirectOutput (OutputFile);
106a9d8d09cSJung-uk Kim 
107a9d8d09cSJung-uk Kim #else
108a9d8d09cSJung-uk Kim /*
109a9d8d09cSJung-uk Kim  * non-iASL case - no redirection, nothing to do
110a9d8d09cSJung-uk Kim  */
111a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_BEGIN
112a9d8d09cSJung-uk Kim #define ACPI_MSG_REDIRECT_END
113a9d8d09cSJung-uk Kim #endif
114a9d8d09cSJung-uk Kim 
115a9d8d09cSJung-uk Kim /*
116a9d8d09cSJung-uk Kim  * Common error message prefixes
117a9d8d09cSJung-uk Kim  */
118*3920312eSJung-uk Kim #ifndef ACPI_MSG_ERROR
119a9d8d09cSJung-uk Kim #define ACPI_MSG_ERROR          "ACPI Error: "
120*3920312eSJung-uk Kim #endif
121*3920312eSJung-uk Kim #ifndef ACPI_MSG_EXCEPTION
122a9d8d09cSJung-uk Kim #define ACPI_MSG_EXCEPTION      "ACPI Exception: "
123*3920312eSJung-uk Kim #endif
124*3920312eSJung-uk Kim #ifndef ACPI_MSG_WARNING
125a9d8d09cSJung-uk Kim #define ACPI_MSG_WARNING        "ACPI Warning: "
126*3920312eSJung-uk Kim #endif
127*3920312eSJung-uk Kim #ifndef ACPI_MSG_INFO
128a9d8d09cSJung-uk Kim #define ACPI_MSG_INFO           "ACPI: "
129*3920312eSJung-uk Kim #endif
130a9d8d09cSJung-uk Kim 
131*3920312eSJung-uk Kim #ifndef ACPI_MSG_BIOS_ERROR
132a9d8d09cSJung-uk Kim #define ACPI_MSG_BIOS_ERROR     "ACPI BIOS Error (bug): "
133*3920312eSJung-uk Kim #endif
134*3920312eSJung-uk Kim #ifndef ACPI_MSG_BIOS_WARNING
135a9d8d09cSJung-uk Kim #define ACPI_MSG_BIOS_WARNING   "ACPI BIOS Warning (bug): "
136*3920312eSJung-uk Kim #endif
137a9d8d09cSJung-uk Kim 
138a9d8d09cSJung-uk Kim /*
139a9d8d09cSJung-uk Kim  * Common message suffix
140a9d8d09cSJung-uk Kim  */
141a9d8d09cSJung-uk Kim #define ACPI_MSG_SUFFIX \
142a9d8d09cSJung-uk Kim     AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
143a9d8d09cSJung-uk Kim 
144a9d8d09cSJung-uk Kim 
145a9f12690SJung-uk Kim /* Types for Resource descriptor entries */
146a9f12690SJung-uk Kim 
147a9f12690SJung-uk Kim #define ACPI_INVALID_RESOURCE           0
148a9f12690SJung-uk Kim #define ACPI_FIXED_LENGTH               1
149a9f12690SJung-uk Kim #define ACPI_VARIABLE_LENGTH            2
150a9f12690SJung-uk Kim #define ACPI_SMALL_VARIABLE_LENGTH      3
151a9f12690SJung-uk Kim 
152a9f12690SJung-uk Kim typedef
153a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
154a9f12690SJung-uk Kim     UINT8                   *Aml,
155a9f12690SJung-uk Kim     UINT32                  Length,
156a9f12690SJung-uk Kim     UINT32                  Offset,
157a9f12690SJung-uk Kim     UINT8                   ResourceIndex,
158efcc2a30SJung-uk Kim     void                    **Context);
159a9f12690SJung-uk Kim 
160a9f12690SJung-uk Kim typedef
161a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_PKG_CALLBACK) (
162a9f12690SJung-uk Kim     UINT8                   ObjectType,
163a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
164a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State,
165a9f12690SJung-uk Kim     void                    *Context);
166a9f12690SJung-uk Kim 
167a9f12690SJung-uk Kim typedef struct acpi_pkg_info
168a9f12690SJung-uk Kim {
169a9f12690SJung-uk Kim     UINT8                   *FreeSpace;
170a9f12690SJung-uk Kim     ACPI_SIZE               Length;
171a9f12690SJung-uk Kim     UINT32                  ObjectSpace;
172a9f12690SJung-uk Kim     UINT32                  NumPackages;
173a9f12690SJung-uk Kim 
174a9f12690SJung-uk Kim } ACPI_PKG_INFO;
175a9f12690SJung-uk Kim 
1769c7c683cSJung-uk Kim /* Object reference counts */
1779c7c683cSJung-uk Kim 
178a9f12690SJung-uk Kim #define REF_INCREMENT       (UINT16) 0
179a9f12690SJung-uk Kim #define REF_DECREMENT       (UINT16) 1
180a9f12690SJung-uk Kim 
181a9f12690SJung-uk Kim /* AcpiUtDumpBuffer */
182a9f12690SJung-uk Kim 
183a9f12690SJung-uk Kim #define DB_BYTE_DISPLAY     1
184a9f12690SJung-uk Kim #define DB_WORD_DISPLAY     2
185a9f12690SJung-uk Kim #define DB_DWORD_DISPLAY    4
186a9f12690SJung-uk Kim #define DB_QWORD_DISPLAY    8
187a9f12690SJung-uk Kim 
188fe0f0bbbSJung-uk Kim 
189fe0f0bbbSJung-uk Kim /*
190f8146b88SJung-uk Kim  * utascii - ASCII utilities
191f8146b88SJung-uk Kim  */
192f8146b88SJung-uk Kim BOOLEAN
193f8146b88SJung-uk Kim AcpiUtValidNameseg (
194f8146b88SJung-uk Kim     char                    *Signature);
195f8146b88SJung-uk Kim 
196f8146b88SJung-uk Kim BOOLEAN
197f8146b88SJung-uk Kim AcpiUtValidNameChar (
198f8146b88SJung-uk Kim     char                    Character,
199f8146b88SJung-uk Kim     UINT32                  Position);
200f8146b88SJung-uk Kim 
201f8146b88SJung-uk Kim void
202f8146b88SJung-uk Kim AcpiUtCheckAndRepairAscii (
203f8146b88SJung-uk Kim     UINT8                   *Name,
204f8146b88SJung-uk Kim     char                    *RepairedName,
205f8146b88SJung-uk Kim     UINT32                  Count);
206f8146b88SJung-uk Kim 
207f8146b88SJung-uk Kim 
208f8146b88SJung-uk Kim /*
209fe0f0bbbSJung-uk Kim  * utnonansi - Non-ANSI C library functions
210fe0f0bbbSJung-uk Kim  */
211fe0f0bbbSJung-uk Kim void
212fe0f0bbbSJung-uk Kim AcpiUtStrupr (
213fe0f0bbbSJung-uk Kim     char                    *SrcString);
214fe0f0bbbSJung-uk Kim 
215fe0f0bbbSJung-uk Kim void
216fe0f0bbbSJung-uk Kim AcpiUtStrlwr (
217fe0f0bbbSJung-uk Kim     char                    *SrcString);
218fe0f0bbbSJung-uk Kim 
219fe0f0bbbSJung-uk Kim int
220fe0f0bbbSJung-uk Kim AcpiUtStricmp (
221fe0f0bbbSJung-uk Kim     char                    *String1,
222fe0f0bbbSJung-uk Kim     char                    *String2);
223fe0f0bbbSJung-uk Kim 
224fe0f0bbbSJung-uk Kim ACPI_STATUS
225fe0f0bbbSJung-uk Kim AcpiUtStrtoul64 (
226fe0f0bbbSJung-uk Kim     char                    *String,
227fe0f0bbbSJung-uk Kim     UINT32                  Base,
228f8146b88SJung-uk Kim     UINT32                  MaxIntegerByteWidth,
229fe0f0bbbSJung-uk Kim     UINT64                  *RetInteger);
230fe0f0bbbSJung-uk Kim 
231f8146b88SJung-uk Kim /* Values for MaxIntegerByteWidth above */
232f8146b88SJung-uk Kim 
233f8146b88SJung-uk Kim #define ACPI_MAX32_BYTE_WIDTH       4
234f8146b88SJung-uk Kim #define ACPI_MAX64_BYTE_WIDTH       8
235f8146b88SJung-uk Kim 
236fe0f0bbbSJung-uk Kim 
237a9f12690SJung-uk Kim /*
238a9f12690SJung-uk Kim  * utglobal - Global data structures and procedures
239a9f12690SJung-uk Kim  */
240a9f12690SJung-uk Kim ACPI_STATUS
241a9f12690SJung-uk Kim AcpiUtInitGlobals (
242a9f12690SJung-uk Kim     void);
243a9f12690SJung-uk Kim 
244a9f12690SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
245a9f12690SJung-uk Kim 
246f8146b88SJung-uk Kim const char *
247a9f12690SJung-uk Kim AcpiUtGetMutexName (
248a9f12690SJung-uk Kim     UINT32                  MutexId);
249a9f12690SJung-uk Kim 
250a9f12690SJung-uk Kim const char *
251a9f12690SJung-uk Kim AcpiUtGetNotifyName (
252313a0c13SJung-uk Kim     UINT32                  NotifyValue,
253313a0c13SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
254a9f12690SJung-uk Kim #endif
255a9f12690SJung-uk Kim 
256f8146b88SJung-uk Kim const char *
257a9f12690SJung-uk Kim AcpiUtGetTypeName (
258a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
259a9f12690SJung-uk Kim 
260f8146b88SJung-uk Kim const char *
261a9f12690SJung-uk Kim AcpiUtGetNodeName (
262a9f12690SJung-uk Kim     void                    *Object);
263a9f12690SJung-uk Kim 
264f8146b88SJung-uk Kim const char *
265a9f12690SJung-uk Kim AcpiUtGetDescriptorName (
266a9f12690SJung-uk Kim     void                    *Object);
267a9f12690SJung-uk Kim 
268a9f12690SJung-uk Kim const char *
269a9f12690SJung-uk Kim AcpiUtGetReferenceName (
270a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
271a9f12690SJung-uk Kim 
272f8146b88SJung-uk Kim const char *
273a9f12690SJung-uk Kim AcpiUtGetObjectTypeName (
274a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc);
275a9f12690SJung-uk Kim 
276f8146b88SJung-uk Kim const char *
277a9f12690SJung-uk Kim AcpiUtGetRegionName (
278a9f12690SJung-uk Kim     UINT8                   SpaceId);
279a9f12690SJung-uk Kim 
280f8146b88SJung-uk Kim const char *
281a9f12690SJung-uk Kim AcpiUtGetEventName (
282a9f12690SJung-uk Kim     UINT32                  EventId);
283a9f12690SJung-uk Kim 
284a9f12690SJung-uk Kim char
285a9f12690SJung-uk Kim AcpiUtHexToAsciiChar (
2869a179dd8SJung-uk Kim     UINT64                  Integer,
287a9f12690SJung-uk Kim     UINT32                  Position);
288a9f12690SJung-uk Kim 
289313a0c13SJung-uk Kim UINT8
290313a0c13SJung-uk Kim AcpiUtAsciiCharToHex (
291313a0c13SJung-uk Kim     int                     HexChar);
292313a0c13SJung-uk Kim 
293a9f12690SJung-uk Kim BOOLEAN
294a9f12690SJung-uk Kim AcpiUtValidObjectType (
295a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
296a9f12690SJung-uk Kim 
297a9f12690SJung-uk Kim 
298a9f12690SJung-uk Kim /*
299a9f12690SJung-uk Kim  * utinit - miscellaneous initialization and shutdown
300a9f12690SJung-uk Kim  */
301a9f12690SJung-uk Kim ACPI_STATUS
302a9f12690SJung-uk Kim AcpiUtHardwareInitialize (
303a9f12690SJung-uk Kim     void);
304a9f12690SJung-uk Kim 
305a9f12690SJung-uk Kim void
306a9f12690SJung-uk Kim AcpiUtSubsystemShutdown (
307a9f12690SJung-uk Kim     void);
308a9f12690SJung-uk Kim 
309a9f12690SJung-uk Kim 
310a9f12690SJung-uk Kim /*
311a9f12690SJung-uk Kim  * utcopy - Object construction and conversion interfaces
312a9f12690SJung-uk Kim  */
313a9f12690SJung-uk Kim ACPI_STATUS
314a9f12690SJung-uk Kim AcpiUtBuildSimpleObject(
315a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
316a9f12690SJung-uk Kim     ACPI_OBJECT             *UserObj,
317a9f12690SJung-uk Kim     UINT8                   *DataSpace,
318a9f12690SJung-uk Kim     UINT32                  *BufferSpaceUsed);
319a9f12690SJung-uk Kim 
320a9f12690SJung-uk Kim ACPI_STATUS
321a9f12690SJung-uk Kim AcpiUtBuildPackageObject (
322a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
323a9f12690SJung-uk Kim     UINT8                   *Buffer,
324a9f12690SJung-uk Kim     UINT32                  *SpaceUsed);
325a9f12690SJung-uk Kim 
326a9f12690SJung-uk Kim ACPI_STATUS
327a9f12690SJung-uk Kim AcpiUtCopyIobjectToEobject (
328a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
329a9f12690SJung-uk Kim     ACPI_BUFFER             *RetBuffer);
330a9f12690SJung-uk Kim 
331a9f12690SJung-uk Kim ACPI_STATUS
332a9f12690SJung-uk Kim AcpiUtCopyEobjectToIobject (
333a9f12690SJung-uk Kim     ACPI_OBJECT             *Obj,
334a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **InternalObj);
335a9f12690SJung-uk Kim 
336a9f12690SJung-uk Kim ACPI_STATUS
337a9f12690SJung-uk Kim AcpiUtCopyISimpleToIsimple (
338a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObj,
339a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *DestObj);
340a9f12690SJung-uk Kim 
341a9f12690SJung-uk Kim ACPI_STATUS
342a9f12690SJung-uk Kim AcpiUtCopyIobjectToIobject (
343a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceDesc,
344a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **DestDesc,
345a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
346a9f12690SJung-uk Kim 
347a9f12690SJung-uk Kim 
348a9f12690SJung-uk Kim /*
349a9f12690SJung-uk Kim  * utcreate - Object creation
350a9f12690SJung-uk Kim  */
351a9f12690SJung-uk Kim ACPI_STATUS
352a9f12690SJung-uk Kim AcpiUtUpdateObjectReference (
353a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
354a9f12690SJung-uk Kim     UINT16                  Action);
355a9f12690SJung-uk Kim 
356a9f12690SJung-uk Kim 
357a9f12690SJung-uk Kim /*
358a9f12690SJung-uk Kim  * utdebug - Debug interfaces
359a9f12690SJung-uk Kim  */
360a9f12690SJung-uk Kim void
361a9f12690SJung-uk Kim AcpiUtInitStackPtrTrace (
362a9f12690SJung-uk Kim     void);
363a9f12690SJung-uk Kim 
364a9f12690SJung-uk Kim void
365a9f12690SJung-uk Kim AcpiUtTrackStackPtr (
366a9f12690SJung-uk Kim     void);
367a9f12690SJung-uk Kim 
368a9f12690SJung-uk Kim void
369a9f12690SJung-uk Kim AcpiUtTrace (
370a9f12690SJung-uk Kim     UINT32                  LineNumber,
371a9f12690SJung-uk Kim     const char              *FunctionName,
372a9f12690SJung-uk Kim     const char              *ModuleName,
373a9f12690SJung-uk Kim     UINT32                  ComponentId);
374a9f12690SJung-uk Kim 
375a9f12690SJung-uk Kim void
376a9f12690SJung-uk Kim AcpiUtTracePtr (
377a9f12690SJung-uk Kim     UINT32                  LineNumber,
378a9f12690SJung-uk Kim     const char              *FunctionName,
379a9f12690SJung-uk Kim     const char              *ModuleName,
380a9f12690SJung-uk Kim     UINT32                  ComponentId,
381f8146b88SJung-uk Kim     const void              *Pointer);
382a9f12690SJung-uk Kim 
383a9f12690SJung-uk Kim void
384a9f12690SJung-uk Kim AcpiUtTraceU32 (
385a9f12690SJung-uk Kim     UINT32                  LineNumber,
386a9f12690SJung-uk Kim     const char              *FunctionName,
387a9f12690SJung-uk Kim     const char              *ModuleName,
388a9f12690SJung-uk Kim     UINT32                  ComponentId,
389a9f12690SJung-uk Kim     UINT32                  Integer);
390a9f12690SJung-uk Kim 
391a9f12690SJung-uk Kim void
392a9f12690SJung-uk Kim AcpiUtTraceStr (
393a9f12690SJung-uk Kim     UINT32                  LineNumber,
394a9f12690SJung-uk Kim     const char              *FunctionName,
395a9f12690SJung-uk Kim     const char              *ModuleName,
396a9f12690SJung-uk Kim     UINT32                  ComponentId,
397f8146b88SJung-uk Kim     const char              *String);
398a9f12690SJung-uk Kim 
399a9f12690SJung-uk Kim void
400a9f12690SJung-uk Kim AcpiUtExit (
401a9f12690SJung-uk Kim     UINT32                  LineNumber,
402a9f12690SJung-uk Kim     const char              *FunctionName,
403a9f12690SJung-uk Kim     const char              *ModuleName,
404a9f12690SJung-uk Kim     UINT32                  ComponentId);
405a9f12690SJung-uk Kim 
406a9f12690SJung-uk Kim void
407a9f12690SJung-uk Kim AcpiUtStatusExit (
408a9f12690SJung-uk Kim     UINT32                  LineNumber,
409a9f12690SJung-uk Kim     const char              *FunctionName,
410a9f12690SJung-uk Kim     const char              *ModuleName,
411a9f12690SJung-uk Kim     UINT32                  ComponentId,
412a9f12690SJung-uk Kim     ACPI_STATUS             Status);
413a9f12690SJung-uk Kim 
414a9f12690SJung-uk Kim void
415a9f12690SJung-uk Kim AcpiUtValueExit (
416a9f12690SJung-uk Kim     UINT32                  LineNumber,
417a9f12690SJung-uk Kim     const char              *FunctionName,
418a9f12690SJung-uk Kim     const char              *ModuleName,
419a9f12690SJung-uk Kim     UINT32                  ComponentId,
4209a179dd8SJung-uk Kim     UINT64                  Value);
421a9f12690SJung-uk Kim 
422a9f12690SJung-uk Kim void
423a9f12690SJung-uk Kim AcpiUtPtrExit (
424a9f12690SJung-uk Kim     UINT32                  LineNumber,
425a9f12690SJung-uk Kim     const char              *FunctionName,
426a9f12690SJung-uk Kim     const char              *ModuleName,
427a9f12690SJung-uk Kim     UINT32                  ComponentId,
428a9f12690SJung-uk Kim     UINT8                   *Ptr);
429a9f12690SJung-uk Kim 
430a9f12690SJung-uk Kim void
431f8146b88SJung-uk Kim AcpiUtStrExit (
432f8146b88SJung-uk Kim     UINT32                  LineNumber,
433f8146b88SJung-uk Kim     const char              *FunctionName,
434f8146b88SJung-uk Kim     const char              *ModuleName,
435f8146b88SJung-uk Kim     UINT32                  ComponentId,
436f8146b88SJung-uk Kim     const char              *String);
437f8146b88SJung-uk Kim 
438f8146b88SJung-uk Kim void
4398ef1a331SJung-uk Kim AcpiUtDebugDumpBuffer (
440a9f12690SJung-uk Kim     UINT8                   *Buffer,
441a9f12690SJung-uk Kim     UINT32                  Count,
442a9f12690SJung-uk Kim     UINT32                  Display,
443f38b0f21SJung-uk Kim     UINT32                  ComponentId);
444a9f12690SJung-uk Kim 
445a9f12690SJung-uk Kim void
4468ef1a331SJung-uk Kim AcpiUtDumpBuffer (
447a9f12690SJung-uk Kim     UINT8                   *Buffer,
448a9f12690SJung-uk Kim     UINT32                  Count,
4498ef1a331SJung-uk Kim     UINT32                  Display,
4508ef1a331SJung-uk Kim     UINT32                  Offset);
451a9f12690SJung-uk Kim 
452313a0c13SJung-uk Kim #ifdef ACPI_APPLICATION
453313a0c13SJung-uk Kim void
454313a0c13SJung-uk Kim AcpiUtDumpBufferToFile (
455313a0c13SJung-uk Kim     ACPI_FILE               File,
456313a0c13SJung-uk Kim     UINT8                   *Buffer,
457313a0c13SJung-uk Kim     UINT32                  Count,
458313a0c13SJung-uk Kim     UINT32                  Display,
459313a0c13SJung-uk Kim     UINT32                  BaseOffset);
460313a0c13SJung-uk Kim #endif
461313a0c13SJung-uk Kim 
462a9f12690SJung-uk Kim void
463a9f12690SJung-uk Kim AcpiUtReportError (
464a9f12690SJung-uk Kim     char                    *ModuleName,
465a9f12690SJung-uk Kim     UINT32                  LineNumber);
466a9f12690SJung-uk Kim 
467a9f12690SJung-uk Kim void
468a9f12690SJung-uk Kim AcpiUtReportInfo (
469a9f12690SJung-uk Kim     char                    *ModuleName,
470a9f12690SJung-uk Kim     UINT32                  LineNumber);
471a9f12690SJung-uk Kim 
472a9f12690SJung-uk Kim void
473a9f12690SJung-uk Kim AcpiUtReportWarning (
474a9f12690SJung-uk Kim     char                    *ModuleName,
475a9f12690SJung-uk Kim     UINT32                  LineNumber);
476a9f12690SJung-uk Kim 
477fe0f0bbbSJung-uk Kim 
478a9f12690SJung-uk Kim /*
479a9f12690SJung-uk Kim  * utdelete - Object deletion and reference counts
480a9f12690SJung-uk Kim  */
481a9f12690SJung-uk Kim void
482a9f12690SJung-uk Kim AcpiUtAddReference (
483a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
484a9f12690SJung-uk Kim 
485a9f12690SJung-uk Kim void
486a9f12690SJung-uk Kim AcpiUtRemoveReference (
487a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
488a9f12690SJung-uk Kim 
489a9f12690SJung-uk Kim void
490a9f12690SJung-uk Kim AcpiUtDeleteInternalPackageObject (
491a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
492a9f12690SJung-uk Kim 
493a9f12690SJung-uk Kim void
494a9f12690SJung-uk Kim AcpiUtDeleteInternalSimpleObject (
495a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
496a9f12690SJung-uk Kim 
497a9f12690SJung-uk Kim void
498a9f12690SJung-uk Kim AcpiUtDeleteInternalObjectList (
499a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ObjList);
500a9f12690SJung-uk Kim 
501a9f12690SJung-uk Kim 
502a9f12690SJung-uk Kim /*
503a9f12690SJung-uk Kim  * uteval - object evaluation
504a9f12690SJung-uk Kim  */
505a9f12690SJung-uk Kim ACPI_STATUS
506a9f12690SJung-uk Kim AcpiUtEvaluateObject (
507a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *PrefixNode,
508f8146b88SJung-uk Kim     const char              *Path,
509a9f12690SJung-uk Kim     UINT32                  ExpectedReturnBtypes,
510a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ReturnDesc);
511a9f12690SJung-uk Kim 
512a9f12690SJung-uk Kim ACPI_STATUS
513a9f12690SJung-uk Kim AcpiUtEvaluateNumericObject (
514f8146b88SJung-uk Kim     const char              *ObjectName,
515a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5169a179dd8SJung-uk Kim     UINT64                  *Value);
517a9f12690SJung-uk Kim 
518a9f12690SJung-uk Kim ACPI_STATUS
519a9f12690SJung-uk Kim AcpiUtExecute_STA (
520a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
521a9f12690SJung-uk Kim     UINT32                  *StatusFlags);
522a9f12690SJung-uk Kim 
523a9f12690SJung-uk Kim ACPI_STATUS
524d6dd1baeSJung-uk Kim AcpiUtExecutePowerMethods (
525a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
526d6dd1baeSJung-uk Kim     const char              **MethodNames,
527d6dd1baeSJung-uk Kim     UINT8                   MethodCount,
528d6dd1baeSJung-uk Kim     UINT8                   *OutValues);
529d6dd1baeSJung-uk Kim 
530d6dd1baeSJung-uk Kim 
531d6dd1baeSJung-uk Kim /*
532d6dd1baeSJung-uk Kim  * utids - device ID support
533d6dd1baeSJung-uk Kim  */
534d6dd1baeSJung-uk Kim ACPI_STATUS
535d6dd1baeSJung-uk Kim AcpiUtExecute_HID (
536d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5378ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
538a9f12690SJung-uk Kim 
539a9f12690SJung-uk Kim ACPI_STATUS
540d6dd1baeSJung-uk Kim AcpiUtExecute_UID (
541a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5428ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
5438ef1a331SJung-uk Kim 
5448ef1a331SJung-uk Kim ACPI_STATUS
545d6dd1baeSJung-uk Kim AcpiUtExecute_CID (
546d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5478ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
548d6dd1baeSJung-uk Kim 
5495ef50723SJung-uk Kim ACPI_STATUS
5505ef50723SJung-uk Kim AcpiUtExecute_CLS (
5515ef50723SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5525ef50723SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
5535ef50723SJung-uk Kim 
554a9f12690SJung-uk Kim 
555a9f12690SJung-uk Kim /*
556a9f12690SJung-uk Kim  * utlock - reader/writer locks
557a9f12690SJung-uk Kim  */
558a9f12690SJung-uk Kim ACPI_STATUS
559a9f12690SJung-uk Kim AcpiUtCreateRwLock (
560a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
561a9f12690SJung-uk Kim 
562a9f12690SJung-uk Kim void
563a9f12690SJung-uk Kim AcpiUtDeleteRwLock (
564a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
565a9f12690SJung-uk Kim 
566a9f12690SJung-uk Kim ACPI_STATUS
567a9f12690SJung-uk Kim AcpiUtAcquireReadLock (
568a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
569a9f12690SJung-uk Kim 
570a9f12690SJung-uk Kim ACPI_STATUS
571a9f12690SJung-uk Kim AcpiUtReleaseReadLock (
572a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
573a9f12690SJung-uk Kim 
574a9f12690SJung-uk Kim ACPI_STATUS
575a9f12690SJung-uk Kim AcpiUtAcquireWriteLock (
576a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
577a9f12690SJung-uk Kim 
578a9f12690SJung-uk Kim void
579a9f12690SJung-uk Kim AcpiUtReleaseWriteLock (
580a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
581a9f12690SJung-uk Kim 
582a9f12690SJung-uk Kim 
583a9f12690SJung-uk Kim /*
584a9f12690SJung-uk Kim  * utobject - internal object create/delete/cache routines
585a9f12690SJung-uk Kim  */
586a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT  *
587a9f12690SJung-uk Kim AcpiUtCreateInternalObjectDbg (
588a9f12690SJung-uk Kim     const char              *ModuleName,
589a9f12690SJung-uk Kim     UINT32                  LineNumber,
590a9f12690SJung-uk Kim     UINT32                  ComponentId,
591a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
592a9f12690SJung-uk Kim 
593a9f12690SJung-uk Kim void *
594a9f12690SJung-uk Kim AcpiUtAllocateObjectDescDbg (
595a9f12690SJung-uk Kim     const char              *ModuleName,
596a9f12690SJung-uk Kim     UINT32                  LineNumber,
597a9f12690SJung-uk Kim     UINT32                  ComponentId);
598a9f12690SJung-uk Kim 
599a9f12690SJung-uk Kim #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
600a9f12690SJung-uk Kim #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
601a9f12690SJung-uk Kim 
602a9f12690SJung-uk Kim void
603a9f12690SJung-uk Kim AcpiUtDeleteObjectDesc (
604a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
605a9f12690SJung-uk Kim 
606a9f12690SJung-uk Kim BOOLEAN
607a9f12690SJung-uk Kim AcpiUtValidInternalObject (
608a9f12690SJung-uk Kim     void                    *Object);
609a9f12690SJung-uk Kim 
610a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
611a9f12690SJung-uk Kim AcpiUtCreatePackageObject (
612a9f12690SJung-uk Kim     UINT32                  Count);
613a9f12690SJung-uk Kim 
614a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
6152272d050SJung-uk Kim AcpiUtCreateIntegerObject (
6162272d050SJung-uk Kim     UINT64                  Value);
6172272d050SJung-uk Kim 
6182272d050SJung-uk Kim ACPI_OPERAND_OBJECT *
619a9f12690SJung-uk Kim AcpiUtCreateBufferObject (
620a9f12690SJung-uk Kim     ACPI_SIZE               BufferSize);
621a9f12690SJung-uk Kim 
622a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
623a9f12690SJung-uk Kim AcpiUtCreateStringObject (
624a9f12690SJung-uk Kim     ACPI_SIZE               StringSize);
625a9f12690SJung-uk Kim 
626a9f12690SJung-uk Kim ACPI_STATUS
627a9f12690SJung-uk Kim AcpiUtGetObjectSize(
628a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
629a9f12690SJung-uk Kim     ACPI_SIZE               *ObjLength);
630a9f12690SJung-uk Kim 
631a9f12690SJung-uk Kim 
632a9f12690SJung-uk Kim /*
633709fac06SJung-uk Kim  * utosi - Support for the _OSI predefined control method
634709fac06SJung-uk Kim  */
635709fac06SJung-uk Kim ACPI_STATUS
636709fac06SJung-uk Kim AcpiUtInitializeInterfaces (
637709fac06SJung-uk Kim     void);
638709fac06SJung-uk Kim 
6399c7c683cSJung-uk Kim ACPI_STATUS
640709fac06SJung-uk Kim AcpiUtInterfaceTerminate (
641709fac06SJung-uk Kim     void);
642709fac06SJung-uk Kim 
643709fac06SJung-uk Kim ACPI_STATUS
644709fac06SJung-uk Kim AcpiUtInstallInterface (
645709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
646709fac06SJung-uk Kim 
647709fac06SJung-uk Kim ACPI_STATUS
648709fac06SJung-uk Kim AcpiUtRemoveInterface (
649709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
650709fac06SJung-uk Kim 
651bf6fac21SJung-uk Kim ACPI_STATUS
652bf6fac21SJung-uk Kim AcpiUtUpdateInterfaces (
653bf6fac21SJung-uk Kim     UINT8                   Action);
654bf6fac21SJung-uk Kim 
655709fac06SJung-uk Kim ACPI_INTERFACE_INFO *
656709fac06SJung-uk Kim AcpiUtGetInterface (
657709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
658709fac06SJung-uk Kim 
659709fac06SJung-uk Kim ACPI_STATUS
660709fac06SJung-uk Kim AcpiUtOsiImplementation (
661709fac06SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
662709fac06SJung-uk Kim 
663709fac06SJung-uk Kim 
664709fac06SJung-uk Kim /*
6659c7c683cSJung-uk Kim  * utpredef - support for predefined names
6669c7c683cSJung-uk Kim  */
6679c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6689c7c683cSJung-uk Kim AcpiUtGetNextPredefinedMethod (
6699c7c683cSJung-uk Kim     const ACPI_PREDEFINED_INFO  *ThisName);
6709c7c683cSJung-uk Kim 
6719c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6729c7c683cSJung-uk Kim AcpiUtMatchPredefinedMethod (
6739c7c683cSJung-uk Kim     char                        *Name);
6749c7c683cSJung-uk Kim 
6757cf3e94aSJung-uk Kim void
6767cf3e94aSJung-uk Kim AcpiUtGetExpectedReturnTypes (
6777cf3e94aSJung-uk Kim     char                    *Buffer,
6787cf3e94aSJung-uk Kim     UINT32                  ExpectedBtypes);
6797cf3e94aSJung-uk Kim 
6807cf3e94aSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP)
6819c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6829c7c683cSJung-uk Kim AcpiUtMatchResourceName (
6839c7c683cSJung-uk Kim     char                        *Name);
6849c7c683cSJung-uk Kim 
6859c7c683cSJung-uk Kim void
6869c7c683cSJung-uk Kim AcpiUtDisplayPredefinedMethod (
6879c7c683cSJung-uk Kim     char                        *Buffer,
6889c7c683cSJung-uk Kim     const ACPI_PREDEFINED_INFO  *ThisName,
6899c7c683cSJung-uk Kim     BOOLEAN                     MultiLine);
6909c7c683cSJung-uk Kim 
6919c7c683cSJung-uk Kim UINT32
6929c7c683cSJung-uk Kim AcpiUtGetResourceBitWidth (
6939c7c683cSJung-uk Kim     char                    *Buffer,
6949c7c683cSJung-uk Kim     UINT16                  Types);
6957cf3e94aSJung-uk Kim #endif
6969c7c683cSJung-uk Kim 
6979c7c683cSJung-uk Kim 
6989c7c683cSJung-uk Kim /*
699a9f12690SJung-uk Kim  * utstate - Generic state creation/cache routines
700a9f12690SJung-uk Kim  */
701a9f12690SJung-uk Kim void
702a9f12690SJung-uk Kim AcpiUtPushGenericState (
703a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead,
704a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
705a9f12690SJung-uk Kim 
706a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
707a9f12690SJung-uk Kim AcpiUtPopGenericState (
708a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead);
709a9f12690SJung-uk Kim 
710a9f12690SJung-uk Kim 
711a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
712a9f12690SJung-uk Kim AcpiUtCreateGenericState (
713a9f12690SJung-uk Kim     void);
714a9f12690SJung-uk Kim 
715a9f12690SJung-uk Kim ACPI_THREAD_STATE *
716a9f12690SJung-uk Kim AcpiUtCreateThreadState (
717a9f12690SJung-uk Kim     void);
718a9f12690SJung-uk Kim 
719a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
720a9f12690SJung-uk Kim AcpiUtCreateUpdateState (
721a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
722a9f12690SJung-uk Kim     UINT16                  Action);
723a9f12690SJung-uk Kim 
724a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
725a9f12690SJung-uk Kim AcpiUtCreatePkgState (
726a9f12690SJung-uk Kim     void                    *InternalObject,
727a9f12690SJung-uk Kim     void                    *ExternalObject,
728a9f12690SJung-uk Kim     UINT16                  Index);
729a9f12690SJung-uk Kim 
730a9f12690SJung-uk Kim ACPI_STATUS
731a9f12690SJung-uk Kim AcpiUtCreateUpdateStateAndPush (
732a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
733a9f12690SJung-uk Kim     UINT16                  Action,
734a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **StateList);
735a9f12690SJung-uk Kim 
736a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
737a9f12690SJung-uk Kim AcpiUtCreateControlState (
738a9f12690SJung-uk Kim     void);
739a9f12690SJung-uk Kim 
740a9f12690SJung-uk Kim void
741a9f12690SJung-uk Kim AcpiUtDeleteGenericState (
742a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
743a9f12690SJung-uk Kim 
744a9f12690SJung-uk Kim 
745a9f12690SJung-uk Kim /*
746a9f12690SJung-uk Kim  * utmath
747a9f12690SJung-uk Kim  */
748a9f12690SJung-uk Kim ACPI_STATUS
749a9f12690SJung-uk Kim AcpiUtDivide (
7509a179dd8SJung-uk Kim     UINT64                  InDividend,
7519a179dd8SJung-uk Kim     UINT64                  InDivisor,
7529a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
7539a179dd8SJung-uk Kim     UINT64                  *OutRemainder);
754a9f12690SJung-uk Kim 
755a9f12690SJung-uk Kim ACPI_STATUS
756a9f12690SJung-uk Kim AcpiUtShortDivide (
7579a179dd8SJung-uk Kim     UINT64                  InDividend,
758a9f12690SJung-uk Kim     UINT32                  Divisor,
7599a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
760a9f12690SJung-uk Kim     UINT32                  *OutRemainder);
761a9f12690SJung-uk Kim 
7629c48c75eSJung-uk Kim 
763a9f12690SJung-uk Kim /*
764a9f12690SJung-uk Kim  * utmisc
765a9f12690SJung-uk Kim  */
7669c48c75eSJung-uk Kim const ACPI_EXCEPTION_INFO *
767a9f12690SJung-uk Kim AcpiUtValidateException (
768a9f12690SJung-uk Kim     ACPI_STATUS             Status);
769a9f12690SJung-uk Kim 
770a9f12690SJung-uk Kim BOOLEAN
771d6dd1baeSJung-uk Kim AcpiUtIsPciRootBridge (
772d6dd1baeSJung-uk Kim     char                    *Id);
773d6dd1baeSJung-uk Kim 
77470e6ab8fSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP)
775d6dd1baeSJung-uk Kim BOOLEAN
776a9f12690SJung-uk Kim AcpiUtIsAmlTable (
777a9f12690SJung-uk Kim     ACPI_TABLE_HEADER       *Table);
7787cf3e94aSJung-uk Kim #endif
779a9f12690SJung-uk Kim 
780a9f12690SJung-uk Kim ACPI_STATUS
781a9f12690SJung-uk Kim AcpiUtWalkPackageTree (
782a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
783a9f12690SJung-uk Kim     void                    *TargetObject,
784a9f12690SJung-uk Kim     ACPI_PKG_CALLBACK       WalkCallback,
785a9f12690SJung-uk Kim     void                    *Context);
786a9f12690SJung-uk Kim 
787a9f12690SJung-uk Kim /* Values for Base above (16=Hex, 10=Decimal) */
788a9f12690SJung-uk Kim 
789a9f12690SJung-uk Kim #define ACPI_ANY_BASE        0
790a9f12690SJung-uk Kim 
791fe0f0bbbSJung-uk Kim 
792a9f12690SJung-uk Kim UINT32
793a9f12690SJung-uk Kim AcpiUtDwordByteSwap (
794a9f12690SJung-uk Kim     UINT32                  Value);
795a9f12690SJung-uk Kim 
796a9f12690SJung-uk Kim void
797a9f12690SJung-uk Kim AcpiUtSetIntegerWidth (
798a9f12690SJung-uk Kim     UINT8                   Revision);
799a9f12690SJung-uk Kim 
800a9f12690SJung-uk Kim #ifdef ACPI_DEBUG_OUTPUT
801a9f12690SJung-uk Kim void
802a9f12690SJung-uk Kim AcpiUtDisplayInitPathname (
803a9f12690SJung-uk Kim     UINT8                   Type,
804a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *ObjHandle,
805f8146b88SJung-uk Kim     const char              *Path);
806a9f12690SJung-uk Kim #endif
807a9f12690SJung-uk Kim 
808a9f12690SJung-uk Kim 
809a9f12690SJung-uk Kim /*
810efcc2a30SJung-uk Kim  * utownerid - Support for Table/Method Owner IDs
811efcc2a30SJung-uk Kim  */
812efcc2a30SJung-uk Kim ACPI_STATUS
813efcc2a30SJung-uk Kim AcpiUtAllocateOwnerId (
814efcc2a30SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
815efcc2a30SJung-uk Kim 
816efcc2a30SJung-uk Kim void
817efcc2a30SJung-uk Kim AcpiUtReleaseOwnerId (
818efcc2a30SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
819efcc2a30SJung-uk Kim 
820efcc2a30SJung-uk Kim 
821efcc2a30SJung-uk Kim /*
822a9f12690SJung-uk Kim  * utresrc
823a9f12690SJung-uk Kim  */
824a9f12690SJung-uk Kim ACPI_STATUS
825a9f12690SJung-uk Kim AcpiUtWalkAmlResources (
826ed17e06eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
827a9f12690SJung-uk Kim     UINT8                   *Aml,
828a9f12690SJung-uk Kim     ACPI_SIZE               AmlLength,
829a9f12690SJung-uk Kim     ACPI_WALK_AML_CALLBACK  UserFunction,
830efcc2a30SJung-uk Kim     void                    **Context);
831a9f12690SJung-uk Kim 
832a9f12690SJung-uk Kim ACPI_STATUS
833a9f12690SJung-uk Kim AcpiUtValidateResource (
834ed17e06eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
835a9f12690SJung-uk Kim     void                    *Aml,
836a9f12690SJung-uk Kim     UINT8                   *ReturnIndex);
837a9f12690SJung-uk Kim 
838a9f12690SJung-uk Kim UINT32
839a9f12690SJung-uk Kim AcpiUtGetDescriptorLength (
840a9f12690SJung-uk Kim     void                    *Aml);
841a9f12690SJung-uk Kim 
842a9f12690SJung-uk Kim UINT16
843a9f12690SJung-uk Kim AcpiUtGetResourceLength (
844a9f12690SJung-uk Kim     void                    *Aml);
845a9f12690SJung-uk Kim 
846a9f12690SJung-uk Kim UINT8
847a9f12690SJung-uk Kim AcpiUtGetResourceHeaderLength (
848a9f12690SJung-uk Kim     void                    *Aml);
849a9f12690SJung-uk Kim 
850a9f12690SJung-uk Kim UINT8
851a9f12690SJung-uk Kim AcpiUtGetResourceType (
852a9f12690SJung-uk Kim     void                    *Aml);
853a9f12690SJung-uk Kim 
854a9f12690SJung-uk Kim ACPI_STATUS
855a9f12690SJung-uk Kim AcpiUtGetResourceEndTag (
856a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc,
857a9f12690SJung-uk Kim     UINT8                   **EndTag);
858a9f12690SJung-uk Kim 
859a9f12690SJung-uk Kim 
860a9f12690SJung-uk Kim /*
861efcc2a30SJung-uk Kim  * utstring - String and character utilities
862efcc2a30SJung-uk Kim  */
863efcc2a30SJung-uk Kim void
864efcc2a30SJung-uk Kim AcpiUtPrintString (
865efcc2a30SJung-uk Kim     char                    *String,
8668d744e47SJung-uk Kim     UINT16                  MaxLength);
867efcc2a30SJung-uk Kim 
8687cf3e94aSJung-uk Kim #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP
869efcc2a30SJung-uk Kim void
870efcc2a30SJung-uk Kim UtConvertBackslashes (
871efcc2a30SJung-uk Kim     char                    *Pathname);
8727cf3e94aSJung-uk Kim #endif
873efcc2a30SJung-uk Kim 
874efcc2a30SJung-uk Kim void
875efcc2a30SJung-uk Kim AcpiUtRepairName (
876efcc2a30SJung-uk Kim     char                    *Name);
877efcc2a30SJung-uk Kim 
878313a0c13SJung-uk Kim #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION)
879313a0c13SJung-uk Kim BOOLEAN
880313a0c13SJung-uk Kim AcpiUtSafeStrcpy (
881313a0c13SJung-uk Kim     char                    *Dest,
882313a0c13SJung-uk Kim     ACPI_SIZE               DestSize,
883313a0c13SJung-uk Kim     char                    *Source);
884313a0c13SJung-uk Kim 
885313a0c13SJung-uk Kim BOOLEAN
886313a0c13SJung-uk Kim AcpiUtSafeStrcat (
887313a0c13SJung-uk Kim     char                    *Dest,
888313a0c13SJung-uk Kim     ACPI_SIZE               DestSize,
889313a0c13SJung-uk Kim     char                    *Source);
890f8146b88SJung-uk Kim 
891f8146b88SJung-uk Kim BOOLEAN
892f8146b88SJung-uk Kim AcpiUtSafeStrncat (
893f8146b88SJung-uk Kim     char                    *Dest,
894f8146b88SJung-uk Kim     ACPI_SIZE               DestSize,
895f8146b88SJung-uk Kim     char                    *Source,
896f8146b88SJung-uk Kim     ACPI_SIZE               MaxTransferLength);
897313a0c13SJung-uk Kim #endif
898313a0c13SJung-uk Kim 
899efcc2a30SJung-uk Kim 
900efcc2a30SJung-uk Kim /*
901a9f12690SJung-uk Kim  * utmutex - mutex support
902a9f12690SJung-uk Kim  */
903a9f12690SJung-uk Kim ACPI_STATUS
904a9f12690SJung-uk Kim AcpiUtMutexInitialize (
905a9f12690SJung-uk Kim     void);
906a9f12690SJung-uk Kim 
907a9f12690SJung-uk Kim void
908a9f12690SJung-uk Kim AcpiUtMutexTerminate (
909a9f12690SJung-uk Kim     void);
910a9f12690SJung-uk Kim 
911a9f12690SJung-uk Kim ACPI_STATUS
912a9f12690SJung-uk Kim AcpiUtAcquireMutex (
913a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
914a9f12690SJung-uk Kim 
915a9f12690SJung-uk Kim ACPI_STATUS
916a9f12690SJung-uk Kim AcpiUtReleaseMutex (
917a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
918a9f12690SJung-uk Kim 
919a9f12690SJung-uk Kim 
920a9f12690SJung-uk Kim /*
921a9f12690SJung-uk Kim  * utalloc - memory allocation and object caching
922a9f12690SJung-uk Kim  */
923a9f12690SJung-uk Kim ACPI_STATUS
924a9f12690SJung-uk Kim AcpiUtCreateCaches (
925a9f12690SJung-uk Kim     void);
926a9f12690SJung-uk Kim 
927a9f12690SJung-uk Kim ACPI_STATUS
928a9f12690SJung-uk Kim AcpiUtDeleteCaches (
929a9f12690SJung-uk Kim     void);
930a9f12690SJung-uk Kim 
931a9f12690SJung-uk Kim ACPI_STATUS
932a9f12690SJung-uk Kim AcpiUtValidateBuffer (
933a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer);
934a9f12690SJung-uk Kim 
935a9f12690SJung-uk Kim ACPI_STATUS
936a9f12690SJung-uk Kim AcpiUtInitializeBuffer (
937a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer,
938a9f12690SJung-uk Kim     ACPI_SIZE               RequiredLength);
939a9f12690SJung-uk Kim 
940a9f12690SJung-uk Kim #ifdef ACPI_DBG_TRACK_ALLOCATIONS
941a9f12690SJung-uk Kim void *
942a9f12690SJung-uk Kim AcpiUtAllocateAndTrack (
943a9f12690SJung-uk Kim     ACPI_SIZE               Size,
944a9f12690SJung-uk Kim     UINT32                  Component,
945a9f12690SJung-uk Kim     const char              *Module,
946a9f12690SJung-uk Kim     UINT32                  Line);
947a9f12690SJung-uk Kim 
948a9f12690SJung-uk Kim void *
949a9f12690SJung-uk Kim AcpiUtAllocateZeroedAndTrack (
950a9f12690SJung-uk Kim     ACPI_SIZE               Size,
951a9f12690SJung-uk Kim     UINT32                  Component,
952a9f12690SJung-uk Kim     const char              *Module,
953a9f12690SJung-uk Kim     UINT32                  Line);
954a9f12690SJung-uk Kim 
955a9f12690SJung-uk Kim void
956a9f12690SJung-uk Kim AcpiUtFreeAndTrack (
957a9f12690SJung-uk Kim     void                    *Address,
958a9f12690SJung-uk Kim     UINT32                  Component,
959a9f12690SJung-uk Kim     const char              *Module,
960a9f12690SJung-uk Kim     UINT32                  Line);
961a9f12690SJung-uk Kim 
962a9f12690SJung-uk Kim void
963a9f12690SJung-uk Kim AcpiUtDumpAllocationInfo (
964a9f12690SJung-uk Kim     void);
965a9f12690SJung-uk Kim 
966a9f12690SJung-uk Kim void
967a9f12690SJung-uk Kim AcpiUtDumpAllocations (
968a9f12690SJung-uk Kim     UINT32                  Component,
969a9f12690SJung-uk Kim     const char              *Module);
970a9f12690SJung-uk Kim 
971a9f12690SJung-uk Kim ACPI_STATUS
972a9f12690SJung-uk Kim AcpiUtCreateList (
973f8146b88SJung-uk Kim     const char              *ListName,
974a9f12690SJung-uk Kim     UINT16                  ObjectSize,
975a9f12690SJung-uk Kim     ACPI_MEMORY_LIST        **ReturnCache);
976a9f12690SJung-uk Kim 
97742fecd12SJung-uk Kim #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
978a9f12690SJung-uk Kim 
979fe0f0bbbSJung-uk Kim 
980ec3fc72fSJung-uk Kim /*
981ec3fc72fSJung-uk Kim  * utaddress - address range check
982ec3fc72fSJung-uk Kim  */
983ec3fc72fSJung-uk Kim ACPI_STATUS
984ec3fc72fSJung-uk Kim AcpiUtAddAddressRange (
985ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
986ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
987ec3fc72fSJung-uk Kim     UINT32                  Length,
988ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
989ec3fc72fSJung-uk Kim 
990ec3fc72fSJung-uk Kim void
991ec3fc72fSJung-uk Kim AcpiUtRemoveAddressRange (
992ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
993ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
994ec3fc72fSJung-uk Kim 
995ec3fc72fSJung-uk Kim UINT32
996ec3fc72fSJung-uk Kim AcpiUtCheckAddressRange (
997ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
998ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
999ec3fc72fSJung-uk Kim     UINT32                  Length,
1000ec3fc72fSJung-uk Kim     BOOLEAN                 Warn);
1001ec3fc72fSJung-uk Kim 
1002ec3fc72fSJung-uk Kim void
1003ec3fc72fSJung-uk Kim AcpiUtDeleteAddressLists (
1004ec3fc72fSJung-uk Kim     void);
100542fecd12SJung-uk Kim 
1006fe0f0bbbSJung-uk Kim 
100742fecd12SJung-uk Kim /*
100842fecd12SJung-uk Kim  * utxferror - various error/warning output functions
100942fecd12SJung-uk Kim  */
101042fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
101142fecd12SJung-uk Kim AcpiUtPredefinedWarning (
101242fecd12SJung-uk Kim     const char              *ModuleName,
101342fecd12SJung-uk Kim     UINT32                  LineNumber,
101442fecd12SJung-uk Kim     char                    *Pathname,
101542fecd12SJung-uk Kim     UINT8                   NodeFlags,
101642fecd12SJung-uk Kim     const char              *Format,
101742fecd12SJung-uk Kim     ...);
101842fecd12SJung-uk Kim 
101942fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
102042fecd12SJung-uk Kim AcpiUtPredefinedInfo (
102142fecd12SJung-uk Kim     const char              *ModuleName,
102242fecd12SJung-uk Kim     UINT32                  LineNumber,
102342fecd12SJung-uk Kim     char                    *Pathname,
102442fecd12SJung-uk Kim     UINT8                   NodeFlags,
102542fecd12SJung-uk Kim     const char              *Format,
102642fecd12SJung-uk Kim     ...);
102742fecd12SJung-uk Kim 
1028895f26a9SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
1029895f26a9SJung-uk Kim AcpiUtPredefinedBiosError (
1030895f26a9SJung-uk Kim     const char              *ModuleName,
1031895f26a9SJung-uk Kim     UINT32                  LineNumber,
1032895f26a9SJung-uk Kim     char                    *Pathname,
1033895f26a9SJung-uk Kim     UINT8                   NodeFlags,
1034895f26a9SJung-uk Kim     const char              *Format,
1035895f26a9SJung-uk Kim     ...);
1036895f26a9SJung-uk Kim 
103742fecd12SJung-uk Kim void
103842fecd12SJung-uk Kim AcpiUtNamespaceError (
103942fecd12SJung-uk Kim     const char              *ModuleName,
104042fecd12SJung-uk Kim     UINT32                  LineNumber,
104142fecd12SJung-uk Kim     const char              *InternalName,
104242fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
104342fecd12SJung-uk Kim 
104442fecd12SJung-uk Kim void
104542fecd12SJung-uk Kim AcpiUtMethodError (
104642fecd12SJung-uk Kim     const char              *ModuleName,
104742fecd12SJung-uk Kim     UINT32                  LineNumber,
104842fecd12SJung-uk Kim     const char              *Message,
104942fecd12SJung-uk Kim     ACPI_NAMESPACE_NODE     *Node,
105042fecd12SJung-uk Kim     const char              *Path,
105142fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
1052a9f12690SJung-uk Kim 
1053fe0f0bbbSJung-uk Kim 
1054313a0c13SJung-uk Kim /*
1055313a0c13SJung-uk Kim  * Utility functions for ACPI names and IDs
1056313a0c13SJung-uk Kim  */
1057313a0c13SJung-uk Kim const AH_PREDEFINED_NAME *
1058313a0c13SJung-uk Kim AcpiAhMatchPredefinedName (
1059313a0c13SJung-uk Kim     char                    *Nameseg);
1060313a0c13SJung-uk Kim 
1061313a0c13SJung-uk Kim const AH_DEVICE_ID *
1062313a0c13SJung-uk Kim AcpiAhMatchHardwareId (
1063313a0c13SJung-uk Kim     char                    *Hid);
1064313a0c13SJung-uk Kim 
1065313a0c13SJung-uk Kim const char *
1066313a0c13SJung-uk Kim AcpiAhMatchUuid (
1067313a0c13SJung-uk Kim     UINT8                   *Data);
1068313a0c13SJung-uk Kim 
1069fe0f0bbbSJung-uk Kim 
1070313a0c13SJung-uk Kim /*
1071313a0c13SJung-uk Kim  * utprint - printf/vprintf output functions
1072313a0c13SJung-uk Kim  */
1073313a0c13SJung-uk Kim const char *
1074313a0c13SJung-uk Kim AcpiUtScanNumber (
1075313a0c13SJung-uk Kim     const char              *String,
1076313a0c13SJung-uk Kim     UINT64                  *NumberPtr);
1077313a0c13SJung-uk Kim 
1078313a0c13SJung-uk Kim const char *
1079313a0c13SJung-uk Kim AcpiUtPrintNumber (
1080313a0c13SJung-uk Kim     char                    *String,
1081313a0c13SJung-uk Kim     UINT64                  Number);
1082313a0c13SJung-uk Kim 
1083313a0c13SJung-uk Kim int
1084313a0c13SJung-uk Kim AcpiUtVsnprintf (
1085313a0c13SJung-uk Kim     char                    *String,
1086313a0c13SJung-uk Kim     ACPI_SIZE               Size,
1087313a0c13SJung-uk Kim     const char              *Format,
1088313a0c13SJung-uk Kim     va_list                 Args);
1089313a0c13SJung-uk Kim 
1090313a0c13SJung-uk Kim int
1091313a0c13SJung-uk Kim AcpiUtSnprintf (
1092313a0c13SJung-uk Kim     char                    *String,
1093313a0c13SJung-uk Kim     ACPI_SIZE               Size,
1094313a0c13SJung-uk Kim     const char              *Format,
1095313a0c13SJung-uk Kim     ...);
1096313a0c13SJung-uk Kim 
1097313a0c13SJung-uk Kim #ifdef ACPI_APPLICATION
1098313a0c13SJung-uk Kim int
1099313a0c13SJung-uk Kim AcpiUtFileVprintf (
1100313a0c13SJung-uk Kim     ACPI_FILE               File,
1101313a0c13SJung-uk Kim     const char              *Format,
1102313a0c13SJung-uk Kim     va_list                 Args);
1103313a0c13SJung-uk Kim 
1104313a0c13SJung-uk Kim int
1105313a0c13SJung-uk Kim AcpiUtFilePrintf (
1106313a0c13SJung-uk Kim     ACPI_FILE               File,
1107313a0c13SJung-uk Kim     const char              *Format,
1108313a0c13SJung-uk Kim     ...);
1109313a0c13SJung-uk Kim #endif
1110313a0c13SJung-uk Kim 
1111fe0f0bbbSJung-uk Kim 
1112313a0c13SJung-uk Kim /*
1113313a0c13SJung-uk Kim  * utuuid -- UUID support functions
1114313a0c13SJung-uk Kim  */
11157cf3e94aSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_DISASSEMBLER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP)
1116313a0c13SJung-uk Kim void
1117313a0c13SJung-uk Kim AcpiUtConvertStringToUuid (
1118313a0c13SJung-uk Kim     char                    *InString,
1119313a0c13SJung-uk Kim     UINT8                   *UuidBuffer);
11207cf3e94aSJung-uk Kim #endif
1121313a0c13SJung-uk Kim 
1122a9f12690SJung-uk Kim #endif /* _ACUTILS_H */
1123