acutils.h revision 217365
167754Smsmith/******************************************************************************
267754Smsmith *
377424Smsmith * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
467754Smsmith *
567754Smsmith *****************************************************************************/
667754Smsmith
7217365Sjkim/*
8217365Sjkim * Copyright (C) 2000 - 2011, Intel Corp.
970243Smsmith * All rights reserved.
1067754Smsmith *
11217365Sjkim * Redistribution and use in source and binary forms, with or without
12217365Sjkim * modification, are permitted provided that the following conditions
13217365Sjkim * are met:
14217365Sjkim * 1. Redistributions of source code must retain the above copyright
15217365Sjkim *    notice, this list of conditions, and the following disclaimer,
16217365Sjkim *    without modification.
17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18217365Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
19217365Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
20217365Sjkim *    including a substantially similar Disclaimer requirement for further
21217365Sjkim *    binary redistribution.
22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
23217365Sjkim *    of any contributors may be used to endorse or promote products derived
24217365Sjkim *    from this software without specific prior written permission.
2567754Smsmith *
26217365Sjkim * Alternatively, this software may be distributed under the terms of the
27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
28217365Sjkim * Software Foundation.
2967754Smsmith *
30217365Sjkim * NO WARRANTY
31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41217365Sjkim * POSSIBILITY OF SUCH DAMAGES.
42217365Sjkim */
4367754Smsmith
4477424Smsmith#ifndef _ACUTILS_H
4577424Smsmith#define _ACUTILS_H
4667754Smsmith
4767754Smsmith
48167802Sjkimextern const UINT8                      AcpiGbl_ResourceAmlSizes[];
49167802Sjkim
50167802Sjkim/* Strings used by the disassembler and debugger resource dump routines */
51167802Sjkim
52167802Sjkim#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
53167802Sjkim
54167802Sjkimextern const char                       *AcpiGbl_BmDecode[];
55167802Sjkimextern const char                       *AcpiGbl_ConfigDecode[];
56167802Sjkimextern const char                       *AcpiGbl_ConsumeDecode[];
57167802Sjkimextern const char                       *AcpiGbl_DecDecode[];
58167802Sjkimextern const char                       *AcpiGbl_HeDecode[];
59167802Sjkimextern const char                       *AcpiGbl_IoDecode[];
60167802Sjkimextern const char                       *AcpiGbl_LlDecode[];
61167802Sjkimextern const char                       *AcpiGbl_MaxDecode[];
62167802Sjkimextern const char                       *AcpiGbl_MemDecode[];
63167802Sjkimextern const char                       *AcpiGbl_MinDecode[];
64167802Sjkimextern const char                       *AcpiGbl_MtpDecode[];
65167802Sjkimextern const char                       *AcpiGbl_RngDecode[];
66167802Sjkimextern const char                       *AcpiGbl_RwDecode[];
67167802Sjkimextern const char                       *AcpiGbl_ShrDecode[];
68167802Sjkimextern const char                       *AcpiGbl_SizDecode[];
69167802Sjkimextern const char                       *AcpiGbl_TrsDecode[];
70167802Sjkimextern const char                       *AcpiGbl_TtpDecode[];
71167802Sjkimextern const char                       *AcpiGbl_TypDecode[];
72167802Sjkim#endif
73167802Sjkim
74167802Sjkim/* Types for Resource descriptor entries */
75167802Sjkim
76167802Sjkim#define ACPI_INVALID_RESOURCE           0
77167802Sjkim#define ACPI_FIXED_LENGTH               1
78167802Sjkim#define ACPI_VARIABLE_LENGTH            2
79167802Sjkim#define ACPI_SMALL_VARIABLE_LENGTH      3
80167802Sjkim
8173561Smsmithtypedef
82167802SjkimACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
83167802Sjkim    UINT8                   *Aml,
84167802Sjkim    UINT32                  Length,
85167802Sjkim    UINT32                  Offset,
86167802Sjkim    UINT8                   ResourceIndex,
87167802Sjkim    void                    *Context);
88167802Sjkim
89167802Sjkimtypedef
9073561SmsmithACPI_STATUS (*ACPI_PKG_CALLBACK) (
9173561Smsmith    UINT8                   ObjectType,
9273561Smsmith    ACPI_OPERAND_OBJECT     *SourceObject,
9373561Smsmith    ACPI_GENERIC_STATE      *State,
9473561Smsmith    void                    *Context);
9573561Smsmith
9673561Smsmithtypedef struct acpi_pkg_info
9773561Smsmith{
9873561Smsmith    UINT8                   *FreeSpace;
9991116Smsmith    ACPI_SIZE               Length;
10073561Smsmith    UINT32                  ObjectSpace;
10173561Smsmith    UINT32                  NumPackages;
102114237Snjl
10373561Smsmith} ACPI_PKG_INFO;
10473561Smsmith
10567754Smsmith#define REF_INCREMENT       (UINT16) 0
10667754Smsmith#define REF_DECREMENT       (UINT16) 1
10767754Smsmith#define REF_FORCE_DELETE    (UINT16) 2
10867754Smsmith
10977424Smsmith/* AcpiUtDumpBuffer */
11067754Smsmith
11167754Smsmith#define DB_BYTE_DISPLAY     1
11267754Smsmith#define DB_WORD_DISPLAY     2
11367754Smsmith#define DB_DWORD_DISPLAY    4
11467754Smsmith#define DB_QWORD_DISPLAY    8
11567754Smsmith
11667754Smsmith
11767754Smsmith/*
118151937Sjkim * utglobal - Global data structures and procedures
11967754Smsmith */
120193267SjkimACPI_STATUS
121151937SjkimAcpiUtInitGlobals (
12267754Smsmith    void);
12367754Smsmith
124102550Siwasaki#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
12569746Smsmith
126114237Snjlchar *
12777424SmsmithAcpiUtGetMutexName (
12867754Smsmith    UINT32                  MutexId);
12967754Smsmith
130193267Sjkimconst char *
131193267SjkimAcpiUtGetNotifyName (
132193267Sjkim    UINT32                  NotifyValue);
133193267Sjkim
134100966Siwasaki#endif
135100966Siwasaki
136114237Snjlchar *
13777424SmsmithAcpiUtGetTypeName (
13891116Smsmith    ACPI_OBJECT_TYPE        Type);
13967754Smsmith
140114237Snjlchar *
141123315SnjlAcpiUtGetNodeName (
142123315Snjl    void                    *Object);
143123315Snjl
144123315Snjlchar *
145123315SnjlAcpiUtGetDescriptorName (
146123315Snjl    void                    *Object);
147123315Snjl
148193267Sjkimconst char *
149193267SjkimAcpiUtGetReferenceName (
150193267Sjkim    ACPI_OPERAND_OBJECT     *Object);
151193267Sjkim
152123315Snjlchar *
15399679SiwasakiAcpiUtGetObjectTypeName (
15499679Siwasaki    ACPI_OPERAND_OBJECT     *ObjDesc);
15599679Siwasaki
156114237Snjlchar *
15777424SmsmithAcpiUtGetRegionName (
15869746Smsmith    UINT8                   SpaceId);
15969746Smsmith
160114237Snjlchar *
16191116SmsmithAcpiUtGetEventName (
16291116Smsmith    UINT32                  EventId);
16369746Smsmith
16499679Siwasakichar
16582367SmsmithAcpiUtHexToAsciiChar (
166202771Sjkim    UINT64                  Integer,
16782367Smsmith    UINT32                  Position);
16882367Smsmith
16967754SmsmithBOOLEAN
17077424SmsmithAcpiUtValidObjectType (
17191116Smsmith    ACPI_OBJECT_TYPE        Type);
17267754Smsmith
17367754Smsmith
174151937Sjkim/*
175151937Sjkim * utinit - miscellaneous initialization and shutdown
176151937Sjkim */
177151937SjkimACPI_STATUS
178151937SjkimAcpiUtHardwareInitialize (
179151937Sjkim    void);
18067754Smsmith
181151937Sjkimvoid
182151937SjkimAcpiUtSubsystemShutdown (
183151937Sjkim    void);
184151937Sjkim
185151937Sjkim
18667754Smsmith/*
187151937Sjkim * utclib - Local implementations of C library functions
18867754Smsmith */
18971867Smsmith#ifndef ACPI_USE_SYSTEM_CLIBRARY
19071867Smsmith
191104470SiwasakiACPI_SIZE
19277424SmsmithAcpiUtStrlen (
193114237Snjl    const char              *String);
19467754Smsmith
195114237Snjlchar *
19677424SmsmithAcpiUtStrcpy (
197114237Snjl    char                    *DstString,
198114237Snjl    const char              *SrcString);
19967754Smsmith
200114237Snjlchar *
20177424SmsmithAcpiUtStrncpy (
202114237Snjl    char                    *DstString,
203114237Snjl    const char              *SrcString,
204104470Siwasaki    ACPI_SIZE               Count);
20567754Smsmith
20699679Siwasakiint
207138287SmarksAcpiUtMemcmp (
208138287Smarks    const char              *Buffer1,
209138287Smarks    const char              *Buffer2,
210138287Smarks    ACPI_SIZE               Count);
211138287Smarks
212138287Smarksint
21377424SmsmithAcpiUtStrncmp (
214114237Snjl    const char              *String1,
215114237Snjl    const char              *String2,
216104470Siwasaki    ACPI_SIZE               Count);
21767754Smsmith
218104470Siwasakiint
21977424SmsmithAcpiUtStrcmp (
220114237Snjl    const char              *String1,
221114237Snjl    const char              *String2);
22267754Smsmith
223114237Snjlchar *
22477424SmsmithAcpiUtStrcat (
225114237Snjl    char                    *DstString,
226114237Snjl    const char              *SrcString);
22767754Smsmith
228114237Snjlchar *
22977424SmsmithAcpiUtStrncat (
230114237Snjl    char                    *DstString,
231114237Snjl    const char              *SrcString,
232104470Siwasaki    ACPI_SIZE               Count);
23367754Smsmith
23467754SmsmithUINT32
23577424SmsmithAcpiUtStrtoul (
236114237Snjl    const char              *String,
237114237Snjl    char                    **Terminator,
23877424Smsmith    UINT32                  Base);
23967754Smsmith
240114237Snjlchar *
24177424SmsmithAcpiUtStrstr (
242114237Snjl    char                    *String1,
243114237Snjl    char                    *String2);
24467754Smsmith
24567754Smsmithvoid *
24677424SmsmithAcpiUtMemcpy (
24767754Smsmith    void                    *Dest,
24867754Smsmith    const void              *Src,
249104470Siwasaki    ACPI_SIZE               Count);
25067754Smsmith
25167754Smsmithvoid *
25277424SmsmithAcpiUtMemset (
25367754Smsmith    void                    *Dest,
254193267Sjkim    UINT8                   Value,
255104470Siwasaki    ACPI_SIZE               Count);
25667754Smsmith
25799679Siwasakiint
25877424SmsmithAcpiUtToUpper (
25999679Siwasaki    int                     c);
26067754Smsmith
26199679Siwasakiint
26277424SmsmithAcpiUtToLower (
26399679Siwasaki    int                     c);
26467754Smsmith
26599679Siwasakiextern const UINT8 _acpi_ctype[];
26699679Siwasaki
26799679Siwasaki#define _ACPI_XA     0x00    /* extra alphabetic - not supported */
26899679Siwasaki#define _ACPI_XS     0x40    /* extra space */
26999679Siwasaki#define _ACPI_BB     0x00    /* BEL, BS, etc. - not supported */
27099679Siwasaki#define _ACPI_CN     0x20    /* CR, FF, HT, NL, VT */
27199679Siwasaki#define _ACPI_DI     0x04    /* '0'-'9' */
27299679Siwasaki#define _ACPI_LO     0x02    /* 'a'-'z' */
27399679Siwasaki#define _ACPI_PU     0x10    /* punctuation */
27499679Siwasaki#define _ACPI_SP     0x08    /* space */
27599679Siwasaki#define _ACPI_UP     0x01    /* 'A'-'Z' */
27699679Siwasaki#define _ACPI_XD     0x80    /* '0'-'9', 'A'-'F', 'a'-'f' */
27799679Siwasaki
27899679Siwasaki#define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
27999679Siwasaki#define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
28099679Siwasaki#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
28199679Siwasaki#define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
28299679Siwasaki#define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
283100966Siwasaki#define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
284100966Siwasaki#define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
28599679Siwasaki
286193267Sjkim#endif /* !ACPI_USE_SYSTEM_CLIBRARY */
28767754Smsmith
288193267Sjkim#define ACPI_IS_ASCII(c)  ((c) < 0x80)
289151937Sjkim
290193267Sjkim
29167754Smsmith/*
292151937Sjkim * utcopy - Object construction and conversion interfaces
29367754Smsmith */
29467754SmsmithACPI_STATUS
29577424SmsmithAcpiUtBuildSimpleObject(
29667754Smsmith    ACPI_OPERAND_OBJECT     *Obj,
29767754Smsmith    ACPI_OBJECT             *UserObj,
29867754Smsmith    UINT8                   *DataSpace,
29967754Smsmith    UINT32                  *BufferSpaceUsed);
30067754Smsmith
30167754SmsmithACPI_STATUS
30277424SmsmithAcpiUtBuildPackageObject (
30367754Smsmith    ACPI_OPERAND_OBJECT     *Obj,
30467754Smsmith    UINT8                   *Buffer,
30567754Smsmith    UINT32                  *SpaceUsed);
30667754Smsmith
30767754SmsmithACPI_STATUS
30877424SmsmithAcpiUtCopyIobjectToEobject (
30967754Smsmith    ACPI_OPERAND_OBJECT     *Obj,
31067754Smsmith    ACPI_BUFFER             *RetBuffer);
31167754Smsmith
31267754SmsmithACPI_STATUS
31377424SmsmithAcpiUtCopyEobjectToIobject (
31467754Smsmith    ACPI_OBJECT             *Obj,
31584491Smsmith    ACPI_OPERAND_OBJECT     **InternalObj);
31667754Smsmith
31767754SmsmithACPI_STATUS
31877424SmsmithAcpiUtCopyISimpleToIsimple (
31967754Smsmith    ACPI_OPERAND_OBJECT     *SourceObj,
32067754Smsmith    ACPI_OPERAND_OBJECT     *DestObj);
32167754Smsmith
32267754SmsmithACPI_STATUS
32391116SmsmithAcpiUtCopyIobjectToIobject (
32491116Smsmith    ACPI_OPERAND_OBJECT     *SourceDesc,
32591116Smsmith    ACPI_OPERAND_OBJECT     **DestDesc,
32691116Smsmith    ACPI_WALK_STATE         *WalkState);
32791116Smsmith
32891116Smsmith
32967754Smsmith/*
330151937Sjkim * utcreate - Object creation
33167754Smsmith */
33267754SmsmithACPI_STATUS
33377424SmsmithAcpiUtUpdateObjectReference (
33467754Smsmith    ACPI_OPERAND_OBJECT     *Object,
33567754Smsmith    UINT16                  Action);
33667754Smsmith
33767754Smsmith
33867754Smsmith/*
339151937Sjkim * utdebug - Debug interfaces
34067754Smsmith */
34183174Smsmithvoid
34283174SmsmithAcpiUtInitStackPtrTrace (
34367754Smsmith    void);
34467754Smsmith
34567754Smsmithvoid
34683174SmsmithAcpiUtTrackStackPtr (
34783174Smsmith    void);
34867754Smsmith
34967754Smsmithvoid
35083174SmsmithAcpiUtTrace (
35167754Smsmith    UINT32                  LineNumber,
352151937Sjkim    const char              *FunctionName,
353193267Sjkim    const char              *ModuleName,
354151937Sjkim    UINT32                  ComponentId);
35567754Smsmith
35667754Smsmithvoid
35783174SmsmithAcpiUtTracePtr (
35867754Smsmith    UINT32                  LineNumber,
359151937Sjkim    const char              *FunctionName,
360193267Sjkim    const char              *ModuleName,
361151937Sjkim    UINT32                  ComponentId,
36267754Smsmith    void                    *Pointer);
36367754Smsmith
36467754Smsmithvoid
36583174SmsmithAcpiUtTraceU32 (
36667754Smsmith    UINT32                  LineNumber,
367151937Sjkim    const char              *FunctionName,
368193267Sjkim    const char              *ModuleName,
369151937Sjkim    UINT32                  ComponentId,
37067754Smsmith    UINT32                  Integer);
37167754Smsmith
37267754Smsmithvoid
37383174SmsmithAcpiUtTraceStr (
37467754Smsmith    UINT32                  LineNumber,
375151937Sjkim    const char              *FunctionName,
376193267Sjkim    const char              *ModuleName,
377151937Sjkim    UINT32                  ComponentId,
378114237Snjl    char                    *String);
37967754Smsmith
38067754Smsmithvoid
38183174SmsmithAcpiUtExit (
38267754Smsmith    UINT32                  LineNumber,
383151937Sjkim    const char              *FunctionName,
384193267Sjkim    const char              *ModuleName,
385151937Sjkim    UINT32                  ComponentId);
38667754Smsmith
38767754Smsmithvoid
38883174SmsmithAcpiUtStatusExit (
38967754Smsmith    UINT32                  LineNumber,
390151937Sjkim    const char              *FunctionName,
391193267Sjkim    const char              *ModuleName,
392151937Sjkim    UINT32                  ComponentId,
39367754Smsmith    ACPI_STATUS             Status);
39467754Smsmith
39567754Smsmithvoid
39683174SmsmithAcpiUtValueExit (
39767754Smsmith    UINT32                  LineNumber,
398151937Sjkim    const char              *FunctionName,
399193267Sjkim    const char              *ModuleName,
400151937Sjkim    UINT32                  ComponentId,
401202771Sjkim    UINT64                  Value);
40267754Smsmith
40367754Smsmithvoid
40483174SmsmithAcpiUtPtrExit (
40567754Smsmith    UINT32                  LineNumber,
406151937Sjkim    const char              *FunctionName,
407193267Sjkim    const char              *ModuleName,
408151937Sjkim    UINT32                  ComponentId,
40967754Smsmith    UINT8                   *Ptr);
41067754Smsmith
41167754Smsmithvoid
412167802SjkimAcpiUtDumpBuffer (
413167802Sjkim    UINT8                   *Buffer,
414167802Sjkim    UINT32                  Count,
415167802Sjkim    UINT32                  Display,
416167802Sjkim    UINT32                  componentId);
41767754Smsmith
41867754Smsmithvoid
419167802SjkimAcpiUtDumpBuffer2 (
420167802Sjkim    UINT8                   *Buffer,
421167802Sjkim    UINT32                  Count,
422167802Sjkim    UINT32                  Display);
423167802Sjkim
424167802Sjkimvoid
42583174SmsmithAcpiUtReportError (
426114237Snjl    char                    *ModuleName,
427167802Sjkim    UINT32                  LineNumber);
42867754Smsmith
42967754Smsmithvoid
430167802SjkimAcpiUtReportInfo (
431114237Snjl    char                    *ModuleName,
432167802Sjkim    UINT32                  LineNumber);
43367754Smsmith
43467754Smsmithvoid
435167802SjkimAcpiUtReportWarning (
436167802Sjkim    char                    *ModuleName,
437167802Sjkim    UINT32                  LineNumber);
43867754Smsmith
43967754Smsmith/*
440151937Sjkim * utdelete - Object deletion and reference counts
44167754Smsmith */
442151937Sjkimvoid
443151937SjkimAcpiUtAddReference (
444151937Sjkim    ACPI_OPERAND_OBJECT     *Object);
44567754Smsmith
44667754Smsmithvoid
447151937SjkimAcpiUtRemoveReference (
44867754Smsmith    ACPI_OPERAND_OBJECT     *Object);
44967754Smsmith
45067754Smsmithvoid
45177424SmsmithAcpiUtDeleteInternalPackageObject (
45267754Smsmith    ACPI_OPERAND_OBJECT     *Object);
45367754Smsmith
45467754Smsmithvoid
45577424SmsmithAcpiUtDeleteInternalSimpleObject (
45667754Smsmith    ACPI_OPERAND_OBJECT     *Object);
45767754Smsmith
45899679Siwasakivoid
45977424SmsmithAcpiUtDeleteInternalObjectList (
46067754Smsmith    ACPI_OPERAND_OBJECT     **ObjList);
46167754Smsmith
46267754Smsmith
46367754Smsmith/*
464151937Sjkim * uteval - object evaluation
46567754Smsmith */
46667754SmsmithACPI_STATUS
467114237SnjlAcpiUtEvaluateObject (
468114237Snjl    ACPI_NAMESPACE_NODE     *PrefixNode,
469114237Snjl    char                    *Path,
470114237Snjl    UINT32                  ExpectedReturnBtypes,
471114237Snjl    ACPI_OPERAND_OBJECT     **ReturnDesc);
472114237Snjl
473114237SnjlACPI_STATUS
47477424SmsmithAcpiUtEvaluateNumericObject (
475114237Snjl    char                    *ObjectName,
47667754Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
477202771Sjkim    UINT64                  *Value);
47867754Smsmith
47967754SmsmithACPI_STATUS
480197104SjkimAcpiUtExecute_STA (
48167754Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
482197104Sjkim    UINT32                  *StatusFlags);
48367754Smsmith
48467754SmsmithACPI_STATUS
485197104SjkimAcpiUtExecutePowerMethods (
48687031Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
487197104Sjkim    const char              **MethodNames,
488197104Sjkim    UINT8                   MethodCount,
489197104Sjkim    UINT8                   *OutValues);
49087031Smsmith
491197104Sjkim
492197104Sjkim/*
493197104Sjkim * utids - device ID support
494197104Sjkim */
49587031SmsmithACPI_STATUS
496197104SjkimAcpiUtExecute_HID (
49767754Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
498197104Sjkim    ACPI_DEVICE_ID          **ReturnId);
49967754Smsmith
50067754SmsmithACPI_STATUS
50177424SmsmithAcpiUtExecute_UID (
50267754Smsmith    ACPI_NAMESPACE_NODE     *DeviceNode,
503197104Sjkim    ACPI_DEVICE_ID          **ReturnId);
50467754Smsmith
505126372SnjlACPI_STATUS
506197104SjkimAcpiUtExecute_CID (
507126372Snjl    ACPI_NAMESPACE_NODE     *DeviceNode,
508197104Sjkim    ACPI_DEVICE_ID_LIST     **ReturnCidList);
50967754Smsmith
510197104Sjkim
511193267Sjkim/*
512193267Sjkim * utlock - reader/writer locks
513193267Sjkim */
514193267SjkimACPI_STATUS
515193267SjkimAcpiUtCreateRwLock (
516193267Sjkim    ACPI_RW_LOCK            *Lock);
51767754Smsmith
518193267Sjkimvoid
519193267SjkimAcpiUtDeleteRwLock (
520193267Sjkim    ACPI_RW_LOCK            *Lock);
521193267Sjkim
522193267SjkimACPI_STATUS
523193267SjkimAcpiUtAcquireReadLock (
524193267Sjkim    ACPI_RW_LOCK            *Lock);
525193267Sjkim
526193267SjkimACPI_STATUS
527193267SjkimAcpiUtReleaseReadLock (
528193267Sjkim    ACPI_RW_LOCK            *Lock);
529193267Sjkim
530193267SjkimACPI_STATUS
531193267SjkimAcpiUtAcquireWriteLock (
532193267Sjkim    ACPI_RW_LOCK            *Lock);
533193267Sjkim
534193267Sjkimvoid
535193267SjkimAcpiUtReleaseWriteLock (
536193267Sjkim    ACPI_RW_LOCK            *Lock);
537193267Sjkim
538193267Sjkim
53967754Smsmith/*
540151937Sjkim * utobject - internal object create/delete/cache routines
54167754Smsmith */
54283174SmsmithACPI_OPERAND_OBJECT  *
54383174SmsmithAcpiUtCreateInternalObjectDbg (
544193267Sjkim    const char              *ModuleName,
54583174Smsmith    UINT32                  LineNumber,
54683174Smsmith    UINT32                  ComponentId,
54791116Smsmith    ACPI_OBJECT_TYPE        Type);
54883174Smsmith
54967754Smsmithvoid *
55083174SmsmithAcpiUtAllocateObjectDescDbg (
551193267Sjkim    const char              *ModuleName,
55267754Smsmith    UINT32                  LineNumber,
55367754Smsmith    UINT32                  ComponentId);
55467754Smsmith
555151937Sjkim#define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
556151937Sjkim#define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
55767754Smsmith
55867754Smsmithvoid
55977424SmsmithAcpiUtDeleteObjectDesc (
56067754Smsmith    ACPI_OPERAND_OBJECT     *Object);
56167754Smsmith
56267754SmsmithBOOLEAN
56377424SmsmithAcpiUtValidInternalObject (
56467754Smsmith    void                    *Object);
56567754Smsmith
566107325SiwasakiACPI_OPERAND_OBJECT *
567193267SjkimAcpiUtCreatePackageObject (
568193267Sjkim    UINT32                  Count);
569193267Sjkim
570193267SjkimACPI_OPERAND_OBJECT *
571199337SjkimAcpiUtCreateIntegerObject (
572199337Sjkim    UINT64                  Value);
573199337Sjkim
574199337SjkimACPI_OPERAND_OBJECT *
575107325SiwasakiAcpiUtCreateBufferObject (
576107325Siwasaki    ACPI_SIZE               BufferSize);
57767754Smsmith
578138287SmarksACPI_OPERAND_OBJECT *
579138287SmarksAcpiUtCreateStringObject (
580138287Smarks    ACPI_SIZE               StringSize);
581107325Siwasaki
58267754SmsmithACPI_STATUS
58377424SmsmithAcpiUtGetObjectSize(
58467754Smsmith    ACPI_OPERAND_OBJECT     *Obj,
58591116Smsmith    ACPI_SIZE               *ObjLength);
58667754Smsmith
58767754Smsmith
58867754Smsmith/*
589210976Sjkim * utosi - Support for the _OSI predefined control method
590210976Sjkim */
591210976SjkimACPI_STATUS
592210976SjkimAcpiUtInitializeInterfaces (
593210976Sjkim    void);
594210976Sjkim
595210976Sjkimvoid
596210976SjkimAcpiUtInterfaceTerminate (
597210976Sjkim    void);
598210976Sjkim
599210976SjkimACPI_STATUS
600210976SjkimAcpiUtInstallInterface (
601210976Sjkim    ACPI_STRING             InterfaceName);
602210976Sjkim
603210976SjkimACPI_STATUS
604210976SjkimAcpiUtRemoveInterface (
605210976Sjkim    ACPI_STRING             InterfaceName);
606210976Sjkim
607210976SjkimACPI_INTERFACE_INFO *
608210976SjkimAcpiUtGetInterface (
609210976Sjkim    ACPI_STRING             InterfaceName);
610210976Sjkim
611210976SjkimACPI_STATUS
612210976SjkimAcpiUtOsiImplementation (
613210976Sjkim    ACPI_WALK_STATE         *WalkState);
614210976Sjkim
615210976Sjkim
616210976Sjkim/*
617151937Sjkim * utstate - Generic state creation/cache routines
61867754Smsmith */
61967754Smsmithvoid
62077424SmsmithAcpiUtPushGenericState (
62167754Smsmith    ACPI_GENERIC_STATE      **ListHead,
62267754Smsmith    ACPI_GENERIC_STATE      *State);
62367754Smsmith
62467754SmsmithACPI_GENERIC_STATE *
62577424SmsmithAcpiUtPopGenericState (
62667754Smsmith    ACPI_GENERIC_STATE      **ListHead);
62767754Smsmith
62867754Smsmith
62967754SmsmithACPI_GENERIC_STATE *
63077424SmsmithAcpiUtCreateGenericState (
63167754Smsmith    void);
63267754Smsmith
63387031SmsmithACPI_THREAD_STATE *
63487031SmsmithAcpiUtCreateThreadState (
63587031Smsmith    void);
63687031Smsmith
63767754SmsmithACPI_GENERIC_STATE *
63877424SmsmithAcpiUtCreateUpdateState (
63967754Smsmith    ACPI_OPERAND_OBJECT     *Object,
64067754Smsmith    UINT16                  Action);
64167754Smsmith
64273561SmsmithACPI_GENERIC_STATE *
64377424SmsmithAcpiUtCreatePkgState (
64473561Smsmith    void                    *InternalObject,
64573561Smsmith    void                    *ExternalObject,
64673561Smsmith    UINT16                  Index);
64773561Smsmith
64867754SmsmithACPI_STATUS
64977424SmsmithAcpiUtCreateUpdateStateAndPush (
65067754Smsmith    ACPI_OPERAND_OBJECT     *Object,
65167754Smsmith    UINT16                  Action,
65267754Smsmith    ACPI_GENERIC_STATE      **StateList);
65367754Smsmith
65473561SmsmithACPI_STATUS
65577424SmsmithAcpiUtCreatePkgStateAndPush (
65673561Smsmith    void                    *InternalObject,
65773561Smsmith    void                    *ExternalObject,
65873561Smsmith    UINT16                  Index,
65973561Smsmith    ACPI_GENERIC_STATE      **StateList);
66073561Smsmith
66167754SmsmithACPI_GENERIC_STATE *
66277424SmsmithAcpiUtCreateControlState (
66367754Smsmith    void);
66467754Smsmith
66567754Smsmithvoid
66677424SmsmithAcpiUtDeleteGenericState (
66767754Smsmith    ACPI_GENERIC_STATE      *State);
66867754Smsmith
66967754Smsmith
67067754Smsmith/*
671151937Sjkim * utmath
67267754Smsmith */
67384491SmsmithACPI_STATUS
67484491SmsmithAcpiUtDivide (
675202771Sjkim    UINT64                  InDividend,
676202771Sjkim    UINT64                  InDivisor,
677202771Sjkim    UINT64                  *OutQuotient,
678202771Sjkim    UINT64                  *OutRemainder);
67984491Smsmith
68084491SmsmithACPI_STATUS
68184491SmsmithAcpiUtShortDivide (
682202771Sjkim    UINT64                  InDividend,
68384491Smsmith    UINT32                  Divisor,
684202771Sjkim    UINT64                  *OutQuotient,
68584491Smsmith    UINT32                  *OutRemainder);
68684491Smsmith
687151937Sjkim/*
688151937Sjkim * utmisc
689151937Sjkim */
690167802Sjkimconst char *
691167802SjkimAcpiUtValidateException (
692167802Sjkim    ACPI_STATUS             Status);
693167802Sjkim
694167802SjkimBOOLEAN
695197104SjkimAcpiUtIsPciRootBridge (
696197104Sjkim    char                    *Id);
697197104Sjkim
698197104SjkimBOOLEAN
699167802SjkimAcpiUtIsAmlTable (
700167802Sjkim    ACPI_TABLE_HEADER       *Table);
701167802Sjkim
702151937SjkimACPI_STATUS
703151937SjkimAcpiUtAllocateOwnerId (
704151937Sjkim    ACPI_OWNER_ID           *OwnerId);
705151937Sjkim
706151937Sjkimvoid
707151937SjkimAcpiUtReleaseOwnerId (
708151937Sjkim    ACPI_OWNER_ID           *OwnerId);
709151937Sjkim
710151937SjkimACPI_STATUS
711151937SjkimAcpiUtWalkPackageTree (
712151937Sjkim    ACPI_OPERAND_OBJECT     *SourceObject,
713151937Sjkim    void                    *TargetObject,
714151937Sjkim    ACPI_PKG_CALLBACK       WalkCallback,
715151937Sjkim    void                    *Context);
716151937Sjkim
717151937Sjkimvoid
718151937SjkimAcpiUtStrupr (
719151937Sjkim    char                    *SrcString);
720151937Sjkim
721151937Sjkimvoid
722209746SjkimAcpiUtStrlwr (
723209746Sjkim    char                    *SrcString);
724209746Sjkim
725209746Sjkimvoid
726151937SjkimAcpiUtPrintString (
727151937Sjkim    char                    *String,
728151937Sjkim    UINT8                   MaxLength);
729151937Sjkim
73067754SmsmithBOOLEAN
73177424SmsmithAcpiUtValidAcpiName (
73267754Smsmith    UINT32                  Name);
73367754Smsmith
734193267Sjkimvoid
735167802SjkimAcpiUtRepairName (
736167802Sjkim    char                    *Name);
737167802Sjkim
73867754SmsmithBOOLEAN
739167802SjkimAcpiUtValidAcpiChar (
740167802Sjkim    char                    Character,
741193267Sjkim    UINT32                  Position);
74267754Smsmith
74399679SiwasakiACPI_STATUS
74499679SiwasakiAcpiUtStrtoul64 (
745114237Snjl    char                    *String,
74699679Siwasaki    UINT32                  Base,
747202771Sjkim    UINT64                  *RetInteger);
74899679Siwasaki
749138287Smarks/* Values for Base above (16=Hex, 10=Decimal) */
750138287Smarks
751138287Smarks#define ACPI_ANY_BASE        0
752138287Smarks
753151937SjkimUINT32
75499679SiwasakiAcpiUtDwordByteSwap (
75599679Siwasaki    UINT32                  Value);
75699679Siwasaki
75799679Siwasakivoid
75899679SiwasakiAcpiUtSetIntegerWidth (
75999679Siwasaki    UINT8                   Revision);
76099679Siwasaki
761102550Siwasaki#ifdef ACPI_DEBUG_OUTPUT
76273561Smsmithvoid
76377424SmsmithAcpiUtDisplayInitPathname (
764114237Snjl    UINT8                   Type,
765114237Snjl    ACPI_NAMESPACE_NODE     *ObjHandle,
76673561Smsmith    char                    *Path);
76773561Smsmith#endif
76873561Smsmith
76973561Smsmith
77067754Smsmith/*
771167802Sjkim * utresrc
772167802Sjkim */
773167802SjkimACPI_STATUS
774167802SjkimAcpiUtWalkAmlResources (
775167802Sjkim    UINT8                   *Aml,
776167802Sjkim    ACPI_SIZE               AmlLength,
777167802Sjkim    ACPI_WALK_AML_CALLBACK  UserFunction,
778167802Sjkim    void                    *Context);
779167802Sjkim
780167802SjkimACPI_STATUS
781167802SjkimAcpiUtValidateResource (
782167802Sjkim    void                    *Aml,
783167802Sjkim    UINT8                   *ReturnIndex);
784167802Sjkim
785167802SjkimUINT32
786167802SjkimAcpiUtGetDescriptorLength (
787167802Sjkim    void                    *Aml);
788167802Sjkim
789167802SjkimUINT16
790167802SjkimAcpiUtGetResourceLength (
791167802Sjkim    void                    *Aml);
792167802Sjkim
793167802SjkimUINT8
794167802SjkimAcpiUtGetResourceHeaderLength (
795167802Sjkim    void                    *Aml);
796167802Sjkim
797167802SjkimUINT8
798167802SjkimAcpiUtGetResourceType (
799167802Sjkim    void                    *Aml);
800167802Sjkim
801167802SjkimACPI_STATUS
802167802SjkimAcpiUtGetResourceEndTag (
803167802Sjkim    ACPI_OPERAND_OBJECT     *ObjDesc,
804167802Sjkim    UINT8                   **EndTag);
805167802Sjkim
806167802Sjkim
807167802Sjkim/*
808151937Sjkim * utmutex - mutex support
80967754Smsmith */
810151937SjkimACPI_STATUS
811151937SjkimAcpiUtMutexInitialize (
812151937Sjkim    void);
81367754Smsmith
81482367Smsmithvoid
815151937SjkimAcpiUtMutexTerminate (
816151937Sjkim    void);
81782367Smsmith
818151937SjkimACPI_STATUS
819151937SjkimAcpiUtAcquireMutex (
820151937Sjkim    ACPI_MUTEX_HANDLE       MutexId);
82182367Smsmith
82291116SmsmithACPI_STATUS
823151937SjkimAcpiUtReleaseMutex (
824151937Sjkim    ACPI_MUTEX_HANDLE       MutexId);
825151937Sjkim
826151937Sjkim
827151937Sjkim/*
828151937Sjkim * utalloc - memory allocation and object caching
829151937Sjkim */
830151937SjkimACPI_STATUS
831151937SjkimAcpiUtCreateCaches (
832151937Sjkim    void);
833151937Sjkim
834151937SjkimACPI_STATUS
835151937SjkimAcpiUtDeleteCaches (
836151937Sjkim    void);
837151937Sjkim
838151937SjkimACPI_STATUS
83991116SmsmithAcpiUtValidateBuffer (
84091116Smsmith    ACPI_BUFFER             *Buffer);
84182367Smsmith
84291116SmsmithACPI_STATUS
84391116SmsmithAcpiUtInitializeBuffer (
84491116Smsmith    ACPI_BUFFER             *Buffer,
84591116Smsmith    ACPI_SIZE               RequiredLength);
84682367Smsmith
84782367Smsmithvoid *
84880062SmsmithAcpiUtAllocate (
84991116Smsmith    ACPI_SIZE               Size,
85067754Smsmith    UINT32                  Component,
851193267Sjkim    const char              *Module,
85267754Smsmith    UINT32                  Line);
85367754Smsmith
85467754Smsmithvoid *
855167802SjkimAcpiUtAllocateZeroed (
85691116Smsmith    ACPI_SIZE               Size,
85767754Smsmith    UINT32                  Component,
858193267Sjkim    const char              *Module,
85967754Smsmith    UINT32                  Line);
86067754Smsmith
86191116Smsmith#ifdef ACPI_DBG_TRACK_ALLOCATIONS
86291116Smsmithvoid *
86391116SmsmithAcpiUtAllocateAndTrack (
86491116Smsmith    ACPI_SIZE               Size,
86591116Smsmith    UINT32                  Component,
866193267Sjkim    const char              *Module,
86791116Smsmith    UINT32                  Line);
86891116Smsmith
86991116Smsmithvoid *
870167802SjkimAcpiUtAllocateZeroedAndTrack (
87191116Smsmith    ACPI_SIZE               Size,
87291116Smsmith    UINT32                  Component,
873193267Sjkim    const char              *Module,
87491116Smsmith    UINT32                  Line);
87591116Smsmith
87667754Smsmithvoid
87791116SmsmithAcpiUtFreeAndTrack (
87867754Smsmith    void                    *Address,
87967754Smsmith    UINT32                  Component,
880193267Sjkim    const char              *Module,
88167754Smsmith    UINT32                  Line);
88299679Siwasaki
88367754Smsmithvoid
88477424SmsmithAcpiUtDumpAllocationInfo (
88567754Smsmith    void);
88667754Smsmith
88767754Smsmithvoid
88884491SmsmithAcpiUtDumpAllocations (
88967754Smsmith    UINT32                  Component,
890193267Sjkim    const char              *Module);
891167802Sjkim
892167802SjkimACPI_STATUS
893167802SjkimAcpiUtCreateList (
894167802Sjkim    char                    *ListName,
895167802Sjkim    UINT16                  ObjectSize,
896167802Sjkim    ACPI_MEMORY_LIST        **ReturnCache);
897167802Sjkim
898212761Sjkim#endif /* ACPI_DBG_TRACK_ALLOCATIONS */
899167802Sjkim
90067754Smsmith
901212761Sjkim/*
902212761Sjkim * utxferror - various error/warning output functions
903212761Sjkim */
904212761Sjkimvoid ACPI_INTERNAL_VAR_XFACE
905212761SjkimAcpiUtPredefinedWarning (
906212761Sjkim    const char              *ModuleName,
907212761Sjkim    UINT32                  LineNumber,
908212761Sjkim    char                    *Pathname,
909212761Sjkim    UINT8                   NodeFlags,
910212761Sjkim    const char              *Format,
911212761Sjkim    ...);
912212761Sjkim
913212761Sjkimvoid ACPI_INTERNAL_VAR_XFACE
914212761SjkimAcpiUtPredefinedInfo (
915212761Sjkim    const char              *ModuleName,
916212761Sjkim    UINT32                  LineNumber,
917212761Sjkim    char                    *Pathname,
918212761Sjkim    UINT8                   NodeFlags,
919212761Sjkim    const char              *Format,
920212761Sjkim    ...);
921212761Sjkim
922212761Sjkimvoid
923212761SjkimAcpiUtNamespaceError (
924212761Sjkim    const char              *ModuleName,
925212761Sjkim    UINT32                  LineNumber,
926212761Sjkim    const char              *InternalName,
927212761Sjkim    ACPI_STATUS             LookupStatus);
928212761Sjkim
929212761Sjkimvoid
930212761SjkimAcpiUtMethodError (
931212761Sjkim    const char              *ModuleName,
932212761Sjkim    UINT32                  LineNumber,
933212761Sjkim    const char              *Message,
934212761Sjkim    ACPI_NAMESPACE_NODE     *Node,
935212761Sjkim    const char              *Path,
936212761Sjkim    ACPI_STATUS             LookupStatus);
937212761Sjkim
93877424Smsmith#endif /* _ACUTILS_H */
939