b9a34f2203d9da5c5506a0face766b8067703302
[reactos.git] / drivers / bus / acpi / acpica / include / acnamesp.h
1 /******************************************************************************
2 *
3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2018, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44 #ifndef __ACNAMESP_H__
45 #define __ACNAMESP_H__
46
47
48 /* To search the entire name space, pass this as SearchBase */
49
50 #define ACPI_NS_ALL ((ACPI_HANDLE)0)
51
52 /*
53 * Elements of AcpiNsProperties are bit significant
54 * and should be one-to-one with values of ACPI_OBJECT_TYPE
55 */
56 #define ACPI_NS_NORMAL 0
57 #define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */
58 #define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */
59
60 /* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */
61
62 #define ACPI_NS_NO_UPSEARCH 0
63 #define ACPI_NS_SEARCH_PARENT 0x0001
64 #define ACPI_NS_DONT_OPEN_SCOPE 0x0002
65 #define ACPI_NS_NO_PEER_SEARCH 0x0004
66 #define ACPI_NS_ERROR_IF_FOUND 0x0008
67 #define ACPI_NS_PREFIX_IS_SCOPE 0x0010
68 #define ACPI_NS_EXTERNAL 0x0020
69 #define ACPI_NS_TEMPORARY 0x0040
70 #define ACPI_NS_OVERRIDE_IF_FOUND 0x0080
71 #define ACPI_NS_EARLY_INIT 0x0100
72
73 /* Flags for AcpiNsWalkNamespace */
74
75 #define ACPI_NS_WALK_NO_UNLOCK 0
76 #define ACPI_NS_WALK_UNLOCK 0x01
77 #define ACPI_NS_WALK_TEMP_NODES 0x02
78
79 /* Object is not a package element */
80
81 #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX
82 #define ACPI_ALL_PACKAGE_ELEMENTS (ACPI_UINT32_MAX-1)
83
84 /* Always emit warning message, not dependent on node flags */
85
86 #define ACPI_WARN_ALWAYS 0
87
88
89 /*
90 * nsinit - Namespace initialization
91 */
92 ACPI_STATUS
93 AcpiNsInitializeObjects (
94 void);
95
96 ACPI_STATUS
97 AcpiNsInitializeDevices (
98 UINT32 Flags);
99
100 ACPI_STATUS
101 AcpiNsInitOnePackage (
102 ACPI_HANDLE ObjHandle,
103 UINT32 Level,
104 void *Context,
105 void **ReturnValue);
106
107 /*
108 * nsload - Namespace loading
109 */
110 ACPI_STATUS
111 AcpiNsLoadNamespace (
112 void);
113
114 ACPI_STATUS
115 AcpiNsLoadTable (
116 UINT32 TableIndex,
117 ACPI_NAMESPACE_NODE *Node);
118
119
120 /*
121 * nswalk - walk the namespace
122 */
123 ACPI_STATUS
124 AcpiNsWalkNamespace (
125 ACPI_OBJECT_TYPE Type,
126 ACPI_HANDLE StartObject,
127 UINT32 MaxDepth,
128 UINT32 Flags,
129 ACPI_WALK_CALLBACK DescendingCallback,
130 ACPI_WALK_CALLBACK AscendingCallback,
131 void *Context,
132 void **ReturnValue);
133
134 ACPI_NAMESPACE_NODE *
135 AcpiNsGetNextNode (
136 ACPI_NAMESPACE_NODE *Parent,
137 ACPI_NAMESPACE_NODE *Child);
138
139 ACPI_NAMESPACE_NODE *
140 AcpiNsGetNextNodeTyped (
141 ACPI_OBJECT_TYPE Type,
142 ACPI_NAMESPACE_NODE *Parent,
143 ACPI_NAMESPACE_NODE *Child);
144
145 /*
146 * nsparse - table parsing
147 */
148 ACPI_STATUS
149 AcpiNsParseTable (
150 UINT32 TableIndex,
151 ACPI_NAMESPACE_NODE *StartNode);
152
153 ACPI_STATUS
154 AcpiNsExecuteTable (
155 UINT32 TableIndex,
156 ACPI_NAMESPACE_NODE *StartNode);
157
158 ACPI_STATUS
159 AcpiNsOneCompleteParse (
160 UINT32 PassNumber,
161 UINT32 TableIndex,
162 ACPI_NAMESPACE_NODE *StartNode);
163
164
165 /*
166 * nsaccess - Top-level namespace access
167 */
168 ACPI_STATUS
169 AcpiNsRootInitialize (
170 void);
171
172 ACPI_STATUS
173 AcpiNsLookup (
174 ACPI_GENERIC_STATE *ScopeInfo,
175 char *Name,
176 ACPI_OBJECT_TYPE Type,
177 ACPI_INTERPRETER_MODE InterpreterMode,
178 UINT32 Flags,
179 ACPI_WALK_STATE *WalkState,
180 ACPI_NAMESPACE_NODE **RetNode);
181
182
183 /*
184 * nsalloc - Named object allocation/deallocation
185 */
186 ACPI_NAMESPACE_NODE *
187 AcpiNsCreateNode (
188 UINT32 Name);
189
190 void
191 AcpiNsDeleteNode (
192 ACPI_NAMESPACE_NODE *Node);
193
194 void
195 AcpiNsRemoveNode (
196 ACPI_NAMESPACE_NODE *Node);
197
198 void
199 AcpiNsDeleteNamespaceSubtree (
200 ACPI_NAMESPACE_NODE *ParentHandle);
201
202 void
203 AcpiNsDeleteNamespaceByOwner (
204 ACPI_OWNER_ID OwnerId);
205
206 void
207 AcpiNsDetachObject (
208 ACPI_NAMESPACE_NODE *Node);
209
210 void
211 AcpiNsDeleteChildren (
212 ACPI_NAMESPACE_NODE *Parent);
213
214 int
215 AcpiNsCompareNames (
216 char *Name1,
217 char *Name2);
218
219
220 /*
221 * nsconvert - Dynamic object conversion routines
222 */
223 ACPI_STATUS
224 AcpiNsConvertToInteger (
225 ACPI_OPERAND_OBJECT *OriginalObject,
226 ACPI_OPERAND_OBJECT **ReturnObject);
227
228 ACPI_STATUS
229 AcpiNsConvertToString (
230 ACPI_OPERAND_OBJECT *OriginalObject,
231 ACPI_OPERAND_OBJECT **ReturnObject);
232
233 ACPI_STATUS
234 AcpiNsConvertToBuffer (
235 ACPI_OPERAND_OBJECT *OriginalObject,
236 ACPI_OPERAND_OBJECT **ReturnObject);
237
238 ACPI_STATUS
239 AcpiNsConvertToUnicode (
240 ACPI_NAMESPACE_NODE *Scope,
241 ACPI_OPERAND_OBJECT *OriginalObject,
242 ACPI_OPERAND_OBJECT **ReturnObject);
243
244 ACPI_STATUS
245 AcpiNsConvertToResource (
246 ACPI_NAMESPACE_NODE *Scope,
247 ACPI_OPERAND_OBJECT *OriginalObject,
248 ACPI_OPERAND_OBJECT **ReturnObject);
249
250 ACPI_STATUS
251 AcpiNsConvertToReference (
252 ACPI_NAMESPACE_NODE *Scope,
253 ACPI_OPERAND_OBJECT *OriginalObject,
254 ACPI_OPERAND_OBJECT **ReturnObject);
255
256
257 /*
258 * nsdump - Namespace dump/print utilities
259 */
260 void
261 AcpiNsDumpTables (
262 ACPI_HANDLE SearchBase,
263 UINT32 MaxDepth);
264
265 void
266 AcpiNsDumpEntry (
267 ACPI_HANDLE Handle,
268 UINT32 DebugLevel);
269
270 void
271 AcpiNsDumpPathname (
272 ACPI_HANDLE Handle,
273 const char *Msg,
274 UINT32 Level,
275 UINT32 Component);
276
277 void
278 AcpiNsPrintPathname (
279 UINT32 NumSegments,
280 const char *Pathname);
281
282 ACPI_STATUS
283 AcpiNsDumpOneObject (
284 ACPI_HANDLE ObjHandle,
285 UINT32 Level,
286 void *Context,
287 void **ReturnValue);
288
289 void
290 AcpiNsDumpObjects (
291 ACPI_OBJECT_TYPE Type,
292 UINT8 DisplayType,
293 UINT32 MaxDepth,
294 ACPI_OWNER_ID OwnerId,
295 ACPI_HANDLE StartHandle);
296
297 void
298 AcpiNsDumpObjectPaths (
299 ACPI_OBJECT_TYPE Type,
300 UINT8 DisplayType,
301 UINT32 MaxDepth,
302 ACPI_OWNER_ID OwnerId,
303 ACPI_HANDLE StartHandle);
304
305
306 /*
307 * nseval - Namespace evaluation functions
308 */
309 ACPI_STATUS
310 AcpiNsEvaluate (
311 ACPI_EVALUATE_INFO *Info);
312
313 void
314 AcpiNsExecModuleCodeList (
315 void);
316
317
318 /*
319 * nsarguments - Argument count/type checking for predefined/reserved names
320 */
321 void
322 AcpiNsCheckArgumentCount (
323 char *Pathname,
324 ACPI_NAMESPACE_NODE *Node,
325 UINT32 UserParamCount,
326 const ACPI_PREDEFINED_INFO *Info);
327
328 void
329 AcpiNsCheckAcpiCompliance (
330 char *Pathname,
331 ACPI_NAMESPACE_NODE *Node,
332 const ACPI_PREDEFINED_INFO *Predefined);
333
334 void
335 AcpiNsCheckArgumentTypes (
336 ACPI_EVALUATE_INFO *Info);
337
338
339 /*
340 * nspredef - Return value checking for predefined/reserved names
341 */
342 ACPI_STATUS
343 AcpiNsCheckReturnValue (
344 ACPI_NAMESPACE_NODE *Node,
345 ACPI_EVALUATE_INFO *Info,
346 UINT32 UserParamCount,
347 ACPI_STATUS ReturnStatus,
348 ACPI_OPERAND_OBJECT **ReturnObject);
349
350 ACPI_STATUS
351 AcpiNsCheckObjectType (
352 ACPI_EVALUATE_INFO *Info,
353 ACPI_OPERAND_OBJECT **ReturnObjectPtr,
354 UINT32 ExpectedBtypes,
355 UINT32 PackageIndex);
356
357
358 /*
359 * nsprepkg - Validation of predefined name packages
360 */
361 ACPI_STATUS
362 AcpiNsCheckPackage (
363 ACPI_EVALUATE_INFO *Info,
364 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
365
366
367 /*
368 * nsnames - Name and Scope manipulation
369 */
370 UINT32
371 AcpiNsOpensScope (
372 ACPI_OBJECT_TYPE Type);
373
374 char *
375 AcpiNsGetExternalPathname (
376 ACPI_NAMESPACE_NODE *Node);
377
378 UINT32
379 AcpiNsBuildNormalizedPath (
380 ACPI_NAMESPACE_NODE *Node,
381 char *FullPath,
382 UINT32 PathSize,
383 BOOLEAN NoTrailing);
384
385 char *
386 AcpiNsGetNormalizedPathname (
387 ACPI_NAMESPACE_NODE *Node,
388 BOOLEAN NoTrailing);
389
390 char *
391 AcpiNsBuildPrefixedPathname (
392 ACPI_GENERIC_STATE *PrefixScope,
393 const char *InternalPath);
394
395 char *
396 AcpiNsNameOfCurrentScope (
397 ACPI_WALK_STATE *WalkState);
398
399 ACPI_STATUS
400 AcpiNsHandleToName (
401 ACPI_HANDLE TargetHandle,
402 ACPI_BUFFER *Buffer);
403
404 ACPI_STATUS
405 AcpiNsHandleToPathname (
406 ACPI_HANDLE TargetHandle,
407 ACPI_BUFFER *Buffer,
408 BOOLEAN NoTrailing);
409
410 BOOLEAN
411 AcpiNsPatternMatch (
412 ACPI_NAMESPACE_NODE *ObjNode,
413 char *SearchFor);
414
415 ACPI_STATUS
416 AcpiNsGetNodeUnlocked (
417 ACPI_NAMESPACE_NODE *PrefixNode,
418 const char *ExternalPathname,
419 UINT32 Flags,
420 ACPI_NAMESPACE_NODE **OutNode);
421
422 ACPI_STATUS
423 AcpiNsGetNode (
424 ACPI_NAMESPACE_NODE *PrefixNode,
425 const char *ExternalPathname,
426 UINT32 Flags,
427 ACPI_NAMESPACE_NODE **OutNode);
428
429 ACPI_SIZE
430 AcpiNsGetPathnameLength (
431 ACPI_NAMESPACE_NODE *Node);
432
433
434 /*
435 * nsobject - Object management for namespace nodes
436 */
437 ACPI_STATUS
438 AcpiNsAttachObject (
439 ACPI_NAMESPACE_NODE *Node,
440 ACPI_OPERAND_OBJECT *Object,
441 ACPI_OBJECT_TYPE Type);
442
443 ACPI_OPERAND_OBJECT *
444 AcpiNsGetAttachedObject (
445 ACPI_NAMESPACE_NODE *Node);
446
447 ACPI_OPERAND_OBJECT *
448 AcpiNsGetSecondaryObject (
449 ACPI_OPERAND_OBJECT *ObjDesc);
450
451 ACPI_STATUS
452 AcpiNsAttachData (
453 ACPI_NAMESPACE_NODE *Node,
454 ACPI_OBJECT_HANDLER Handler,
455 void *Data);
456
457 ACPI_STATUS
458 AcpiNsDetachData (
459 ACPI_NAMESPACE_NODE *Node,
460 ACPI_OBJECT_HANDLER Handler);
461
462 ACPI_STATUS
463 AcpiNsGetAttachedData (
464 ACPI_NAMESPACE_NODE *Node,
465 ACPI_OBJECT_HANDLER Handler,
466 void **Data);
467
468
469 /*
470 * nsrepair - General return object repair for all
471 * predefined methods/objects
472 */
473 ACPI_STATUS
474 AcpiNsSimpleRepair (
475 ACPI_EVALUATE_INFO *Info,
476 UINT32 ExpectedBtypes,
477 UINT32 PackageIndex,
478 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
479
480 ACPI_STATUS
481 AcpiNsWrapWithPackage (
482 ACPI_EVALUATE_INFO *Info,
483 ACPI_OPERAND_OBJECT *OriginalObject,
484 ACPI_OPERAND_OBJECT **ObjDescPtr);
485
486 ACPI_STATUS
487 AcpiNsRepairNullElement (
488 ACPI_EVALUATE_INFO *Info,
489 UINT32 ExpectedBtypes,
490 UINT32 PackageIndex,
491 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
492
493 void
494 AcpiNsRemoveNullElements (
495 ACPI_EVALUATE_INFO *Info,
496 UINT8 PackageType,
497 ACPI_OPERAND_OBJECT *ObjDesc);
498
499
500 /*
501 * nsrepair2 - Return object repair for specific
502 * predefined methods/objects
503 */
504 ACPI_STATUS
505 AcpiNsComplexRepairs (
506 ACPI_EVALUATE_INFO *Info,
507 ACPI_NAMESPACE_NODE *Node,
508 ACPI_STATUS ValidateStatus,
509 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
510
511
512 /*
513 * nssearch - Namespace searching and entry
514 */
515 ACPI_STATUS
516 AcpiNsSearchAndEnter (
517 UINT32 EntryName,
518 ACPI_WALK_STATE *WalkState,
519 ACPI_NAMESPACE_NODE *Node,
520 ACPI_INTERPRETER_MODE InterpreterMode,
521 ACPI_OBJECT_TYPE Type,
522 UINT32 Flags,
523 ACPI_NAMESPACE_NODE **RetNode);
524
525 ACPI_STATUS
526 AcpiNsSearchOneScope (
527 UINT32 EntryName,
528 ACPI_NAMESPACE_NODE *Node,
529 ACPI_OBJECT_TYPE Type,
530 ACPI_NAMESPACE_NODE **RetNode);
531
532 void
533 AcpiNsInstallNode (
534 ACPI_WALK_STATE *WalkState,
535 ACPI_NAMESPACE_NODE *ParentNode,
536 ACPI_NAMESPACE_NODE *Node,
537 ACPI_OBJECT_TYPE Type);
538
539
540 /*
541 * nsutils - Utility functions
542 */
543 ACPI_OBJECT_TYPE
544 AcpiNsGetType (
545 ACPI_NAMESPACE_NODE *Node);
546
547 UINT32
548 AcpiNsLocal (
549 ACPI_OBJECT_TYPE Type);
550
551 void
552 AcpiNsPrintNodePathname (
553 ACPI_NAMESPACE_NODE *Node,
554 const char *Msg);
555
556 ACPI_STATUS
557 AcpiNsBuildInternalName (
558 ACPI_NAMESTRING_INFO *Info);
559
560 void
561 AcpiNsGetInternalNameLength (
562 ACPI_NAMESTRING_INFO *Info);
563
564 ACPI_STATUS
565 AcpiNsInternalizeName (
566 const char *DottedName,
567 char **ConvertedName);
568
569 ACPI_STATUS
570 AcpiNsExternalizeName (
571 UINT32 InternalNameLength,
572 const char *InternalName,
573 UINT32 *ConvertedNameLength,
574 char **ConvertedName);
575
576 ACPI_NAMESPACE_NODE *
577 AcpiNsValidateHandle (
578 ACPI_HANDLE Handle);
579
580 void
581 AcpiNsTerminate (
582 void);
583
584 #endif /* __ACNAMESP_H__ */