1dab39c11SEmmanuel Vadot /*-
24d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3dab39c11SEmmanuel Vadot  *
4dab39c11SEmmanuel Vadot  * Copyright (c) 2017 Mark Johnston <markj@FreeBSD.org>
5dab39c11SEmmanuel Vadot  * Copyright (c) 2020 Vladimir Kondratyev <wulf@FreeBSD.org>
6dab39c11SEmmanuel Vadot  *
7dab39c11SEmmanuel Vadot  * Redistribution and use in source and binary forms, with or without
8dab39c11SEmmanuel Vadot  * modification, are permitted provided that the following conditions are
9dab39c11SEmmanuel Vadot  * met:
10dab39c11SEmmanuel Vadot  * 1. Redistributions of source code must retain the above copyright
11dab39c11SEmmanuel Vadot  *    notice, this list of conditions and the following disclaimer.
12dab39c11SEmmanuel Vadot  * 2. Redistributions in binary form must reproduce the above copyright
13dab39c11SEmmanuel Vadot  *    notice, this list of conditions and the following disclaimer in
14dab39c11SEmmanuel Vadot  *    the documentation and/or other materials provided with the
15dab39c11SEmmanuel Vadot  *    distribution.
16dab39c11SEmmanuel Vadot  *
17dab39c11SEmmanuel Vadot  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18dab39c11SEmmanuel Vadot  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19dab39c11SEmmanuel Vadot  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20dab39c11SEmmanuel Vadot  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21dab39c11SEmmanuel Vadot  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22dab39c11SEmmanuel Vadot  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23dab39c11SEmmanuel Vadot  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24dab39c11SEmmanuel Vadot  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25dab39c11SEmmanuel Vadot  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26dab39c11SEmmanuel Vadot  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27dab39c11SEmmanuel Vadot  * SUCH DAMAGE.
28dab39c11SEmmanuel Vadot  */
29dab39c11SEmmanuel Vadot 
30307f78f3SVladimir Kondratyev #ifndef _LINUXKPI_ACPI_ACPI_H_
31307f78f3SVladimir Kondratyev #define _LINUXKPI_ACPI_ACPI_H_
32dab39c11SEmmanuel Vadot 
33dab39c11SEmmanuel Vadot /*
34dab39c11SEmmanuel Vadot  * FreeBSD import of ACPICA has a typedef for BOOLEAN which conflicts with
35dab39c11SEmmanuel Vadot  * amdgpu driver. Workaround it on preprocessor level.
36dab39c11SEmmanuel Vadot  */
37dab39c11SEmmanuel Vadot #define	ACPI_USE_SYSTEM_INTTYPES
38dab39c11SEmmanuel Vadot #define	BOOLEAN			unsigned char
39dab39c11SEmmanuel Vadot typedef unsigned char		UINT8;
40dab39c11SEmmanuel Vadot typedef unsigned short		UINT16;
41dab39c11SEmmanuel Vadot typedef short			INT16;
42dab39c11SEmmanuel Vadot typedef unsigned int		UINT32;
43dab39c11SEmmanuel Vadot typedef int			INT32;
44dab39c11SEmmanuel Vadot typedef uint64_t		UINT64;
45dab39c11SEmmanuel Vadot typedef int64_t			INT64;
46dab39c11SEmmanuel Vadot #include <contrib/dev/acpica/include/acpi.h>
47dab39c11SEmmanuel Vadot #undef BOOLEAN
48dab39c11SEmmanuel Vadot 
49dab39c11SEmmanuel Vadot typedef ACPI_HANDLE		acpi_handle;
50dab39c11SEmmanuel Vadot typedef ACPI_OBJECT		acpi_object;
51dab39c11SEmmanuel Vadot typedef ACPI_OBJECT_HANDLER	acpi_object_handler;
52dab39c11SEmmanuel Vadot typedef ACPI_OBJECT_TYPE	acpi_object_type;
53dab39c11SEmmanuel Vadot typedef ACPI_STATUS		acpi_status;
54dab39c11SEmmanuel Vadot typedef ACPI_STRING		acpi_string;
55dab39c11SEmmanuel Vadot typedef ACPI_SIZE		acpi_size;
56dab39c11SEmmanuel Vadot typedef ACPI_WALK_CALLBACK	acpi_walk_callback;
57dab39c11SEmmanuel Vadot 
58dab39c11SEmmanuel Vadot static inline ACPI_STATUS
acpi_evaluate_object(ACPI_HANDLE Object,ACPI_STRING Pathname,ACPI_OBJECT_LIST * ParameterObjects,ACPI_BUFFER * ReturnObjectBuffer)59dab39c11SEmmanuel Vadot acpi_evaluate_object(ACPI_HANDLE Object, ACPI_STRING Pathname,
60dab39c11SEmmanuel Vadot     ACPI_OBJECT_LIST *ParameterObjects, ACPI_BUFFER *ReturnObjectBuffer)
61dab39c11SEmmanuel Vadot {
62dab39c11SEmmanuel Vadot 	return (AcpiEvaluateObject(
63dab39c11SEmmanuel Vadot 	    Object, Pathname, ParameterObjects, ReturnObjectBuffer));
64dab39c11SEmmanuel Vadot }
65dab39c11SEmmanuel Vadot 
66dab39c11SEmmanuel Vadot static inline const char *
acpi_format_exception(ACPI_STATUS Exception)67dab39c11SEmmanuel Vadot acpi_format_exception(ACPI_STATUS Exception)
68dab39c11SEmmanuel Vadot {
69dab39c11SEmmanuel Vadot 	return (AcpiFormatException(Exception));
70dab39c11SEmmanuel Vadot }
71dab39c11SEmmanuel Vadot 
72dab39c11SEmmanuel Vadot static inline ACPI_STATUS
acpi_get_handle(ACPI_HANDLE Parent,ACPI_STRING Pathname,ACPI_HANDLE * RetHandle)73dab39c11SEmmanuel Vadot acpi_get_handle(ACPI_HANDLE Parent, ACPI_STRING Pathname,
74dab39c11SEmmanuel Vadot     ACPI_HANDLE *RetHandle)
75dab39c11SEmmanuel Vadot {
76dab39c11SEmmanuel Vadot 	return (AcpiGetHandle(Parent, Pathname, RetHandle));
77dab39c11SEmmanuel Vadot }
78dab39c11SEmmanuel Vadot 
79dab39c11SEmmanuel Vadot static inline ACPI_STATUS
acpi_get_data(ACPI_HANDLE ObjHandle,ACPI_OBJECT_HANDLER Handler,void ** Data)80dab39c11SEmmanuel Vadot acpi_get_data(ACPI_HANDLE ObjHandle, ACPI_OBJECT_HANDLER Handler, void **Data)
81dab39c11SEmmanuel Vadot {
82dab39c11SEmmanuel Vadot 	return (AcpiGetData(ObjHandle, Handler, Data));
83dab39c11SEmmanuel Vadot }
84dab39c11SEmmanuel Vadot 
85dab39c11SEmmanuel Vadot static inline ACPI_STATUS
acpi_get_name(ACPI_HANDLE Object,UINT32 NameType,ACPI_BUFFER * RetPathPtr)86dab39c11SEmmanuel Vadot acpi_get_name(ACPI_HANDLE Object, UINT32 NameType, ACPI_BUFFER *RetPathPtr)
87dab39c11SEmmanuel Vadot {
88dab39c11SEmmanuel Vadot 	return (AcpiGetName(Object, NameType, RetPathPtr));
89dab39c11SEmmanuel Vadot }
90dab39c11SEmmanuel Vadot 
91dab39c11SEmmanuel Vadot static inline ACPI_STATUS
acpi_get_table(ACPI_STRING Signature,UINT32 Instance,ACPI_TABLE_HEADER ** OutTable)92dab39c11SEmmanuel Vadot acpi_get_table(ACPI_STRING Signature, UINT32 Instance,
93dab39c11SEmmanuel Vadot     ACPI_TABLE_HEADER **OutTable)
94dab39c11SEmmanuel Vadot {
95dab39c11SEmmanuel Vadot 	return (AcpiGetTable(Signature, Instance, OutTable));
96dab39c11SEmmanuel Vadot }
97dab39c11SEmmanuel Vadot 
98b14c03f8SVladimir Kondratyev static inline void
acpi_put_table(ACPI_TABLE_HEADER * Table)99b14c03f8SVladimir Kondratyev acpi_put_table(ACPI_TABLE_HEADER *Table)
100b14c03f8SVladimir Kondratyev {
101b14c03f8SVladimir Kondratyev 	AcpiPutTable(Table);
102b14c03f8SVladimir Kondratyev }
103b14c03f8SVladimir Kondratyev 
104307f78f3SVladimir Kondratyev #endif /* _LINUXKPI_ACPI_ACPI_H_ */
105