xref: /linux-6.15/include/acpi/platform/aclinux.h (revision a7306f3c)
195857638SErik Schmauss /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
21da177e4SLinus Torvalds /******************************************************************************
31da177e4SLinus Torvalds  *
4e0c437bcSBob Moore  * Name: aclinux.h - OS specific defines, etc. for Linux
51da177e4SLinus Torvalds  *
6612c2932SBob Moore  * Copyright (C) 2000 - 2023, Intel Corp.
71da177e4SLinus Torvalds  *
895857638SErik Schmauss  *****************************************************************************/
91da177e4SLinus Torvalds 
101da177e4SLinus Torvalds #ifndef __ACLINUX_H__
111da177e4SLinus Torvalds #define __ACLINUX_H__
121da177e4SLinus Torvalds 
13417b4a73SLv Zheng #ifdef __KERNEL__
14417b4a73SLv Zheng 
15417b4a73SLv Zheng /* ACPICA external files should not include ACPICA headers directly. */
16417b4a73SLv Zheng 
17417b4a73SLv Zheng #if !defined(BUILDING_ACPICA) && !defined(_LINUX_ACPI_H)
18*a7306f3cSNataniel Farzan #error "Please do not include <acpi/acpi.h> directly, include <linux/acpi.h> instead."
19417b4a73SLv Zheng #endif
20417b4a73SLv Zheng 
21417b4a73SLv Zheng #endif
22417b4a73SLv Zheng 
23e0c437bcSBob Moore /* Common (in-kernel/user-space) ACPICA configuration */
24e0c437bcSBob Moore 
251da177e4SLinus Torvalds #define ACPI_USE_SYSTEM_CLIBRARY
261da177e4SLinus Torvalds #define ACPI_USE_DO_WHILE_0
27959c38a7SBob Moore #define ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS
281da177e4SLinus Torvalds 
291da177e4SLinus Torvalds #ifdef __KERNEL__
301da177e4SLinus Torvalds 
31e252652fSLv Zheng #define ACPI_USE_SYSTEM_INTTYPES
3287cd826bSErik Schmauss #define ACPI_USE_GPE_POLLING
33e252652fSLv Zheng 
344d946f79SLv Zheng /* Kernel specific ACPICA configuration */
35af1ae78aSAl Stone 
36bd23fac3SSinan Kaya #ifdef CONFIG_PCI
37bd23fac3SSinan Kaya #define ACPI_PCI_CONFIGURED
38bd23fac3SSinan Kaya #endif
39bd23fac3SSinan Kaya 
40af1ae78aSAl Stone #ifdef CONFIG_ACPI_REDUCED_HARDWARE_ONLY
41af1ae78aSAl Stone #define ACPI_REDUCED_HARDWARE 1
42af1ae78aSAl Stone #endif
43af1ae78aSAl Stone 
444d946f79SLv Zheng #ifdef CONFIG_ACPI_DEBUGGER
454d946f79SLv Zheng #define ACPI_DEBUGGER
464d946f79SLv Zheng #endif
474d946f79SLv Zheng 
48b4219a89SLv Zheng #ifdef CONFIG_ACPI_DEBUG
49b4219a89SLv Zheng #define ACPI_MUTEX_DEBUG
50b4219a89SLv Zheng #endif
51b4219a89SLv Zheng 
521da177e4SLinus Torvalds #include <linux/string.h>
531da177e4SLinus Torvalds #include <linux/kernel.h>
541da177e4SLinus Torvalds #include <linux/ctype.h>
558bd108d1SAlexey Starikovskiy #include <linux/sched.h>
5660063497SArun Sharma #include <linux/atomic.h>
5793220587SLv Zheng #include <linux/math64.h>
588313524aSBob Moore #include <linux/slab.h>
59967440e3SBob Moore #include <linux/spinlock_types.h>
6093220587SLv Zheng #ifdef EXPORT_ACPI_INTERFACES
6193220587SLv Zheng #include <linux/export.h>
6293220587SLv Zheng #endif
63d334c823SLv Zheng #ifdef CONFIG_ACPI
6407d83914SLv Zheng #include <asm/acenv.h>
65d334c823SLv Zheng #endif
661da177e4SLinus Torvalds 
672368b1a1SLv Zheng #define ACPI_INIT_FUNCTION __init
682368b1a1SLv Zheng 
6911207b4dSErik Schmauss /* Use a specific bugging default separate from ACPICA */
7011207b4dSErik Schmauss 
7111207b4dSErik Schmauss #undef ACPI_DEBUG_DEFAULT
7211207b4dSErik Schmauss #define ACPI_DEBUG_DEFAULT          (ACPI_LV_INFO | ACPI_LV_REPAIR)
7311207b4dSErik Schmauss 
7442873a84SLv Zheng #ifndef CONFIG_ACPI
7542873a84SLv Zheng 
7642873a84SLv Zheng /* External globals for __KERNEL__, stubs is needed */
7742873a84SLv Zheng 
7842873a84SLv Zheng #define ACPI_GLOBAL(t,a)
7942873a84SLv Zheng #define ACPI_INIT_GLOBAL(t,a,b)
8042873a84SLv Zheng 
8142873a84SLv Zheng /* Generating stubs for configurable ACPICA macros */
8242873a84SLv Zheng 
8342873a84SLv Zheng #define ACPI_NO_MEM_ALLOCATIONS
8442873a84SLv Zheng 
8542873a84SLv Zheng /* Generating stubs for configurable ACPICA functions */
8642873a84SLv Zheng 
8742873a84SLv Zheng #define ACPI_NO_ERROR_MESSAGES
8842873a84SLv Zheng #undef ACPI_DEBUG_OUTPUT
8942873a84SLv Zheng 
9042873a84SLv Zheng /* External interface for __KERNEL__, stub is needed */
9142873a84SLv Zheng 
9242873a84SLv Zheng #define ACPI_EXTERNAL_RETURN_STATUS(prototype) \
9342873a84SLv Zheng 	static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);}
9442873a84SLv Zheng #define ACPI_EXTERNAL_RETURN_OK(prototype) \
9542873a84SLv Zheng 	static ACPI_INLINE prototype {return(AE_OK);}
9642873a84SLv Zheng #define ACPI_EXTERNAL_RETURN_VOID(prototype) \
9742873a84SLv Zheng 	static ACPI_INLINE prototype {return;}
9842873a84SLv Zheng #define ACPI_EXTERNAL_RETURN_UINT32(prototype) \
9942873a84SLv Zheng 	static ACPI_INLINE prototype {return(0);}
10042873a84SLv Zheng #define ACPI_EXTERNAL_RETURN_PTR(prototype) \
10142873a84SLv Zheng 	static ACPI_INLINE prototype {return(NULL);}
10242873a84SLv Zheng 
10342873a84SLv Zheng #endif				/* CONFIG_ACPI */
10442873a84SLv Zheng 
105e0c437bcSBob Moore /* Host-dependent types and defines for in-kernel ACPICA */
1061da177e4SLinus Torvalds 
1071da177e4SLinus Torvalds #define ACPI_MACHINE_WIDTH          BITS_PER_LONG
10865082bfcSLv Zheng #define ACPI_USE_NATIVE_MATH64
1098313524aSBob Moore #define ACPI_EXPORT_SYMBOL(symbol)  EXPORT_SYMBOL(symbol);
1108313524aSBob Moore #define strtoul                     simple_strtoul
11173459f73SRobert Moore 
112e0c437bcSBob Moore #define acpi_cache_t                        struct kmem_cache
113e0c437bcSBob Moore #define acpi_spinlock                       spinlock_t *
114c3052594SSebastian Andrzej Siewior #define acpi_raw_spinlock                   raw_spinlock_t *
115e0c437bcSBob Moore #define acpi_cpu_flags                      unsigned long
116e0c437bcSBob Moore 
117ae57857bSRafael J. Wysocki #define acpi_uintptr_t                      uintptr_t
118ae57857bSRafael J. Wysocki 
119ae57857bSRafael J. Wysocki #define ACPI_TO_INTEGER(p)                  ((uintptr_t)(p))
120ae57857bSRafael J. Wysocki #define ACPI_OFFSET(d, f)                   offsetof(d, f)
121ae57857bSRafael J. Wysocki 
122d13bd5a6SLv Zheng /* Use native linux version of acpi_os_allocate_zeroed */
123d13bd5a6SLv Zheng 
124d13bd5a6SLv Zheng #define USE_NATIVE_ALLOCATE_ZEROED
125d13bd5a6SLv Zheng 
12685f94020SRafael J. Wysocki /* Use logical addresses for accessing GPE registers in system memory */
12785f94020SRafael J. Wysocki 
12885f94020SRafael J. Wysocki #define ACPI_GPE_USE_LOGICAL_ADDRESSES
12985f94020SRafael J. Wysocki 
130d13bd5a6SLv Zheng /*
131d13bd5a6SLv Zheng  * Overrides for in-kernel ACPICA
132d13bd5a6SLv Zheng  */
133d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize
134d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate
135d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate
136d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed
137d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free
138d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object
139d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id
140d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
141c3052594SSebastian Andrzej Siewior #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_raw_lock
142c3052594SSebastian Andrzej Siewior #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_delete_raw_lock
143c3052594SSebastian Andrzej Siewior #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_raw_lock
144c3052594SSebastian Andrzej Siewior #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_release_raw_lock
145d13bd5a6SLv Zheng 
146d13bd5a6SLv Zheng /*
147d13bd5a6SLv Zheng  * OSL interfaces used by debugger/disassembler
148d13bd5a6SLv Zheng  */
149d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable
150d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable
151703ecd22SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize_debugger
152703ecd22SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate_debugger
153d13bd5a6SLv Zheng 
154d13bd5a6SLv Zheng /*
155d13bd5a6SLv Zheng  * OSL interfaces used by utilities
156d13bd5a6SLv Zheng  */
157d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output
158d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name
159d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index
160d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address
161d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory
162d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename
163d13bd5a6SLv Zheng #define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory
164d13bd5a6SLv Zheng 
165b5c0875aSLv Zheng #define ACPI_MSG_ERROR          KERN_ERR "ACPI Error: "
166b5c0875aSLv Zheng #define ACPI_MSG_EXCEPTION      KERN_ERR "ACPI Exception: "
167b5c0875aSLv Zheng #define ACPI_MSG_WARNING        KERN_WARNING "ACPI Warning: "
168b5c0875aSLv Zheng #define ACPI_MSG_INFO           KERN_INFO "ACPI: "
169b5c0875aSLv Zheng 
170b5c0875aSLv Zheng #define ACPI_MSG_BIOS_ERROR     KERN_ERR "ACPI BIOS Error (bug): "
171b5c0875aSLv Zheng #define ACPI_MSG_BIOS_WARNING   KERN_WARNING "ACPI BIOS Warning (bug): "
172b5c0875aSLv Zheng 
17399e597adSKees Cook /*
17499e597adSKees Cook  * Linux wants to use designated initializers for function pointer structs.
17599e597adSKees Cook  */
1763d867f6cSKees Cook #define ACPI_STRUCT_INIT(field, value)	.field = value
1773d867f6cSKees Cook 
1781da177e4SLinus Torvalds #else				/* !__KERNEL__ */
1791da177e4SLinus Torvalds 
180da24f31dSLv Zheng #define ACPI_USE_STANDARD_HEADERS
181da24f31dSLv Zheng 
182da24f31dSLv Zheng #ifdef ACPI_USE_STANDARD_HEADERS
1834cf8a606STamir Duberstein #include <stddef.h>
1841da177e4SLinus Torvalds #include <unistd.h>
1857c94858eSPhilip Prindeville #include <stdint.h>
1864cf8a606STamir Duberstein 
1874cf8a606STamir Duberstein #define ACPI_OFFSET(d, f)   offsetof(d, f)
188da24f31dSLv Zheng #endif
1891da177e4SLinus Torvalds 
190a3a80da3SLv Zheng /* Define/disable kernel-specific declarators */
1917e66b46bSLv Zheng 
1927e66b46bSLv Zheng #ifndef __init
1937e66b46bSLv Zheng #define __init
1947e66b46bSLv Zheng #endif
195d5a4b1a5SLv Zheng #ifndef __iomem
196d5a4b1a5SLv Zheng #define __iomem
197d5a4b1a5SLv Zheng #endif
1987e66b46bSLv Zheng 
199e0c437bcSBob Moore /* Host-dependent types and defines for user-space ACPICA */
200e0c437bcSBob Moore 
201e0c437bcSBob Moore #define ACPI_FLUSH_CPU_CACHE()
20228eb3fcfSLin Ming #define ACPI_CAST_PTHREAD_T(pthread) ((acpi_thread_id) (pthread))
203e0c437bcSBob Moore 
2040eedae8eSAnuj Mittal #if defined(__ia64__)    || (defined(__x86_64__) && !defined(__ILP32__)) ||\
20523741569SColin Ian King 	defined(__aarch64__) || defined(__PPC64__) ||\
206a47a0c2aSHuacai Chen 	defined(__s390x__)   || defined(__loongarch__) ||\
2073d21044eSColin Ian King 	(defined(__riscv) && (defined(__LP64__) || defined(_LP64)))
2081da177e4SLinus Torvalds #define ACPI_MACHINE_WIDTH          64
2091da177e4SLinus Torvalds #define COMPILER_DEPENDENT_INT64    long
2101da177e4SLinus Torvalds #define COMPILER_DEPENDENT_UINT64   unsigned long
2111da177e4SLinus Torvalds #else
2121da177e4SLinus Torvalds #define ACPI_MACHINE_WIDTH          32
2131da177e4SLinus Torvalds #define COMPILER_DEPENDENT_INT64    long long
2141da177e4SLinus Torvalds #define COMPILER_DEPENDENT_UINT64   unsigned long long
2151da177e4SLinus Torvalds #define ACPI_USE_NATIVE_DIVIDE
21665082bfcSLv Zheng #define ACPI_USE_NATIVE_MATH64
2171da177e4SLinus Torvalds #endif
2181da177e4SLinus Torvalds 
219a0a3f6c6SBob Moore #ifndef __cdecl
2201da177e4SLinus Torvalds #define __cdecl
221a0a3f6c6SBob Moore #endif
222a0a3f6c6SBob Moore 
2231da177e4SLinus Torvalds #endif				/* __KERNEL__ */
2241da177e4SLinus Torvalds 
2251da177e4SLinus Torvalds #endif				/* __ACLINUX_H__ */
226