1 /*        $NetBSD: acpi_util.h,v 1.16 2025/01/11 11:40:43 jmcneill Exp $ */
2 
3 /*-
4  * Copyright (c) 2003, 2007 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by Charles M. Hannum of By Noon Software, Inc.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 /*
33  * Copyright 2001, 2003 Wasabi Systems, Inc.
34  * All rights reserved.
35  *
36  * Written by Jason R. Thorpe for Wasabi Systems, Inc.
37  *
38  * Redistribution and use in source and binary forms, with or without
39  * modification, are permitted provided that the following conditions
40  * are met:
41  * 1. Redistributions of source code must retain the above copyright
42  *    notice, this list of conditions and the following disclaimer.
43  * 2. Redistributions in binary form must reproduce the above copyright
44  *    notice, this list of conditions and the following disclaimer in the
45  *    documentation and/or other materials provided with the distribution.
46  * 3. All advertising materials mentioning features or use of this software
47  *    must display the following acknowledgement:
48  *        This product includes software developed for the NetBSD Project by
49  *        Wasabi Systems, Inc.
50  * 4. The name of Wasabi Systems, Inc. may not be used to endorse
51  *    or promote products derived from this software without specific prior
52  *    written permission.
53  *
54  * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
55  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
56  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
57  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
58  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
59  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
60  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
61  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
62  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
63  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
64  * POSSIBILITY OF SUCH DAMAGE.
65  */
66 
67 #ifndef _SYS_DEV_ACPI_ACPI_UTIL_H
68 #define _SYS_DEV_ACPI_ACPI_UTIL_H
69 
70 devhandle_t         devhandle_from_acpi(devhandle_t, ACPI_HANDLE);
71 ACPI_HANDLE         devhandle_to_acpi(devhandle_t);
72 
73 #define   ACPI_DEVICE_CALL_REGISTER(_n_, _c_)                                   \
74           DEVICE_CALL_REGISTER(acpi_device_calls, _n_, _c_)
75 
76 ACPI_STATUS         acpi_eval_integer(ACPI_HANDLE, const char *, ACPI_INTEGER *);
77 ACPI_STATUS         acpi_eval_set_integer(ACPI_HANDLE handle, const char *path,
78                         ACPI_INTEGER arg);
79 ACPI_STATUS         acpi_eval_string(ACPI_HANDLE, const char *, char **);
80 ACPI_STATUS         acpi_eval_struct(ACPI_HANDLE, const char *, ACPI_BUFFER *);
81 ACPI_STATUS         acpi_eval_reference_handle(ACPI_OBJECT *, ACPI_HANDLE *);
82 
83 ACPI_STATUS         acpi_foreach_package_object(ACPI_OBJECT *,
84                               ACPI_STATUS (*)(ACPI_OBJECT *, void *), void *);
85 ACPI_STATUS         acpi_get(ACPI_HANDLE, ACPI_BUFFER *,
86                               ACPI_STATUS (*)(ACPI_HANDLE, ACPI_BUFFER *));
87 
88 struct acpi_devnode *acpi_match_node(ACPI_HANDLE handle);
89 void                     acpi_match_node_init(struct acpi_devnode *ad);
90 
91 const char          *acpi_name(ACPI_HANDLE);
92 int                  acpi_match_hid(ACPI_DEVICE_INFO *, const char * const *);
93 int                  acpi_match_class(ACPI_HANDLE, uint8_t, uint8_t, uint8_t);
94 ACPI_HANDLE          acpi_match_cpu_info(struct cpu_info *);
95 struct cpu_info *acpi_match_cpu_handle(ACPI_HANDLE);
96 
97 char                *acpi_pack_compat_list(struct acpi_devnode *ad, size_t *);
98 
99 ACPI_STATUS          acpi_dsd_integer(ACPI_HANDLE, const char *, ACPI_INTEGER *);
100 ACPI_STATUS          acpi_dsd_string(ACPI_HANDLE, const char *, char **);
101 ACPI_STATUS          acpi_dsd_bool(ACPI_HANDLE, const char *, bool *);
102 
103 ACPI_STATUS          acpi_dsm(ACPI_HANDLE, uint8_t *, ACPI_INTEGER,
104                               ACPI_INTEGER, const ACPI_OBJECT *, ACPI_OBJECT **);
105 ACPI_STATUS          acpi_dsm_typed(ACPI_HANDLE, uint8_t *, ACPI_INTEGER,
106                               ACPI_INTEGER, const ACPI_OBJECT *,
107                               ACPI_OBJECT_TYPE, ACPI_OBJECT **);
108 ACPI_STATUS          acpi_dsm_integer(ACPI_HANDLE, uint8_t *, ACPI_INTEGER,
109                               ACPI_INTEGER, const ACPI_OBJECT *,
110                               ACPI_INTEGER *);
111 ACPI_STATUS          acpi_dsm_query(ACPI_HANDLE, uint8_t *, ACPI_INTEGER,
112                               ACPI_INTEGER *);
113 
114 ACPI_STATUS          acpi_claim_childdevs(device_t, struct acpi_devnode *,
115                               const char *);
116 
117 #endif    /* !_SYS_DEV_ACPI_ACPI_UTIL_H */
118