ReactOS  0.4.14-dev-614-gbfd8a84
rsxface.c
Go to the documentation of this file.
1 /*******************************************************************************
2  *
3  * Module Name: rsxface - Public interfaces to the resource manager
4  *
5  ******************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2019, 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 #define EXPORT_ACPI_INTERFACES
45 
46 #include "acpi.h"
47 #include "accommon.h"
48 #include "acresrc.h"
49 #include "acnamesp.h"
50 
51 #define _COMPONENT ACPI_RESOURCES
52  ACPI_MODULE_NAME ("rsxface")
53 
54 /* Local macros for 16,32-bit to 64-bit conversion */
55 
56 #define ACPI_COPY_FIELD(Out, In, Field) ((Out)->Field = (In)->Field)
57 #define ACPI_COPY_ADDRESS(Out, In) \
58  ACPI_COPY_FIELD(Out, In, ResourceType); \
59  ACPI_COPY_FIELD(Out, In, ProducerConsumer); \
60  ACPI_COPY_FIELD(Out, In, Decode); \
61  ACPI_COPY_FIELD(Out, In, MinAddressFixed); \
62  ACPI_COPY_FIELD(Out, In, MaxAddressFixed); \
63  ACPI_COPY_FIELD(Out, In, Info); \
64  ACPI_COPY_FIELD(Out, In, Address.Granularity); \
65  ACPI_COPY_FIELD(Out, In, Address.Minimum); \
66  ACPI_COPY_FIELD(Out, In, Address.Maximum); \
67  ACPI_COPY_FIELD(Out, In, Address.TranslationOffset); \
68  ACPI_COPY_FIELD(Out, In, Address.AddressLength); \
69  ACPI_COPY_FIELD(Out, In, ResourceSource);
70 
71 
72 /* Local prototypes */
73 
74 static ACPI_STATUS
77  void *Context);
78 
79 static ACPI_STATUS
83  ACPI_NAMESPACE_NODE **ReturnNode);
84 
85 
86 /*******************************************************************************
87  *
88  * FUNCTION: AcpiRsValidateParameters
89  *
90  * PARAMETERS: DeviceHandle - Handle to a device
91  * Buffer - Pointer to a data buffer
92  * ReturnNode - Pointer to where the device node is returned
93  *
94  * RETURN: Status
95  *
96  * DESCRIPTION: Common parameter validation for resource interfaces
97  *
98  ******************************************************************************/
99 
100 static ACPI_STATUS
104  ACPI_NAMESPACE_NODE **ReturnNode)
105 {
108 
109 
110  ACPI_FUNCTION_TRACE (RsValidateParameters);
111 
112 
113  /*
114  * Must have a valid handle to an ACPI device
115  */
116  if (!DeviceHandle)
117  {
119  }
120 
122  if (!Node)
123  {
125  }
126 
127  if (Node->Type != ACPI_TYPE_DEVICE)
128  {
130  }
131 
132  /*
133  * Validate the user buffer object
134  *
135  * if there is a non-zero buffer length we also need a valid pointer in
136  * the buffer. If it's a zero buffer length, we'll be returning the
137  * needed buffer size (later), so keep going.
138  */
140  if (ACPI_FAILURE (Status))
141  {
143  }
144 
145  *ReturnNode = Node;
147 }
148 
149 
150 /*******************************************************************************
151  *
152  * FUNCTION: AcpiGetIrqRoutingTable
153  *
154  * PARAMETERS: DeviceHandle - Handle to the Bus device we are querying
155  * RetBuffer - Pointer to a buffer to receive the
156  * current resources for the device
157  *
158  * RETURN: Status
159  *
160  * DESCRIPTION: This function is called to get the IRQ routing table for a
161  * specific bus. The caller must first acquire a handle for the
162  * desired bus. The routine table is placed in the buffer pointed
163  * to by the RetBuffer variable parameter.
164  *
165  * If the function fails an appropriate status will be returned
166  * and the value of RetBuffer is undefined.
167  *
168  * This function attempts to execute the _PRT method contained in
169  * the object indicated by the passed DeviceHandle.
170  *
171  ******************************************************************************/
172 
176  ACPI_BUFFER *RetBuffer)
177 {
180 
181 
183 
184 
185  /* Validate parameters then dispatch to internal routine */
186 
188  if (ACPI_FAILURE (Status))
189  {
191  }
192 
193  Status = AcpiRsGetPrtMethodData (Node, RetBuffer);
195 }
196 
198 
199 
200 /*******************************************************************************
201  *
202  * FUNCTION: AcpiGetCurrentResources
203  *
204  * PARAMETERS: DeviceHandle - Handle to the device object for the
205  * device we are querying
206  * RetBuffer - Pointer to a buffer to receive the
207  * current resources for the device
208  *
209  * RETURN: Status
210  *
211  * DESCRIPTION: This function is called to get the current resources for a
212  * specific device. The caller must first acquire a handle for
213  * the desired device. The resource data is placed in the buffer
214  * pointed to by the RetBuffer variable parameter.
215  *
216  * If the function fails an appropriate status will be returned
217  * and the value of RetBuffer is undefined.
218  *
219  * This function attempts to execute the _CRS method contained in
220  * the object indicated by the passed DeviceHandle.
221  *
222  ******************************************************************************/
223 
227  ACPI_BUFFER *RetBuffer)
228 {
231 
232 
234 
235 
236  /* Validate parameters then dispatch to internal routine */
237 
239  if (ACPI_FAILURE (Status))
240  {
242  }
243 
244  Status = AcpiRsGetCrsMethodData (Node, RetBuffer);
246 }
247 
249 
250 
251 /*******************************************************************************
252  *
253  * FUNCTION: AcpiGetPossibleResources
254  *
255  * PARAMETERS: DeviceHandle - Handle to the device object for the
256  * device we are querying
257  * RetBuffer - Pointer to a buffer to receive the
258  * resources for the device
259  *
260  * RETURN: Status
261  *
262  * DESCRIPTION: This function is called to get a list of the possible resources
263  * for a specific device. The caller must first acquire a handle
264  * for the desired device. The resource data is placed in the
265  * buffer pointed to by the RetBuffer variable.
266  *
267  * If the function fails an appropriate status will be returned
268  * and the value of RetBuffer is undefined.
269  *
270  ******************************************************************************/
271 
275  ACPI_BUFFER *RetBuffer)
276 {
279 
280 
282 
283 
284  /* Validate parameters then dispatch to internal routine */
285 
287  if (ACPI_FAILURE (Status))
288  {
290  }
291 
292  Status = AcpiRsGetPrsMethodData (Node, RetBuffer);
294 }
295 
297 
298 
299 /*******************************************************************************
300  *
301  * FUNCTION: AcpiSetCurrentResources
302  *
303  * PARAMETERS: DeviceHandle - Handle to the device object for the
304  * device we are setting resources
305  * InBuffer - Pointer to a buffer containing the
306  * resources to be set for the device
307  *
308  * RETURN: Status
309  *
310  * DESCRIPTION: This function is called to set the current resources for a
311  * specific device. The caller must first acquire a handle for
312  * the desired device. The resource data is passed to the routine
313  * the buffer pointed to by the InBuffer variable.
314  *
315  ******************************************************************************/
316 
320  ACPI_BUFFER *InBuffer)
321 {
324 
325 
327 
328 
329  /* Validate the buffer, don't allow zero length */
330 
331  if ((!InBuffer) ||
332  (!InBuffer->Pointer) ||
333  (!InBuffer->Length))
334  {
336  }
337 
338  /* Validate parameters then dispatch to internal routine */
339 
341  if (ACPI_FAILURE (Status))
342  {
344  }
345 
346  Status = AcpiRsSetSrsMethodData (Node, InBuffer);
348 }
349 
351 
352 
353 /*******************************************************************************
354  *
355  * FUNCTION: AcpiGetEventResources
356  *
357  * PARAMETERS: DeviceHandle - Handle to the device object for the
358  * device we are getting resources
359  * InBuffer - Pointer to a buffer containing the
360  * resources to be set for the device
361  *
362  * RETURN: Status
363  *
364  * DESCRIPTION: This function is called to get the event resources for a
365  * specific device. The caller must first acquire a handle for
366  * the desired device. The resource data is passed to the routine
367  * the buffer pointed to by the InBuffer variable. Uses the
368  * _AEI method.
369  *
370  ******************************************************************************/
371 
375  ACPI_BUFFER *RetBuffer)
376 {
379 
380 
382 
383 
384  /* Validate parameters then dispatch to internal routine */
385 
387  if (ACPI_FAILURE (Status))
388  {
390  }
391 
392  Status = AcpiRsGetAeiMethodData (Node, RetBuffer);
394 }
395 
397 
398 
399 /******************************************************************************
400  *
401  * FUNCTION: AcpiResourceToAddress64
402  *
403  * PARAMETERS: Resource - Pointer to a resource
404  * Out - Pointer to the users's return buffer
405  * (a struct acpi_resource_address64)
406  *
407  * RETURN: Status
408  *
409  * DESCRIPTION: If the resource is an address16, address32, or address64,
410  * copy it to the address64 return buffer. This saves the
411  * caller from having to duplicate code for different-sized
412  * addresses.
413  *
414  ******************************************************************************/
415 
420 {
421  ACPI_RESOURCE_ADDRESS16 *Address16;
422  ACPI_RESOURCE_ADDRESS32 *Address32;
423 
424 
425  if (!Resource || !Out)
426  {
427  return (AE_BAD_PARAMETER);
428  }
429 
430  /* Convert 16 or 32 address descriptor to 64 */
431 
432  switch (Resource->Type)
433  {
435 
436  Address16 = ACPI_CAST_PTR (
438  ACPI_COPY_ADDRESS (Out, Address16);
439  break;
440 
442 
443  Address32 = ACPI_CAST_PTR (
445  ACPI_COPY_ADDRESS (Out, Address32);
446  break;
447 
449 
450  /* Simple copy for 64 bit source */
451 
453  break;
454 
455  default:
456 
457  return (AE_BAD_PARAMETER);
458  }
459 
460  return (AE_OK);
461 }
462 
464 
465 
466 /*******************************************************************************
467  *
468  * FUNCTION: AcpiGetVendorResource
469  *
470  * PARAMETERS: DeviceHandle - Handle for the parent device object
471  * Name - Method name for the parent resource
472  * (METHOD_NAME__CRS or METHOD_NAME__PRS)
473  * Uuid - Pointer to the UUID to be matched.
474  * includes both subtype and 16-byte UUID
475  * RetBuffer - Where the vendor resource is returned
476  *
477  * RETURN: Status
478  *
479  * DESCRIPTION: Walk a resource template for the specified device to find a
480  * vendor-defined resource that matches the supplied UUID and
481  * UUID subtype. Returns a ACPI_RESOURCE of type Vendor.
482  *
483  ******************************************************************************/
484 
488  char *Name,
489  ACPI_VENDOR_UUID *Uuid,
490  ACPI_BUFFER *RetBuffer)
491 {
494 
495 
496  /* Other parameters are validated by AcpiWalkResources */
497 
498  if (!Uuid || !RetBuffer)
499  {
500  return (AE_BAD_PARAMETER);
501  }
502 
503  Info.Uuid = Uuid;
504  Info.Buffer = RetBuffer;
505  Info.Status = AE_NOT_EXIST;
506 
507  /* Walk the _CRS or _PRS resource list for this device */
508 
511  if (ACPI_FAILURE (Status))
512  {
513  return (Status);
514  }
515 
516  return (Info.Status);
517 }
518 
520 
521 
522 /*******************************************************************************
523  *
524  * FUNCTION: AcpiRsMatchVendorResource
525  *
526  * PARAMETERS: ACPI_WALK_RESOURCE_CALLBACK
527  *
528  * RETURN: Status
529  *
530  * DESCRIPTION: Match a vendor resource via the ACPI 3.0 UUID
531  *
532  ******************************************************************************/
533 
534 static ACPI_STATUS
537  void *Context)
538 {
543 
544 
545  /* Ignore all descriptors except Vendor */
546 
547  if (Resource->Type != ACPI_RESOURCE_TYPE_VENDOR)
548  {
549  return (AE_OK);
550  }
551 
552  Vendor = &Resource->Data.VendorTyped;
553 
554  /*
555  * For a valid match, these conditions must hold:
556  *
557  * 1) Length of descriptor data must be at least as long as a UUID struct
558  * 2) The UUID subtypes must match
559  * 3) The UUID data must match
560  */
561  if ((Vendor->ByteLength < (ACPI_UUID_LENGTH + 1)) ||
562  (Vendor->UuidSubtype != Info->Uuid->Subtype) ||
563  (memcmp (Vendor->Uuid, Info->Uuid->Data, ACPI_UUID_LENGTH)))
564  {
565  return (AE_OK);
566  }
567 
568  /* Validate/Allocate/Clear caller buffer */
569 
570  Buffer = Info->Buffer;
572  if (ACPI_FAILURE (Status))
573  {
574  return (Status);
575  }
576 
577  /* Found the correct resource, copy and return it */
578 
579  memcpy (Buffer->Pointer, Resource, Resource->Length);
580  Buffer->Length = Resource->Length;
581 
582  /* Found the desired descriptor, terminate resource walk */
583 
584  Info->Status = AE_OK;
585  return (AE_CTRL_TERMINATE);
586 }
587 
588 
589 /*******************************************************************************
590  *
591  * FUNCTION: AcpiWalkResourceBuffer
592  *
593  * PARAMETERS: Buffer - Formatted buffer returned by one of the
594  * various Get*Resource functions
595  * UserFunction - Called for each resource
596  * Context - Passed to UserFunction
597  *
598  * RETURN: Status
599  *
600  * DESCRIPTION: Walks the input resource template. The UserFunction is called
601  * once for each resource in the list.
602  *
603  ******************************************************************************/
604 
608  ACPI_WALK_RESOURCE_CALLBACK UserFunction,
609  void *Context)
610 {
613  ACPI_RESOURCE *ResourceEnd;
614 
615 
617 
618 
619  /* Parameter validation */
620 
621  if (!Buffer || !Buffer->Pointer || !UserFunction)
622  {
624  }
625 
626  /* Buffer contains the resource list and length */
627 
629  ResourceEnd = ACPI_ADD_PTR (
630  ACPI_RESOURCE, Buffer->Pointer, Buffer->Length);
631 
632  /* Walk the resource list until the EndTag is found (or buffer end) */
633 
634  while (Resource < ResourceEnd)
635  {
636  /* Sanity check the resource type */
637 
638  if (Resource->Type > ACPI_RESOURCE_TYPE_MAX)
639  {
641  break;
642  }
643 
644  /* Sanity check the length. It must not be zero, or we loop forever */
645 
646  if (!Resource->Length)
647  {
649  }
650 
651  /* Invoke the user function, abort on any error returned */
652 
654  if (ACPI_FAILURE (Status))
655  {
656  if (Status == AE_CTRL_TERMINATE)
657  {
658  /* This is an OK termination by the user function */
659 
660  Status = AE_OK;
661  }
662  break;
663  }
664 
665  /* EndTag indicates end-of-list */
666 
668  {
669  break;
670  }
671 
672  /* Get the next resource descriptor */
673 
675  }
676 
678 }
679 
681 
682 
683 /*******************************************************************************
684  *
685  * FUNCTION: AcpiWalkResources
686  *
687  * PARAMETERS: DeviceHandle - Handle to the device object for the
688  * device we are querying
689  * Name - Method name of the resources we want.
690  * (METHOD_NAME__CRS, METHOD_NAME__PRS, or
691  * METHOD_NAME__AEI or METHOD_NAME__DMA)
692  * UserFunction - Called for each resource
693  * Context - Passed to UserFunction
694  *
695  * RETURN: Status
696  *
697  * DESCRIPTION: Retrieves the current or possible resource list for the
698  * specified device. The UserFunction is called once for
699  * each resource in the list.
700  *
701  ******************************************************************************/
702 
706  char *Name,
707  ACPI_WALK_RESOURCE_CALLBACK UserFunction,
708  void *Context)
709 {
712 
713 
715 
716 
717  /* Parameter validation */
718 
719  if (!DeviceHandle || !UserFunction || !Name ||
724  {
726  }
727 
728  /* Get the _CRS/_PRS/_AEI/_DMA resource list */
729 
732  if (ACPI_FAILURE (Status))
733  {
735  }
736 
737  /* Walk the resource list and cleanup */
738 
740  ACPI_FREE (Buffer.Pointer);
742 }
743 
ACPI_STATUS AcpiWalkResourceBuffer(ACPI_BUFFER *Buffer, ACPI_WALK_RESOURCE_CALLBACK UserFunction, void *Context)
Definition: rsxface.c:606
#define ACPI_FREE(a)
Definition: actypes.h:386
#define AE_AML_BAD_RESOURCE_LENGTH
Definition: acexcep.h:210
ACPI_STATUS AcpiUtInitializeBuffer(ACPI_BUFFER *Buffer, ACPI_SIZE RequiredLength)
Definition: utalloc.c:336
_Inout_ PUSB_DEVICE_HANDLE DeviceHandle
Definition: hubbusif.h:121
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
ACPI_STATUS AcpiGetIrqRoutingTable(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
Definition: rsxface.c:174
#define AE_BAD_PARAMETER
Definition: acexcep.h:151
#define ACPI_UUID_LENGTH
Definition: actypes.h:1252
ACPI_SIZE Length
Definition: actypes.h:1042
#define ACPI_COPY_ADDRESS(Out, In)
Definition: rsxface.c:57
#define ACPI_RESOURCE_TYPE_END_TAG
Definition: acrestyp.h:721
void * Pointer
Definition: actypes.h:1043
UINT32 ACPI_STATUS
Definition: actypes.h:460
ACPI_STATUS AcpiRsGetPrtMethodData(ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer)
Definition: rsutils.c:521
#define METHOD_NAME__DMA
Definition: acnames.h:57
struct TraceInfo Info
#define METHOD_NAME__PRS
Definition: acnames.h:62
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
#define AE_CTRL_TERMINATE
Definition: acexcep.h:226
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
Definition: cdprocs.h:848
union node Node
Definition: types.h:1255
ACPI_STATUS AcpiRsSetSrsMethodData(ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer)
Definition: rsutils.c:800
#define ACPI_MODULE_NAME(Name)
Definition: acoutput.h:216
#define ACPI_EXPORT_SYMBOL(Symbol)
Definition: actypes.h:343
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK UserFunction
Definition: acpixf.h:1069
static ACPI_STATUS AcpiRsMatchVendorResource(ACPI_RESOURCE *Resource, void *Context)
Definition: rsxface.c:535
ACPI_STATUS AcpiGetVendorResource(ACPI_HANDLE DeviceHandle, char *Name, ACPI_VENDOR_UUID *Uuid, ACPI_BUFFER *RetBuffer)
Definition: rsxface.c:486
UINT8 Uuid[ACPI_UUID_LENGTH]
Definition: acrestyp.h:262
#define ACPI_ALLOCATE_LOCAL_BUFFER
Definition: actypes.h:1036
Definition: bufpool.h:45
ACPI_STATUS AcpiRsGetCrsMethodData(ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer)
Definition: rsutils.c:575
#define ACPI_RESOURCE_TYPE_ADDRESS32
Definition: acrestyp.h:726
ACPI_STATUS AcpiSetCurrentResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *InBuffer)
Definition: rsxface.c:318
#define ACPI_RESOURCE_TYPE_VENDOR
Definition: acrestyp.h:720
ACPI_STATUS AcpiGetPossibleResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
Definition: rsxface.c:273
ACPI_STATUS AcpiRsGetAeiMethodData(ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer)
Definition: rsutils.c:685
#define ACPI_COMPARE_NAMESEG(a, b)
Definition: actypes.h:561
#define ACPI_RESOURCE_TYPE_ADDRESS64
Definition: acrestyp.h:727
#define AE_NOT_EXIST
Definition: acexcep.h:114
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define ACPI_TYPE_DEVICE
Definition: actypes.h:684
#define ACPI_RESOURCE_TYPE_MAX
Definition: acrestyp.h:739
#define AE_TYPE
Definition: acexcep.h:116
ACPI_STATUS AcpiRsGetPrsMethodData(ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer)
Definition: rsutils.c:630
Status
Definition: gdiplustypes.h:24
static ACPI_STATUS AcpiRsValidateParameters(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *Buffer, ACPI_NAMESPACE_NODE **ReturnNode)
Definition: rsxface.c:101
ACPI_STATUS AcpiRsGetMethodData(ACPI_HANDLE Handle, const char *Path, ACPI_BUFFER *RetBuffer)
Definition: rsutils.c:741
#define ACPI_NEXT_RESOURCE(Res)
Definition: acrestyp.h:802
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FUNCTION_TRACE(a)
Definition: acoutput.h:480
#define ACPI_RESOURCE_TYPE_ADDRESS16
Definition: acrestyp.h:725
struct tagContext Context
Definition: acpixf.h:1030
ACPI_STATUS AcpiUtValidateBuffer(ACPI_BUFFER *Buffer)
Definition: utalloc.c:290
#define ACPI_ADD_PTR(t, a, b)
Definition: actypes.h:546
#define METHOD_NAME__CRS
Definition: acnames.h:55
ACPI_NAMESPACE_NODE * AcpiNsValidateHandle(ACPI_HANDLE Handle)
Definition: nsutils.c:655
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
#define ACPI_CAST_PTR(t, p)
Definition: actypes.h:544
ACPI_STATUS AcpiGetCurrentResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
Definition: rsxface.c:225
ACPI_STATUS AcpiGetEventResources(ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer)
Definition: rsxface.c:373
ACPI_STATUS AcpiWalkResources(ACPI_HANDLE DeviceHandle, char *Name, ACPI_WALK_RESOURCE_CALLBACK UserFunction, void *Context)
Definition: rsxface.c:704
#define AE_OK
Definition: acexcep.h:97
#define AE_AML_INVALID_RESOURCE_TYPE
Definition: acexcep.h:202
ACPI_STATUS AcpiResourceToAddress64(ACPI_RESOURCE *Resource, ACPI_RESOURCE_ADDRESS64 *Out)
Definition: rsxface.c:417
#define METHOD_NAME__AEI
Definition: acnames.h:50
Definition: dlist.c:348