blob: a0b232703302dae86f535ef942c770ecd85516bf [file] [log] [blame]
Erik Schmauss95857632018-03-14 16:13:07 -07001/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002/******************************************************************************
3 *
Bob Mooree0c437b2009-04-22 13:39:47 +08004 * Name: aclinux.h - OS specific defines, etc. for Linux
Linus Torvalds1da177e2005-04-16 15:20:36 -07005 *
Bob Mooreda6f8322018-01-04 10:06:38 -08006 * Copyright (C) 2000 - 2018, Intel Corp.
Linus Torvalds1da177e2005-04-16 15:20:36 -07007 *
Erik Schmauss95857632018-03-14 16:13:07 -07008 *****************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -07009
10#ifndef __ACLINUX_H__
11#define __ACLINUX_H__
12
Lv Zheng417b4a72014-07-16 16:58:53 +080013#ifdef __KERNEL__
14
15/* ACPICA external files should not include ACPICA headers directly. */
16
17#if !defined(BUILDING_ACPICA) && !defined(_LINUX_ACPI_H)
18#error "Please don't include <acpi/acpi.h> directly, include <linux/acpi.h> instead."
19#endif
20
21#endif
22
Bob Mooree0c437b2009-04-22 13:39:47 +080023/* Common (in-kernel/user-space) ACPICA configuration */
24
Linus Torvalds1da177e2005-04-16 15:20:36 -070025#define ACPI_USE_SYSTEM_CLIBRARY
26#define ACPI_USE_DO_WHILE_0
Bob Moore959c38a2018-02-15 13:09:31 -080027#define ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS
Linus Torvalds1da177e2005-04-16 15:20:36 -070028
29#ifdef __KERNEL__
30
Lv Zhenge2526522014-02-11 10:51:43 +080031#define ACPI_USE_SYSTEM_INTTYPES
Erik Schmauss87cd8262018-03-14 16:12:59 -070032#define ACPI_USE_GPE_POLLING
Lv Zhenge2526522014-02-11 10:51:43 +080033
Lv Zheng4d946f72015-10-19 10:25:56 +080034/* Kernel specific ACPICA configuration */
Al Stoneaf1ae782014-01-17 11:51:30 -070035
36#ifdef CONFIG_ACPI_REDUCED_HARDWARE_ONLY
37#define ACPI_REDUCED_HARDWARE 1
38#endif
39
Lv Zheng4d946f72015-10-19 10:25:56 +080040#ifdef CONFIG_ACPI_DEBUGGER
41#define ACPI_DEBUGGER
42#endif
43
Lv Zhengb4219a82016-07-05 13:53:04 +080044#ifdef CONFIG_ACPI_DEBUG
45#define ACPI_MUTEX_DEBUG
46#endif
47
Linus Torvalds1da177e2005-04-16 15:20:36 -070048#include <linux/string.h>
49#include <linux/kernel.h>
50#include <linux/ctype.h>
Alexey Starikovskiy8bd108d2008-09-25 21:40:30 +040051#include <linux/sched.h>
Arun Sharma600634972011-07-26 16:09:06 -070052#include <linux/atomic.h>
Lv Zheng93220582013-10-29 09:30:41 +080053#include <linux/math64.h>
Robert Moore73459f72005-06-24 00:00:00 -040054#include <linux/slab.h>
Bob Moore967440e32006-06-23 17:04:00 -040055#include <linux/spinlock_types.h>
Lv Zheng93220582013-10-29 09:30:41 +080056#ifdef EXPORT_ACPI_INTERFACES
57#include <linux/export.h>
58#endif
Lv Zhengd334c822014-07-16 16:58:08 +080059#ifdef CONFIG_ACPI
Lv Zheng07d83912014-05-12 15:46:38 +080060#include <asm/acenv.h>
Lv Zhengd334c822014-07-16 16:58:08 +080061#endif
Bob Moore83135242006-10-03 00:00:00 -040062
Lv Zheng2368b1a2016-08-04 16:43:19 +080063#define ACPI_INIT_FUNCTION __init
64
Lv Zheng42873a82014-04-30 10:05:15 +080065#ifndef CONFIG_ACPI
66
67/* External globals for __KERNEL__, stubs is needed */
68
69#define ACPI_GLOBAL(t,a)
70#define ACPI_INIT_GLOBAL(t,a,b)
71
72/* Generating stubs for configurable ACPICA macros */
73
74#define ACPI_NO_MEM_ALLOCATIONS
75
76/* Generating stubs for configurable ACPICA functions */
77
78#define ACPI_NO_ERROR_MESSAGES
79#undef ACPI_DEBUG_OUTPUT
80
81/* External interface for __KERNEL__, stub is needed */
82
83#define ACPI_EXTERNAL_RETURN_STATUS(prototype) \
84 static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);}
85#define ACPI_EXTERNAL_RETURN_OK(prototype) \
86 static ACPI_INLINE prototype {return(AE_OK);}
87#define ACPI_EXTERNAL_RETURN_VOID(prototype) \
88 static ACPI_INLINE prototype {return;}
89#define ACPI_EXTERNAL_RETURN_UINT32(prototype) \
90 static ACPI_INLINE prototype {return(0);}
91#define ACPI_EXTERNAL_RETURN_PTR(prototype) \
92 static ACPI_INLINE prototype {return(NULL);}
93
94#endif /* CONFIG_ACPI */
95
Bob Mooree0c437b2009-04-22 13:39:47 +080096/* Host-dependent types and defines for in-kernel ACPICA */
Bob Moore83135242006-10-03 00:00:00 -040097
98#define ACPI_MACHINE_WIDTH BITS_PER_LONG
Lv Zheng65082bf2017-08-03 14:26:50 +080099#define ACPI_USE_NATIVE_MATH64
Bob Moore83135242006-10-03 00:00:00 -0400100#define ACPI_EXPORT_SYMBOL(symbol) EXPORT_SYMBOL(symbol);
101#define strtoul simple_strtoul
Robert Moore73459f72005-06-24 00:00:00 -0400102
Bob Mooree0c437b2009-04-22 13:39:47 +0800103#define acpi_cache_t struct kmem_cache
104#define acpi_spinlock spinlock_t *
105#define acpi_cpu_flags unsigned long
Bob Mooree0c437b2009-04-22 13:39:47 +0800106
Lv Zhengd13bd5a2014-05-12 15:46:32 +0800107/* Use native linux version of acpi_os_allocate_zeroed */
108
109#define USE_NATIVE_ALLOCATE_ZEROED
110
111/*
112 * Overrides for in-kernel ACPICA
113 */
114#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize
115#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate
116#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate
117#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed
118#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free
119#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_acquire_object
120#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id
121#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
Lv Zhengd13bd5a2014-05-12 15:46:32 +0800122
123/*
124 * OSL interfaces used by debugger/disassembler
125 */
126#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable
127#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable
Lv Zheng703ecd22016-12-28 15:28:07 +0800128#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize_debugger
129#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate_debugger
Lv Zhengd13bd5a2014-05-12 15:46:32 +0800130
131/*
132 * OSL interfaces used by utilities
133 */
134#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output
Lv Zhengd13bd5a2014-05-12 15:46:32 +0800135#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name
136#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index
137#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address
138#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory
139#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename
140#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory
141
Lv Zhengb5c08752016-08-04 16:42:49 +0800142#define ACPI_MSG_ERROR KERN_ERR "ACPI Error: "
143#define ACPI_MSG_EXCEPTION KERN_ERR "ACPI Exception: "
144#define ACPI_MSG_WARNING KERN_WARNING "ACPI Warning: "
145#define ACPI_MSG_INFO KERN_INFO "ACPI: "
146
147#define ACPI_MSG_BIOS_ERROR KERN_ERR "ACPI BIOS Error (bug): "
148#define ACPI_MSG_BIOS_WARNING KERN_WARNING "ACPI BIOS Warning (bug): "
149
Kees Cook99e597a2017-07-10 15:23:08 +0800150/*
151 * Linux wants to use designated initializers for function pointer structs.
152 */
Kees Cook3d867f62017-06-27 00:53:07 +0200153#define ACPI_STRUCT_INIT(field, value) .field = value
154
Lv Zheng839e9282013-10-29 09:29:51 +0800155#else /* !__KERNEL__ */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700156
Lv Zhengda24f312016-08-04 16:44:44 +0800157#define ACPI_USE_STANDARD_HEADERS
158
159#ifdef ACPI_USE_STANDARD_HEADERS
Linus Torvalds1da177e2005-04-16 15:20:36 -0700160#include <unistd.h>
Lv Zhengda24f312016-08-04 16:44:44 +0800161#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -0700162
Lv Zhenga3a80da2014-04-04 12:37:59 +0800163/* Define/disable kernel-specific declarators */
Lv Zheng7e66b462014-02-11 10:51:33 +0800164
165#ifndef __init
166#define __init
167#endif
Lv Zhengd5a4b1a2016-11-16 17:27:34 +0800168#ifndef __iomem
169#define __iomem
170#endif
Lv Zheng7e66b462014-02-11 10:51:33 +0800171
Bob Mooree0c437b2009-04-22 13:39:47 +0800172/* Host-dependent types and defines for user-space ACPICA */
173
174#define ACPI_FLUSH_CPU_CACHE()
Lin Ming28eb3fc2010-09-15 13:55:13 +0800175#define ACPI_CAST_PTHREAD_T(pthread) ((acpi_thread_id) (pthread))
Bob Mooree0c437b2009-04-22 13:39:47 +0800176
Anuj Mittal0eedae82018-01-24 15:42:29 -0800177#if defined(__ia64__) || (defined(__x86_64__) && !defined(__ILP32__)) ||\
Colin Ian King23741562016-12-28 15:28:56 +0800178 defined(__aarch64__) || defined(__PPC64__) ||\
179 defined(__s390x__)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700180#define ACPI_MACHINE_WIDTH 64
181#define COMPILER_DEPENDENT_INT64 long
182#define COMPILER_DEPENDENT_UINT64 unsigned long
183#else
184#define ACPI_MACHINE_WIDTH 32
185#define COMPILER_DEPENDENT_INT64 long long
186#define COMPILER_DEPENDENT_UINT64 unsigned long long
187#define ACPI_USE_NATIVE_DIVIDE
Lv Zheng65082bf2017-08-03 14:26:50 +0800188#define ACPI_USE_NATIVE_MATH64
Linus Torvalds1da177e2005-04-16 15:20:36 -0700189#endif
190
Bob Moorea0a3f6c2007-03-27 20:25:46 -0400191#ifndef __cdecl
Linus Torvalds1da177e2005-04-16 15:20:36 -0700192#define __cdecl
Bob Moorea0a3f6c2007-03-27 20:25:46 -0400193#endif
194
Lv Zheng839e9282013-10-29 09:29:51 +0800195#endif /* __KERNEL__ */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700196
Lv Zheng839e9282013-10-29 09:29:51 +0800197#endif /* __ACLINUX_H__ */