xref: /freebsd/sys/contrib/dev/acpica/include/acutils.h (revision 895f26a936215c6187ee6f713ce504921b6010e1)
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 /*
8efcc2a30SJung-uk Kim  * Copyright (C) 2000 - 2013, 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 
53a9f12690SJung-uk Kim #if 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 
91a9f12690SJung-uk Kim /* Types for Resource descriptor entries */
92a9f12690SJung-uk Kim 
93a9f12690SJung-uk Kim #define ACPI_INVALID_RESOURCE           0
94a9f12690SJung-uk Kim #define ACPI_FIXED_LENGTH               1
95a9f12690SJung-uk Kim #define ACPI_VARIABLE_LENGTH            2
96a9f12690SJung-uk Kim #define ACPI_SMALL_VARIABLE_LENGTH      3
97a9f12690SJung-uk Kim 
98a9f12690SJung-uk Kim typedef
99a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
100a9f12690SJung-uk Kim     UINT8                   *Aml,
101a9f12690SJung-uk Kim     UINT32                  Length,
102a9f12690SJung-uk Kim     UINT32                  Offset,
103a9f12690SJung-uk Kim     UINT8                   ResourceIndex,
104efcc2a30SJung-uk Kim     void                    **Context);
105a9f12690SJung-uk Kim 
106a9f12690SJung-uk Kim typedef
107a9f12690SJung-uk Kim ACPI_STATUS (*ACPI_PKG_CALLBACK) (
108a9f12690SJung-uk Kim     UINT8                   ObjectType,
109a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
110a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State,
111a9f12690SJung-uk Kim     void                    *Context);
112a9f12690SJung-uk Kim 
113a9f12690SJung-uk Kim typedef struct acpi_pkg_info
114a9f12690SJung-uk Kim {
115a9f12690SJung-uk Kim     UINT8                   *FreeSpace;
116a9f12690SJung-uk Kim     ACPI_SIZE               Length;
117a9f12690SJung-uk Kim     UINT32                  ObjectSpace;
118a9f12690SJung-uk Kim     UINT32                  NumPackages;
119a9f12690SJung-uk Kim 
120a9f12690SJung-uk Kim } ACPI_PKG_INFO;
121a9f12690SJung-uk Kim 
1229c7c683cSJung-uk Kim /* Object reference counts */
1239c7c683cSJung-uk Kim 
124a9f12690SJung-uk Kim #define REF_INCREMENT       (UINT16) 0
125a9f12690SJung-uk Kim #define REF_DECREMENT       (UINT16) 1
126a9f12690SJung-uk Kim 
127a9f12690SJung-uk Kim /* AcpiUtDumpBuffer */
128a9f12690SJung-uk Kim 
129a9f12690SJung-uk Kim #define DB_BYTE_DISPLAY     1
130a9f12690SJung-uk Kim #define DB_WORD_DISPLAY     2
131a9f12690SJung-uk Kim #define DB_DWORD_DISPLAY    4
132a9f12690SJung-uk Kim #define DB_QWORD_DISPLAY    8
133a9f12690SJung-uk Kim 
134a9f12690SJung-uk Kim /*
135a9f12690SJung-uk Kim  * utglobal - Global data structures and procedures
136a9f12690SJung-uk Kim  */
137a9f12690SJung-uk Kim ACPI_STATUS
138a9f12690SJung-uk Kim AcpiUtInitGlobals (
139a9f12690SJung-uk Kim     void);
140a9f12690SJung-uk Kim 
141a9f12690SJung-uk Kim #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
142a9f12690SJung-uk Kim 
143a9f12690SJung-uk Kim char *
144a9f12690SJung-uk Kim AcpiUtGetMutexName (
145a9f12690SJung-uk Kim     UINT32                  MutexId);
146a9f12690SJung-uk Kim 
147a9f12690SJung-uk Kim const char *
148a9f12690SJung-uk Kim AcpiUtGetNotifyName (
149a9f12690SJung-uk Kim     UINT32                  NotifyValue);
150a9f12690SJung-uk Kim 
151a9f12690SJung-uk Kim #endif
152a9f12690SJung-uk Kim 
153a9f12690SJung-uk Kim char *
154a9f12690SJung-uk Kim AcpiUtGetTypeName (
155a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
156a9f12690SJung-uk Kim 
157a9f12690SJung-uk Kim char *
158a9f12690SJung-uk Kim AcpiUtGetNodeName (
159a9f12690SJung-uk Kim     void                    *Object);
160a9f12690SJung-uk Kim 
161a9f12690SJung-uk Kim char *
162a9f12690SJung-uk Kim AcpiUtGetDescriptorName (
163a9f12690SJung-uk Kim     void                    *Object);
164a9f12690SJung-uk Kim 
165a9f12690SJung-uk Kim const char *
166a9f12690SJung-uk Kim AcpiUtGetReferenceName (
167a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
168a9f12690SJung-uk Kim 
169a9f12690SJung-uk Kim char *
170a9f12690SJung-uk Kim AcpiUtGetObjectTypeName (
171a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc);
172a9f12690SJung-uk Kim 
173a9f12690SJung-uk Kim char *
174a9f12690SJung-uk Kim AcpiUtGetRegionName (
175a9f12690SJung-uk Kim     UINT8                   SpaceId);
176a9f12690SJung-uk Kim 
177a9f12690SJung-uk Kim char *
178a9f12690SJung-uk Kim AcpiUtGetEventName (
179a9f12690SJung-uk Kim     UINT32                  EventId);
180a9f12690SJung-uk Kim 
181a9f12690SJung-uk Kim char
182a9f12690SJung-uk Kim AcpiUtHexToAsciiChar (
1839a179dd8SJung-uk Kim     UINT64                  Integer,
184a9f12690SJung-uk Kim     UINT32                  Position);
185a9f12690SJung-uk Kim 
186a9f12690SJung-uk Kim BOOLEAN
187a9f12690SJung-uk Kim AcpiUtValidObjectType (
188a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
189a9f12690SJung-uk Kim 
190a9f12690SJung-uk Kim 
191a9f12690SJung-uk Kim /*
192a9f12690SJung-uk Kim  * utinit - miscellaneous initialization and shutdown
193a9f12690SJung-uk Kim  */
194a9f12690SJung-uk Kim ACPI_STATUS
195a9f12690SJung-uk Kim AcpiUtHardwareInitialize (
196a9f12690SJung-uk Kim     void);
197a9f12690SJung-uk Kim 
198a9f12690SJung-uk Kim void
199a9f12690SJung-uk Kim AcpiUtSubsystemShutdown (
200a9f12690SJung-uk Kim     void);
201a9f12690SJung-uk Kim 
202a9f12690SJung-uk Kim 
203a9f12690SJung-uk Kim /*
204a9f12690SJung-uk Kim  * utclib - Local implementations of C library functions
205a9f12690SJung-uk Kim  */
206a9f12690SJung-uk Kim #ifndef ACPI_USE_SYSTEM_CLIBRARY
207a9f12690SJung-uk Kim 
208a9f12690SJung-uk Kim ACPI_SIZE
209a9f12690SJung-uk Kim AcpiUtStrlen (
210a9f12690SJung-uk Kim     const char              *String);
211a9f12690SJung-uk Kim 
212a9f12690SJung-uk Kim char *
213a9f12690SJung-uk Kim AcpiUtStrcpy (
214a9f12690SJung-uk Kim     char                    *DstString,
215a9f12690SJung-uk Kim     const char              *SrcString);
216a9f12690SJung-uk Kim 
217a9f12690SJung-uk Kim char *
218a9f12690SJung-uk Kim AcpiUtStrncpy (
219a9f12690SJung-uk Kim     char                    *DstString,
220a9f12690SJung-uk Kim     const char              *SrcString,
221a9f12690SJung-uk Kim     ACPI_SIZE               Count);
222a9f12690SJung-uk Kim 
223a9f12690SJung-uk Kim int
224a9f12690SJung-uk Kim AcpiUtMemcmp (
225a9f12690SJung-uk Kim     const char              *Buffer1,
226a9f12690SJung-uk Kim     const char              *Buffer2,
227a9f12690SJung-uk Kim     ACPI_SIZE               Count);
228a9f12690SJung-uk Kim 
229a9f12690SJung-uk Kim int
230a9f12690SJung-uk Kim AcpiUtStrncmp (
231a9f12690SJung-uk Kim     const char              *String1,
232a9f12690SJung-uk Kim     const char              *String2,
233a9f12690SJung-uk Kim     ACPI_SIZE               Count);
234a9f12690SJung-uk Kim 
235a9f12690SJung-uk Kim int
236a9f12690SJung-uk Kim AcpiUtStrcmp (
237a9f12690SJung-uk Kim     const char              *String1,
238a9f12690SJung-uk Kim     const char              *String2);
239a9f12690SJung-uk Kim 
240a9f12690SJung-uk Kim char *
241a9f12690SJung-uk Kim AcpiUtStrcat (
242a9f12690SJung-uk Kim     char                    *DstString,
243a9f12690SJung-uk Kim     const char              *SrcString);
244a9f12690SJung-uk Kim 
245a9f12690SJung-uk Kim char *
246a9f12690SJung-uk Kim AcpiUtStrncat (
247a9f12690SJung-uk Kim     char                    *DstString,
248a9f12690SJung-uk Kim     const char              *SrcString,
249a9f12690SJung-uk Kim     ACPI_SIZE               Count);
250a9f12690SJung-uk Kim 
251a9f12690SJung-uk Kim UINT32
252a9f12690SJung-uk Kim AcpiUtStrtoul (
253a9f12690SJung-uk Kim     const char              *String,
254a9f12690SJung-uk Kim     char                    **Terminator,
255a9f12690SJung-uk Kim     UINT32                  Base);
256a9f12690SJung-uk Kim 
257a9f12690SJung-uk Kim char *
258a9f12690SJung-uk Kim AcpiUtStrstr (
259a9f12690SJung-uk Kim     char                    *String1,
260a9f12690SJung-uk Kim     char                    *String2);
261a9f12690SJung-uk Kim 
262a9f12690SJung-uk Kim void *
263a9f12690SJung-uk Kim AcpiUtMemcpy (
264a9f12690SJung-uk Kim     void                    *Dest,
265a9f12690SJung-uk Kim     const void              *Src,
266a9f12690SJung-uk Kim     ACPI_SIZE               Count);
267a9f12690SJung-uk Kim 
268a9f12690SJung-uk Kim void *
269a9f12690SJung-uk Kim AcpiUtMemset (
270a9f12690SJung-uk Kim     void                    *Dest,
271a9f12690SJung-uk Kim     UINT8                   Value,
272a9f12690SJung-uk Kim     ACPI_SIZE               Count);
273a9f12690SJung-uk Kim 
274a9f12690SJung-uk Kim int
275a9f12690SJung-uk Kim AcpiUtToUpper (
276a9f12690SJung-uk Kim     int                     c);
277a9f12690SJung-uk Kim 
278a9f12690SJung-uk Kim int
279a9f12690SJung-uk Kim AcpiUtToLower (
280a9f12690SJung-uk Kim     int                     c);
281a9f12690SJung-uk Kim 
282a9f12690SJung-uk Kim extern const UINT8 _acpi_ctype[];
283a9f12690SJung-uk Kim 
284a9f12690SJung-uk Kim #define _ACPI_XA     0x00    /* extra alphabetic - not supported */
285a9f12690SJung-uk Kim #define _ACPI_XS     0x40    /* extra space */
286a9f12690SJung-uk Kim #define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
287a9f12690SJung-uk Kim #define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
288a9f12690SJung-uk Kim #define _ACPI_DI     0x04    /* '0'-'9' */
289a9f12690SJung-uk Kim #define _ACPI_LO     0x02    /* 'a'-'z' */
290a9f12690SJung-uk Kim #define _ACPI_PU     0x10    /* punctuation */
291a9f12690SJung-uk Kim #define _ACPI_SP     0x08    /* space */
292a9f12690SJung-uk Kim #define _ACPI_UP     0x01    /* 'A'-'Z' */
293a9f12690SJung-uk Kim #define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
294a9f12690SJung-uk Kim 
295a9f12690SJung-uk Kim #define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
296a9f12690SJung-uk Kim #define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
297a9f12690SJung-uk Kim #define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
298a9f12690SJung-uk Kim #define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
299a9f12690SJung-uk Kim #define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
300a9f12690SJung-uk Kim #define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
301a9f12690SJung-uk Kim #define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
302a9f12690SJung-uk Kim 
303a9f12690SJung-uk Kim #endif /* !ACPI_USE_SYSTEM_CLIBRARY */
304a9f12690SJung-uk Kim 
305a9f12690SJung-uk Kim #define ACPI_IS_ASCII(c)  ((c) < 0x80)
306a9f12690SJung-uk Kim 
307a9f12690SJung-uk Kim 
308a9f12690SJung-uk Kim /*
309a9f12690SJung-uk Kim  * utcopy - Object construction and conversion interfaces
310a9f12690SJung-uk Kim  */
311a9f12690SJung-uk Kim ACPI_STATUS
312a9f12690SJung-uk Kim AcpiUtBuildSimpleObject(
313a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
314a9f12690SJung-uk Kim     ACPI_OBJECT             *UserObj,
315a9f12690SJung-uk Kim     UINT8                   *DataSpace,
316a9f12690SJung-uk Kim     UINT32                  *BufferSpaceUsed);
317a9f12690SJung-uk Kim 
318a9f12690SJung-uk Kim ACPI_STATUS
319a9f12690SJung-uk Kim AcpiUtBuildPackageObject (
320a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
321a9f12690SJung-uk Kim     UINT8                   *Buffer,
322a9f12690SJung-uk Kim     UINT32                  *SpaceUsed);
323a9f12690SJung-uk Kim 
324a9f12690SJung-uk Kim ACPI_STATUS
325a9f12690SJung-uk Kim AcpiUtCopyIobjectToEobject (
326a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
327a9f12690SJung-uk Kim     ACPI_BUFFER             *RetBuffer);
328a9f12690SJung-uk Kim 
329a9f12690SJung-uk Kim ACPI_STATUS
330a9f12690SJung-uk Kim AcpiUtCopyEobjectToIobject (
331a9f12690SJung-uk Kim     ACPI_OBJECT             *Obj,
332a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **InternalObj);
333a9f12690SJung-uk Kim 
334a9f12690SJung-uk Kim ACPI_STATUS
335a9f12690SJung-uk Kim AcpiUtCopyISimpleToIsimple (
336a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObj,
337a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *DestObj);
338a9f12690SJung-uk Kim 
339a9f12690SJung-uk Kim ACPI_STATUS
340a9f12690SJung-uk Kim AcpiUtCopyIobjectToIobject (
341a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceDesc,
342a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **DestDesc,
343a9f12690SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
344a9f12690SJung-uk Kim 
345a9f12690SJung-uk Kim 
346a9f12690SJung-uk Kim /*
347a9f12690SJung-uk Kim  * utcreate - Object creation
348a9f12690SJung-uk Kim  */
349a9f12690SJung-uk Kim ACPI_STATUS
350a9f12690SJung-uk Kim AcpiUtUpdateObjectReference (
351a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
352a9f12690SJung-uk Kim     UINT16                  Action);
353a9f12690SJung-uk Kim 
354a9f12690SJung-uk Kim 
355a9f12690SJung-uk Kim /*
356a9f12690SJung-uk Kim  * utdebug - Debug interfaces
357a9f12690SJung-uk Kim  */
358a9f12690SJung-uk Kim void
359a9f12690SJung-uk Kim AcpiUtInitStackPtrTrace (
360a9f12690SJung-uk Kim     void);
361a9f12690SJung-uk Kim 
362a9f12690SJung-uk Kim void
363a9f12690SJung-uk Kim AcpiUtTrackStackPtr (
364a9f12690SJung-uk Kim     void);
365a9f12690SJung-uk Kim 
366a9f12690SJung-uk Kim void
367a9f12690SJung-uk Kim AcpiUtTrace (
368a9f12690SJung-uk Kim     UINT32                  LineNumber,
369a9f12690SJung-uk Kim     const char              *FunctionName,
370a9f12690SJung-uk Kim     const char              *ModuleName,
371a9f12690SJung-uk Kim     UINT32                  ComponentId);
372a9f12690SJung-uk Kim 
373a9f12690SJung-uk Kim void
374a9f12690SJung-uk Kim AcpiUtTracePtr (
375a9f12690SJung-uk Kim     UINT32                  LineNumber,
376a9f12690SJung-uk Kim     const char              *FunctionName,
377a9f12690SJung-uk Kim     const char              *ModuleName,
378a9f12690SJung-uk Kim     UINT32                  ComponentId,
379a9f12690SJung-uk Kim     void                    *Pointer);
380a9f12690SJung-uk Kim 
381a9f12690SJung-uk Kim void
382a9f12690SJung-uk Kim AcpiUtTraceU32 (
383a9f12690SJung-uk Kim     UINT32                  LineNumber,
384a9f12690SJung-uk Kim     const char              *FunctionName,
385a9f12690SJung-uk Kim     const char              *ModuleName,
386a9f12690SJung-uk Kim     UINT32                  ComponentId,
387a9f12690SJung-uk Kim     UINT32                  Integer);
388a9f12690SJung-uk Kim 
389a9f12690SJung-uk Kim void
390a9f12690SJung-uk Kim AcpiUtTraceStr (
391a9f12690SJung-uk Kim     UINT32                  LineNumber,
392a9f12690SJung-uk Kim     const char              *FunctionName,
393a9f12690SJung-uk Kim     const char              *ModuleName,
394a9f12690SJung-uk Kim     UINT32                  ComponentId,
395a9f12690SJung-uk Kim     char                    *String);
396a9f12690SJung-uk Kim 
397a9f12690SJung-uk Kim void
398a9f12690SJung-uk Kim AcpiUtExit (
399a9f12690SJung-uk Kim     UINT32                  LineNumber,
400a9f12690SJung-uk Kim     const char              *FunctionName,
401a9f12690SJung-uk Kim     const char              *ModuleName,
402a9f12690SJung-uk Kim     UINT32                  ComponentId);
403a9f12690SJung-uk Kim 
404a9f12690SJung-uk Kim void
405a9f12690SJung-uk Kim AcpiUtStatusExit (
406a9f12690SJung-uk Kim     UINT32                  LineNumber,
407a9f12690SJung-uk Kim     const char              *FunctionName,
408a9f12690SJung-uk Kim     const char              *ModuleName,
409a9f12690SJung-uk Kim     UINT32                  ComponentId,
410a9f12690SJung-uk Kim     ACPI_STATUS             Status);
411a9f12690SJung-uk Kim 
412a9f12690SJung-uk Kim void
413a9f12690SJung-uk Kim AcpiUtValueExit (
414a9f12690SJung-uk Kim     UINT32                  LineNumber,
415a9f12690SJung-uk Kim     const char              *FunctionName,
416a9f12690SJung-uk Kim     const char              *ModuleName,
417a9f12690SJung-uk Kim     UINT32                  ComponentId,
4189a179dd8SJung-uk Kim     UINT64                  Value);
419a9f12690SJung-uk Kim 
420a9f12690SJung-uk Kim void
421a9f12690SJung-uk Kim AcpiUtPtrExit (
422a9f12690SJung-uk Kim     UINT32                  LineNumber,
423a9f12690SJung-uk Kim     const char              *FunctionName,
424a9f12690SJung-uk Kim     const char              *ModuleName,
425a9f12690SJung-uk Kim     UINT32                  ComponentId,
426a9f12690SJung-uk Kim     UINT8                   *Ptr);
427a9f12690SJung-uk Kim 
428a9f12690SJung-uk Kim void
4298ef1a331SJung-uk Kim AcpiUtDebugDumpBuffer (
430a9f12690SJung-uk Kim     UINT8                   *Buffer,
431a9f12690SJung-uk Kim     UINT32                  Count,
432a9f12690SJung-uk Kim     UINT32                  Display,
433f38b0f21SJung-uk Kim     UINT32                  ComponentId);
434a9f12690SJung-uk Kim 
435a9f12690SJung-uk Kim void
4368ef1a331SJung-uk Kim AcpiUtDumpBuffer (
437a9f12690SJung-uk Kim     UINT8                   *Buffer,
438a9f12690SJung-uk Kim     UINT32                  Count,
4398ef1a331SJung-uk Kim     UINT32                  Display,
4408ef1a331SJung-uk Kim     UINT32                  Offset);
441a9f12690SJung-uk Kim 
442a9f12690SJung-uk Kim void
443a9f12690SJung-uk Kim AcpiUtReportError (
444a9f12690SJung-uk Kim     char                    *ModuleName,
445a9f12690SJung-uk Kim     UINT32                  LineNumber);
446a9f12690SJung-uk Kim 
447a9f12690SJung-uk Kim void
448a9f12690SJung-uk Kim AcpiUtReportInfo (
449a9f12690SJung-uk Kim     char                    *ModuleName,
450a9f12690SJung-uk Kim     UINT32                  LineNumber);
451a9f12690SJung-uk Kim 
452a9f12690SJung-uk Kim void
453a9f12690SJung-uk Kim AcpiUtReportWarning (
454a9f12690SJung-uk Kim     char                    *ModuleName,
455a9f12690SJung-uk Kim     UINT32                  LineNumber);
456a9f12690SJung-uk Kim 
457a9f12690SJung-uk Kim /*
458a9f12690SJung-uk Kim  * utdelete - Object deletion and reference counts
459a9f12690SJung-uk Kim  */
460a9f12690SJung-uk Kim void
461a9f12690SJung-uk Kim AcpiUtAddReference (
462a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
463a9f12690SJung-uk Kim 
464a9f12690SJung-uk Kim void
465a9f12690SJung-uk Kim AcpiUtRemoveReference (
466a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
467a9f12690SJung-uk Kim 
468a9f12690SJung-uk Kim void
469a9f12690SJung-uk Kim AcpiUtDeleteInternalPackageObject (
470a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
471a9f12690SJung-uk Kim 
472a9f12690SJung-uk Kim void
473a9f12690SJung-uk Kim AcpiUtDeleteInternalSimpleObject (
474a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
475a9f12690SJung-uk Kim 
476a9f12690SJung-uk Kim void
477a9f12690SJung-uk Kim AcpiUtDeleteInternalObjectList (
478a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ObjList);
479a9f12690SJung-uk Kim 
480a9f12690SJung-uk Kim 
481a9f12690SJung-uk Kim /*
482a9f12690SJung-uk Kim  * uteval - object evaluation
483a9f12690SJung-uk Kim  */
484a9f12690SJung-uk Kim ACPI_STATUS
485a9f12690SJung-uk Kim AcpiUtEvaluateObject (
486a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *PrefixNode,
487a9f12690SJung-uk Kim     char                    *Path,
488a9f12690SJung-uk Kim     UINT32                  ExpectedReturnBtypes,
489a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     **ReturnDesc);
490a9f12690SJung-uk Kim 
491a9f12690SJung-uk Kim ACPI_STATUS
492a9f12690SJung-uk Kim AcpiUtEvaluateNumericObject (
493a9f12690SJung-uk Kim     char                    *ObjectName,
494a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
4959a179dd8SJung-uk Kim     UINT64                  *Value);
496a9f12690SJung-uk Kim 
497a9f12690SJung-uk Kim ACPI_STATUS
498a9f12690SJung-uk Kim AcpiUtExecute_STA (
499a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
500a9f12690SJung-uk Kim     UINT32                  *StatusFlags);
501a9f12690SJung-uk Kim 
502a9f12690SJung-uk Kim ACPI_STATUS
503d6dd1baeSJung-uk Kim AcpiUtExecutePowerMethods (
504a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
505d6dd1baeSJung-uk Kim     const char              **MethodNames,
506d6dd1baeSJung-uk Kim     UINT8                   MethodCount,
507d6dd1baeSJung-uk Kim     UINT8                   *OutValues);
508d6dd1baeSJung-uk Kim 
509d6dd1baeSJung-uk Kim 
510d6dd1baeSJung-uk Kim /*
511d6dd1baeSJung-uk Kim  * utids - device ID support
512d6dd1baeSJung-uk Kim  */
513d6dd1baeSJung-uk Kim ACPI_STATUS
514d6dd1baeSJung-uk Kim AcpiUtExecute_HID (
515d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5168ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
517a9f12690SJung-uk Kim 
518a9f12690SJung-uk Kim ACPI_STATUS
519d6dd1baeSJung-uk Kim AcpiUtExecute_UID (
520a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5218ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
5228ef1a331SJung-uk Kim 
5238ef1a331SJung-uk Kim ACPI_STATUS
5248ef1a331SJung-uk Kim AcpiUtExecute_SUB (
5258ef1a331SJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5268ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID      **ReturnId);
527d6dd1baeSJung-uk Kim 
528d6dd1baeSJung-uk Kim ACPI_STATUS
529d6dd1baeSJung-uk Kim AcpiUtExecute_CID (
530d6dd1baeSJung-uk Kim     ACPI_NAMESPACE_NODE     *DeviceNode,
5318ef1a331SJung-uk Kim     ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
532d6dd1baeSJung-uk Kim 
533a9f12690SJung-uk Kim 
534a9f12690SJung-uk Kim /*
535a9f12690SJung-uk Kim  * utlock - reader/writer locks
536a9f12690SJung-uk Kim  */
537a9f12690SJung-uk Kim ACPI_STATUS
538a9f12690SJung-uk Kim AcpiUtCreateRwLock (
539a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
540a9f12690SJung-uk Kim 
541a9f12690SJung-uk Kim void
542a9f12690SJung-uk Kim AcpiUtDeleteRwLock (
543a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
544a9f12690SJung-uk Kim 
545a9f12690SJung-uk Kim ACPI_STATUS
546a9f12690SJung-uk Kim AcpiUtAcquireReadLock (
547a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
548a9f12690SJung-uk Kim 
549a9f12690SJung-uk Kim ACPI_STATUS
550a9f12690SJung-uk Kim AcpiUtReleaseReadLock (
551a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
552a9f12690SJung-uk Kim 
553a9f12690SJung-uk Kim ACPI_STATUS
554a9f12690SJung-uk Kim AcpiUtAcquireWriteLock (
555a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
556a9f12690SJung-uk Kim 
557a9f12690SJung-uk Kim void
558a9f12690SJung-uk Kim AcpiUtReleaseWriteLock (
559a9f12690SJung-uk Kim     ACPI_RW_LOCK            *Lock);
560a9f12690SJung-uk Kim 
561a9f12690SJung-uk Kim 
562a9f12690SJung-uk Kim /*
563a9f12690SJung-uk Kim  * utobject - internal object create/delete/cache routines
564a9f12690SJung-uk Kim  */
565a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT  *
566a9f12690SJung-uk Kim AcpiUtCreateInternalObjectDbg (
567a9f12690SJung-uk Kim     const char              *ModuleName,
568a9f12690SJung-uk Kim     UINT32                  LineNumber,
569a9f12690SJung-uk Kim     UINT32                  ComponentId,
570a9f12690SJung-uk Kim     ACPI_OBJECT_TYPE        Type);
571a9f12690SJung-uk Kim 
572a9f12690SJung-uk Kim void *
573a9f12690SJung-uk Kim AcpiUtAllocateObjectDescDbg (
574a9f12690SJung-uk Kim     const char              *ModuleName,
575a9f12690SJung-uk Kim     UINT32                  LineNumber,
576a9f12690SJung-uk Kim     UINT32                  ComponentId);
577a9f12690SJung-uk Kim 
578a9f12690SJung-uk Kim #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
579a9f12690SJung-uk Kim #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
580a9f12690SJung-uk Kim 
581a9f12690SJung-uk Kim void
582a9f12690SJung-uk Kim AcpiUtDeleteObjectDesc (
583a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object);
584a9f12690SJung-uk Kim 
585a9f12690SJung-uk Kim BOOLEAN
586a9f12690SJung-uk Kim AcpiUtValidInternalObject (
587a9f12690SJung-uk Kim     void                    *Object);
588a9f12690SJung-uk Kim 
589a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
590a9f12690SJung-uk Kim AcpiUtCreatePackageObject (
591a9f12690SJung-uk Kim     UINT32                  Count);
592a9f12690SJung-uk Kim 
593a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
5942272d050SJung-uk Kim AcpiUtCreateIntegerObject (
5952272d050SJung-uk Kim     UINT64                  Value);
5962272d050SJung-uk Kim 
5972272d050SJung-uk Kim ACPI_OPERAND_OBJECT *
598a9f12690SJung-uk Kim AcpiUtCreateBufferObject (
599a9f12690SJung-uk Kim     ACPI_SIZE               BufferSize);
600a9f12690SJung-uk Kim 
601a9f12690SJung-uk Kim ACPI_OPERAND_OBJECT *
602a9f12690SJung-uk Kim AcpiUtCreateStringObject (
603a9f12690SJung-uk Kim     ACPI_SIZE               StringSize);
604a9f12690SJung-uk Kim 
605a9f12690SJung-uk Kim ACPI_STATUS
606a9f12690SJung-uk Kim AcpiUtGetObjectSize(
607a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Obj,
608a9f12690SJung-uk Kim     ACPI_SIZE               *ObjLength);
609a9f12690SJung-uk Kim 
610a9f12690SJung-uk Kim 
611a9f12690SJung-uk Kim /*
612709fac06SJung-uk Kim  * utosi - Support for the _OSI predefined control method
613709fac06SJung-uk Kim  */
614709fac06SJung-uk Kim ACPI_STATUS
615709fac06SJung-uk Kim AcpiUtInitializeInterfaces (
616709fac06SJung-uk Kim     void);
617709fac06SJung-uk Kim 
6189c7c683cSJung-uk Kim ACPI_STATUS
619709fac06SJung-uk Kim AcpiUtInterfaceTerminate (
620709fac06SJung-uk Kim     void);
621709fac06SJung-uk Kim 
622709fac06SJung-uk Kim ACPI_STATUS
623709fac06SJung-uk Kim AcpiUtInstallInterface (
624709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
625709fac06SJung-uk Kim 
626709fac06SJung-uk Kim ACPI_STATUS
627709fac06SJung-uk Kim AcpiUtRemoveInterface (
628709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
629709fac06SJung-uk Kim 
630709fac06SJung-uk Kim ACPI_INTERFACE_INFO *
631709fac06SJung-uk Kim AcpiUtGetInterface (
632709fac06SJung-uk Kim     ACPI_STRING             InterfaceName);
633709fac06SJung-uk Kim 
634709fac06SJung-uk Kim ACPI_STATUS
635709fac06SJung-uk Kim AcpiUtOsiImplementation (
636709fac06SJung-uk Kim     ACPI_WALK_STATE         *WalkState);
637709fac06SJung-uk Kim 
638709fac06SJung-uk Kim 
639709fac06SJung-uk Kim /*
6409c7c683cSJung-uk Kim  * utpredef - support for predefined names
6419c7c683cSJung-uk Kim  */
6429c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6439c7c683cSJung-uk Kim AcpiUtGetNextPredefinedMethod (
6449c7c683cSJung-uk Kim     const ACPI_PREDEFINED_INFO  *ThisName);
6459c7c683cSJung-uk Kim 
6469c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6479c7c683cSJung-uk Kim AcpiUtMatchPredefinedMethod (
6489c7c683cSJung-uk Kim     char                        *Name);
6499c7c683cSJung-uk Kim 
6509c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *
6519c7c683cSJung-uk Kim AcpiUtMatchResourceName (
6529c7c683cSJung-uk Kim     char                        *Name);
6539c7c683cSJung-uk Kim 
6549c7c683cSJung-uk Kim void
6559c7c683cSJung-uk Kim AcpiUtDisplayPredefinedMethod (
6569c7c683cSJung-uk Kim     char                        *Buffer,
6579c7c683cSJung-uk Kim     const ACPI_PREDEFINED_INFO  *ThisName,
6589c7c683cSJung-uk Kim     BOOLEAN                     MultiLine);
6599c7c683cSJung-uk Kim 
6609c7c683cSJung-uk Kim void
6619c7c683cSJung-uk Kim AcpiUtGetExpectedReturnTypes (
6629c7c683cSJung-uk Kim     char                    *Buffer,
6639c7c683cSJung-uk Kim     UINT32                  ExpectedBtypes);
6649c7c683cSJung-uk Kim 
6659c7c683cSJung-uk Kim UINT32
6669c7c683cSJung-uk Kim AcpiUtGetResourceBitWidth (
6679c7c683cSJung-uk Kim     char                    *Buffer,
6689c7c683cSJung-uk Kim     UINT16                  Types);
6699c7c683cSJung-uk Kim 
6709c7c683cSJung-uk Kim 
6719c7c683cSJung-uk Kim /*
672a9f12690SJung-uk Kim  * utstate - Generic state creation/cache routines
673a9f12690SJung-uk Kim  */
674a9f12690SJung-uk Kim void
675a9f12690SJung-uk Kim AcpiUtPushGenericState (
676a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead,
677a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
678a9f12690SJung-uk Kim 
679a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
680a9f12690SJung-uk Kim AcpiUtPopGenericState (
681a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **ListHead);
682a9f12690SJung-uk Kim 
683a9f12690SJung-uk Kim 
684a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
685a9f12690SJung-uk Kim AcpiUtCreateGenericState (
686a9f12690SJung-uk Kim     void);
687a9f12690SJung-uk Kim 
688a9f12690SJung-uk Kim ACPI_THREAD_STATE *
689a9f12690SJung-uk Kim AcpiUtCreateThreadState (
690a9f12690SJung-uk Kim     void);
691a9f12690SJung-uk Kim 
692a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
693a9f12690SJung-uk Kim AcpiUtCreateUpdateState (
694a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
695a9f12690SJung-uk Kim     UINT16                  Action);
696a9f12690SJung-uk Kim 
697a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
698a9f12690SJung-uk Kim AcpiUtCreatePkgState (
699a9f12690SJung-uk Kim     void                    *InternalObject,
700a9f12690SJung-uk Kim     void                    *ExternalObject,
701a9f12690SJung-uk Kim     UINT16                  Index);
702a9f12690SJung-uk Kim 
703a9f12690SJung-uk Kim ACPI_STATUS
704a9f12690SJung-uk Kim AcpiUtCreateUpdateStateAndPush (
705a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *Object,
706a9f12690SJung-uk Kim     UINT16                  Action,
707a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **StateList);
708a9f12690SJung-uk Kim 
709a9f12690SJung-uk Kim ACPI_STATUS
710a9f12690SJung-uk Kim AcpiUtCreatePkgStateAndPush (
711a9f12690SJung-uk Kim     void                    *InternalObject,
712a9f12690SJung-uk Kim     void                    *ExternalObject,
713a9f12690SJung-uk Kim     UINT16                  Index,
714a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      **StateList);
715a9f12690SJung-uk Kim 
716a9f12690SJung-uk Kim ACPI_GENERIC_STATE *
717a9f12690SJung-uk Kim AcpiUtCreateControlState (
718a9f12690SJung-uk Kim     void);
719a9f12690SJung-uk Kim 
720a9f12690SJung-uk Kim void
721a9f12690SJung-uk Kim AcpiUtDeleteGenericState (
722a9f12690SJung-uk Kim     ACPI_GENERIC_STATE      *State);
723a9f12690SJung-uk Kim 
724a9f12690SJung-uk Kim 
725a9f12690SJung-uk Kim /*
726a9f12690SJung-uk Kim  * utmath
727a9f12690SJung-uk Kim  */
728a9f12690SJung-uk Kim ACPI_STATUS
729a9f12690SJung-uk Kim AcpiUtDivide (
7309a179dd8SJung-uk Kim     UINT64                  InDividend,
7319a179dd8SJung-uk Kim     UINT64                  InDivisor,
7329a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
7339a179dd8SJung-uk Kim     UINT64                  *OutRemainder);
734a9f12690SJung-uk Kim 
735a9f12690SJung-uk Kim ACPI_STATUS
736a9f12690SJung-uk Kim AcpiUtShortDivide (
7379a179dd8SJung-uk Kim     UINT64                  InDividend,
738a9f12690SJung-uk Kim     UINT32                  Divisor,
7399a179dd8SJung-uk Kim     UINT64                  *OutQuotient,
740a9f12690SJung-uk Kim     UINT32                  *OutRemainder);
741a9f12690SJung-uk Kim 
7429c48c75eSJung-uk Kim 
743a9f12690SJung-uk Kim /*
744a9f12690SJung-uk Kim  * utmisc
745a9f12690SJung-uk Kim  */
7469c48c75eSJung-uk Kim const ACPI_EXCEPTION_INFO *
747a9f12690SJung-uk Kim AcpiUtValidateException (
748a9f12690SJung-uk Kim     ACPI_STATUS             Status);
749a9f12690SJung-uk Kim 
750a9f12690SJung-uk Kim BOOLEAN
751d6dd1baeSJung-uk Kim AcpiUtIsPciRootBridge (
752d6dd1baeSJung-uk Kim     char                    *Id);
753d6dd1baeSJung-uk Kim 
754d6dd1baeSJung-uk Kim BOOLEAN
755a9f12690SJung-uk Kim AcpiUtIsAmlTable (
756a9f12690SJung-uk Kim     ACPI_TABLE_HEADER       *Table);
757a9f12690SJung-uk Kim 
758a9f12690SJung-uk Kim ACPI_STATUS
759a9f12690SJung-uk Kim AcpiUtWalkPackageTree (
760a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *SourceObject,
761a9f12690SJung-uk Kim     void                    *TargetObject,
762a9f12690SJung-uk Kim     ACPI_PKG_CALLBACK       WalkCallback,
763a9f12690SJung-uk Kim     void                    *Context);
764a9f12690SJung-uk Kim 
765a9f12690SJung-uk Kim 
766a9f12690SJung-uk Kim /* Values for Base above (16=Hex, 10=Decimal) */
767a9f12690SJung-uk Kim 
768a9f12690SJung-uk Kim #define ACPI_ANY_BASE        0
769a9f12690SJung-uk Kim 
770a9f12690SJung-uk Kim UINT32
771a9f12690SJung-uk Kim AcpiUtDwordByteSwap (
772a9f12690SJung-uk Kim     UINT32                  Value);
773a9f12690SJung-uk Kim 
774a9f12690SJung-uk Kim void
775a9f12690SJung-uk Kim AcpiUtSetIntegerWidth (
776a9f12690SJung-uk Kim     UINT8                   Revision);
777a9f12690SJung-uk Kim 
778a9f12690SJung-uk Kim #ifdef ACPI_DEBUG_OUTPUT
779a9f12690SJung-uk Kim void
780a9f12690SJung-uk Kim AcpiUtDisplayInitPathname (
781a9f12690SJung-uk Kim     UINT8                   Type,
782a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *ObjHandle,
783a9f12690SJung-uk Kim     char                    *Path);
784a9f12690SJung-uk Kim #endif
785a9f12690SJung-uk Kim 
786a9f12690SJung-uk Kim 
787a9f12690SJung-uk Kim /*
788efcc2a30SJung-uk Kim  * utownerid - Support for Table/Method Owner IDs
789efcc2a30SJung-uk Kim  */
790efcc2a30SJung-uk Kim ACPI_STATUS
791efcc2a30SJung-uk Kim AcpiUtAllocateOwnerId (
792efcc2a30SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
793efcc2a30SJung-uk Kim 
794efcc2a30SJung-uk Kim void
795efcc2a30SJung-uk Kim AcpiUtReleaseOwnerId (
796efcc2a30SJung-uk Kim     ACPI_OWNER_ID           *OwnerId);
797efcc2a30SJung-uk Kim 
798efcc2a30SJung-uk Kim 
799efcc2a30SJung-uk Kim /*
800a9f12690SJung-uk Kim  * utresrc
801a9f12690SJung-uk Kim  */
802a9f12690SJung-uk Kim ACPI_STATUS
803a9f12690SJung-uk Kim AcpiUtWalkAmlResources (
804ed17e06eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
805a9f12690SJung-uk Kim     UINT8                   *Aml,
806a9f12690SJung-uk Kim     ACPI_SIZE               AmlLength,
807a9f12690SJung-uk Kim     ACPI_WALK_AML_CALLBACK  UserFunction,
808efcc2a30SJung-uk Kim     void                    **Context);
809a9f12690SJung-uk Kim 
810a9f12690SJung-uk Kim ACPI_STATUS
811a9f12690SJung-uk Kim AcpiUtValidateResource (
812ed17e06eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
813a9f12690SJung-uk Kim     void                    *Aml,
814a9f12690SJung-uk Kim     UINT8                   *ReturnIndex);
815a9f12690SJung-uk Kim 
816a9f12690SJung-uk Kim UINT32
817a9f12690SJung-uk Kim AcpiUtGetDescriptorLength (
818a9f12690SJung-uk Kim     void                    *Aml);
819a9f12690SJung-uk Kim 
820a9f12690SJung-uk Kim UINT16
821a9f12690SJung-uk Kim AcpiUtGetResourceLength (
822a9f12690SJung-uk Kim     void                    *Aml);
823a9f12690SJung-uk Kim 
824a9f12690SJung-uk Kim UINT8
825a9f12690SJung-uk Kim AcpiUtGetResourceHeaderLength (
826a9f12690SJung-uk Kim     void                    *Aml);
827a9f12690SJung-uk Kim 
828a9f12690SJung-uk Kim UINT8
829a9f12690SJung-uk Kim AcpiUtGetResourceType (
830a9f12690SJung-uk Kim     void                    *Aml);
831a9f12690SJung-uk Kim 
832a9f12690SJung-uk Kim ACPI_STATUS
833a9f12690SJung-uk Kim AcpiUtGetResourceEndTag (
834a9f12690SJung-uk Kim     ACPI_OPERAND_OBJECT     *ObjDesc,
835a9f12690SJung-uk Kim     UINT8                   **EndTag);
836a9f12690SJung-uk Kim 
837a9f12690SJung-uk Kim 
838a9f12690SJung-uk Kim /*
839efcc2a30SJung-uk Kim  * utstring - String and character utilities
840efcc2a30SJung-uk Kim  */
841efcc2a30SJung-uk Kim void
842efcc2a30SJung-uk Kim AcpiUtStrupr (
843efcc2a30SJung-uk Kim     char                    *SrcString);
844efcc2a30SJung-uk Kim 
845efcc2a30SJung-uk Kim void
846efcc2a30SJung-uk Kim AcpiUtStrlwr (
847efcc2a30SJung-uk Kim     char                    *SrcString);
848efcc2a30SJung-uk Kim 
849efcc2a30SJung-uk Kim int
850efcc2a30SJung-uk Kim AcpiUtStricmp (
851efcc2a30SJung-uk Kim     char                    *String1,
852efcc2a30SJung-uk Kim     char                    *String2);
853efcc2a30SJung-uk Kim 
854efcc2a30SJung-uk Kim ACPI_STATUS
855efcc2a30SJung-uk Kim AcpiUtStrtoul64 (
856efcc2a30SJung-uk Kim     char                    *String,
857efcc2a30SJung-uk Kim     UINT32                  Base,
858efcc2a30SJung-uk Kim     UINT64                  *RetInteger);
859efcc2a30SJung-uk Kim 
860efcc2a30SJung-uk Kim void
861efcc2a30SJung-uk Kim AcpiUtPrintString (
862efcc2a30SJung-uk Kim     char                    *String,
863efcc2a30SJung-uk Kim     UINT8                   MaxLength);
864efcc2a30SJung-uk Kim 
865efcc2a30SJung-uk Kim void
866efcc2a30SJung-uk Kim UtConvertBackslashes (
867efcc2a30SJung-uk Kim     char                    *Pathname);
868efcc2a30SJung-uk Kim 
869efcc2a30SJung-uk Kim BOOLEAN
870efcc2a30SJung-uk Kim AcpiUtValidAcpiName (
871efcc2a30SJung-uk Kim     UINT32                  Name);
872efcc2a30SJung-uk Kim 
873efcc2a30SJung-uk Kim BOOLEAN
874efcc2a30SJung-uk Kim AcpiUtValidAcpiChar (
875efcc2a30SJung-uk Kim     char                    Character,
876efcc2a30SJung-uk Kim     UINT32                  Position);
877efcc2a30SJung-uk Kim 
878efcc2a30SJung-uk Kim void
879efcc2a30SJung-uk Kim AcpiUtRepairName (
880efcc2a30SJung-uk Kim     char                    *Name);
881efcc2a30SJung-uk Kim 
882efcc2a30SJung-uk Kim 
883efcc2a30SJung-uk Kim /*
884a9f12690SJung-uk Kim  * utmutex - mutex support
885a9f12690SJung-uk Kim  */
886a9f12690SJung-uk Kim ACPI_STATUS
887a9f12690SJung-uk Kim AcpiUtMutexInitialize (
888a9f12690SJung-uk Kim     void);
889a9f12690SJung-uk Kim 
890a9f12690SJung-uk Kim void
891a9f12690SJung-uk Kim AcpiUtMutexTerminate (
892a9f12690SJung-uk Kim     void);
893a9f12690SJung-uk Kim 
894a9f12690SJung-uk Kim ACPI_STATUS
895a9f12690SJung-uk Kim AcpiUtAcquireMutex (
896a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
897a9f12690SJung-uk Kim 
898a9f12690SJung-uk Kim ACPI_STATUS
899a9f12690SJung-uk Kim AcpiUtReleaseMutex (
900a9f12690SJung-uk Kim     ACPI_MUTEX_HANDLE       MutexId);
901a9f12690SJung-uk Kim 
902a9f12690SJung-uk Kim 
903a9f12690SJung-uk Kim /*
904a9f12690SJung-uk Kim  * utalloc - memory allocation and object caching
905a9f12690SJung-uk Kim  */
906a9f12690SJung-uk Kim ACPI_STATUS
907a9f12690SJung-uk Kim AcpiUtCreateCaches (
908a9f12690SJung-uk Kim     void);
909a9f12690SJung-uk Kim 
910a9f12690SJung-uk Kim ACPI_STATUS
911a9f12690SJung-uk Kim AcpiUtDeleteCaches (
912a9f12690SJung-uk Kim     void);
913a9f12690SJung-uk Kim 
914a9f12690SJung-uk Kim ACPI_STATUS
915a9f12690SJung-uk Kim AcpiUtValidateBuffer (
916a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer);
917a9f12690SJung-uk Kim 
918a9f12690SJung-uk Kim ACPI_STATUS
919a9f12690SJung-uk Kim AcpiUtInitializeBuffer (
920a9f12690SJung-uk Kim     ACPI_BUFFER             *Buffer,
921a9f12690SJung-uk Kim     ACPI_SIZE               RequiredLength);
922a9f12690SJung-uk Kim 
923a9f12690SJung-uk Kim void *
924a9f12690SJung-uk Kim AcpiUtAllocate (
925a9f12690SJung-uk Kim     ACPI_SIZE               Size,
926a9f12690SJung-uk Kim     UINT32                  Component,
927a9f12690SJung-uk Kim     const char              *Module,
928a9f12690SJung-uk Kim     UINT32                  Line);
929a9f12690SJung-uk Kim 
930a9f12690SJung-uk Kim void *
931a9f12690SJung-uk Kim AcpiUtAllocateZeroed (
932a9f12690SJung-uk Kim     ACPI_SIZE               Size,
933a9f12690SJung-uk Kim     UINT32                  Component,
934a9f12690SJung-uk Kim     const char              *Module,
935a9f12690SJung-uk Kim     UINT32                  Line);
936a9f12690SJung-uk Kim 
937a9f12690SJung-uk Kim #ifdef ACPI_DBG_TRACK_ALLOCATIONS
938a9f12690SJung-uk Kim void *
939a9f12690SJung-uk Kim AcpiUtAllocateAndTrack (
940a9f12690SJung-uk Kim     ACPI_SIZE               Size,
941a9f12690SJung-uk Kim     UINT32                  Component,
942a9f12690SJung-uk Kim     const char              *Module,
943a9f12690SJung-uk Kim     UINT32                  Line);
944a9f12690SJung-uk Kim 
945a9f12690SJung-uk Kim void *
946a9f12690SJung-uk Kim AcpiUtAllocateZeroedAndTrack (
947a9f12690SJung-uk Kim     ACPI_SIZE               Size,
948a9f12690SJung-uk Kim     UINT32                  Component,
949a9f12690SJung-uk Kim     const char              *Module,
950a9f12690SJung-uk Kim     UINT32                  Line);
951a9f12690SJung-uk Kim 
952a9f12690SJung-uk Kim void
953a9f12690SJung-uk Kim AcpiUtFreeAndTrack (
954a9f12690SJung-uk Kim     void                    *Address,
955a9f12690SJung-uk Kim     UINT32                  Component,
956a9f12690SJung-uk Kim     const char              *Module,
957a9f12690SJung-uk Kim     UINT32                  Line);
958a9f12690SJung-uk Kim 
959a9f12690SJung-uk Kim void
960a9f12690SJung-uk Kim AcpiUtDumpAllocationInfo (
961a9f12690SJung-uk Kim     void);
962a9f12690SJung-uk Kim 
963a9f12690SJung-uk Kim void
964a9f12690SJung-uk Kim AcpiUtDumpAllocations (
965a9f12690SJung-uk Kim     UINT32                  Component,
966a9f12690SJung-uk Kim     const char              *Module);
967a9f12690SJung-uk Kim 
968a9f12690SJung-uk Kim ACPI_STATUS
969a9f12690SJung-uk Kim AcpiUtCreateList (
970a9f12690SJung-uk Kim     char                    *ListName,
971a9f12690SJung-uk Kim     UINT16                  ObjectSize,
972a9f12690SJung-uk Kim     ACPI_MEMORY_LIST        **ReturnCache);
973a9f12690SJung-uk Kim 
97442fecd12SJung-uk Kim #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
975a9f12690SJung-uk Kim 
976ec3fc72fSJung-uk Kim /*
977ec3fc72fSJung-uk Kim  * utaddress - address range check
978ec3fc72fSJung-uk Kim  */
979ec3fc72fSJung-uk Kim ACPI_STATUS
980ec3fc72fSJung-uk Kim AcpiUtAddAddressRange (
981ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
982ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
983ec3fc72fSJung-uk Kim     UINT32                  Length,
984ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
985ec3fc72fSJung-uk Kim 
986ec3fc72fSJung-uk Kim void
987ec3fc72fSJung-uk Kim AcpiUtRemoveAddressRange (
988ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
989ec3fc72fSJung-uk Kim     ACPI_NAMESPACE_NODE     *RegionNode);
990ec3fc72fSJung-uk Kim 
991ec3fc72fSJung-uk Kim UINT32
992ec3fc72fSJung-uk Kim AcpiUtCheckAddressRange (
993ec3fc72fSJung-uk Kim     ACPI_ADR_SPACE_TYPE     SpaceId,
994ec3fc72fSJung-uk Kim     ACPI_PHYSICAL_ADDRESS   Address,
995ec3fc72fSJung-uk Kim     UINT32                  Length,
996ec3fc72fSJung-uk Kim     BOOLEAN                 Warn);
997ec3fc72fSJung-uk Kim 
998ec3fc72fSJung-uk Kim void
999ec3fc72fSJung-uk Kim AcpiUtDeleteAddressLists (
1000ec3fc72fSJung-uk Kim     void);
100142fecd12SJung-uk Kim 
100242fecd12SJung-uk Kim /*
100342fecd12SJung-uk Kim  * utxferror - various error/warning output functions
100442fecd12SJung-uk Kim  */
100542fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
100642fecd12SJung-uk Kim AcpiUtPredefinedWarning (
100742fecd12SJung-uk Kim     const char              *ModuleName,
100842fecd12SJung-uk Kim     UINT32                  LineNumber,
100942fecd12SJung-uk Kim     char                    *Pathname,
101042fecd12SJung-uk Kim     UINT8                   NodeFlags,
101142fecd12SJung-uk Kim     const char              *Format,
101242fecd12SJung-uk Kim     ...);
101342fecd12SJung-uk Kim 
101442fecd12SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
101542fecd12SJung-uk Kim AcpiUtPredefinedInfo (
101642fecd12SJung-uk Kim     const char              *ModuleName,
101742fecd12SJung-uk Kim     UINT32                  LineNumber,
101842fecd12SJung-uk Kim     char                    *Pathname,
101942fecd12SJung-uk Kim     UINT8                   NodeFlags,
102042fecd12SJung-uk Kim     const char              *Format,
102142fecd12SJung-uk Kim     ...);
102242fecd12SJung-uk Kim 
1023*895f26a9SJung-uk Kim void ACPI_INTERNAL_VAR_XFACE
1024*895f26a9SJung-uk Kim AcpiUtPredefinedBiosError (
1025*895f26a9SJung-uk Kim     const char              *ModuleName,
1026*895f26a9SJung-uk Kim     UINT32                  LineNumber,
1027*895f26a9SJung-uk Kim     char                    *Pathname,
1028*895f26a9SJung-uk Kim     UINT8                   NodeFlags,
1029*895f26a9SJung-uk Kim     const char              *Format,
1030*895f26a9SJung-uk Kim     ...);
1031*895f26a9SJung-uk Kim 
103242fecd12SJung-uk Kim void
103342fecd12SJung-uk Kim AcpiUtNamespaceError (
103442fecd12SJung-uk Kim     const char              *ModuleName,
103542fecd12SJung-uk Kim     UINT32                  LineNumber,
103642fecd12SJung-uk Kim     const char              *InternalName,
103742fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
103842fecd12SJung-uk Kim 
103942fecd12SJung-uk Kim void
104042fecd12SJung-uk Kim AcpiUtMethodError (
104142fecd12SJung-uk Kim     const char              *ModuleName,
104242fecd12SJung-uk Kim     UINT32                  LineNumber,
104342fecd12SJung-uk Kim     const char              *Message,
104442fecd12SJung-uk Kim     ACPI_NAMESPACE_NODE     *Node,
104542fecd12SJung-uk Kim     const char              *Path,
104642fecd12SJung-uk Kim     ACPI_STATUS             LookupStatus);
1047a9f12690SJung-uk Kim 
1048a9f12690SJung-uk Kim #endif /* _ACUTILS_H */
1049