xref: /openbmc/linux/drivers/acpi/acpica/utglobal.c (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
195857638SErik Schmauss // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
295b482a8SLen Brown /******************************************************************************
395b482a8SLen Brown  *
495b482a8SLen Brown  * Module Name: utglobal - Global variables for the ACPI subsystem
595b482a8SLen Brown  *
6*612c2932SBob Moore  * Copyright (C) 2000 - 2023, Intel Corp.
795b482a8SLen Brown  *
895857638SErik Schmauss  *****************************************************************************/
995b482a8SLen Brown 
10839e928fSLv Zheng #define EXPORT_ACPI_INTERFACES
1195b482a8SLen Brown #define DEFINE_ACPI_GLOBALS
1295b482a8SLen Brown 
1395b482a8SLen Brown #include <acpi/acpi.h>
14e2f7a777SLen Brown #include "accommon.h"
1595b482a8SLen Brown 
1695b482a8SLen Brown #define _COMPONENT          ACPI_UTILITIES
1795b482a8SLen Brown ACPI_MODULE_NAME("utglobal")
1895b482a8SLen Brown 
1995b482a8SLen Brown /*******************************************************************************
2095b482a8SLen Brown  *
2195b482a8SLen Brown  * Static global variable initialization.
2295b482a8SLen Brown  *
2395b482a8SLen Brown  ******************************************************************************/
243aa0b085SLv Zheng /* Various state name strings */
2595b482a8SLen Brown const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT] = {
2695b482a8SLen Brown 	"\\_S0_",
2795b482a8SLen Brown 	"\\_S1_",
2895b482a8SLen Brown 	"\\_S2_",
2995b482a8SLen Brown 	"\\_S3_",
3095b482a8SLen Brown 	"\\_S4_",
3195b482a8SLen Brown 	"\\_S5_"
3295b482a8SLen Brown };
3395b482a8SLen Brown 
3415b8dd53SBob Moore const char *acpi_gbl_lowest_dstate_names[ACPI_NUM_sx_w_METHODS] = {
3515b8dd53SBob Moore 	"_S0W",
3615b8dd53SBob Moore 	"_S1W",
3715b8dd53SBob Moore 	"_S2W",
3815b8dd53SBob Moore 	"_S3W",
3915b8dd53SBob Moore 	"_S4W"
4015b8dd53SBob Moore };
4115b8dd53SBob Moore 
4215b8dd53SBob Moore const char *acpi_gbl_highest_dstate_names[ACPI_NUM_sx_d_METHODS] = {
4395b482a8SLen Brown 	"_S1D",
4495b482a8SLen Brown 	"_S2D",
4595b482a8SLen Brown 	"_S3D",
4695b482a8SLen Brown 	"_S4D"
4795b482a8SLen Brown };
4895b482a8SLen Brown 
490dfaaa3dSBob Moore /* Hex-to-ascii */
500dfaaa3dSBob Moore 
510dfaaa3dSBob Moore const char acpi_gbl_lower_hex_digits[] = "0123456789abcdef";
520dfaaa3dSBob Moore const char acpi_gbl_upper_hex_digits[] = "0123456789ABCDEF";
530dfaaa3dSBob Moore 
5495b482a8SLen Brown /*******************************************************************************
5595b482a8SLen Brown  *
5695b482a8SLen Brown  * Namespace globals
5795b482a8SLen Brown  *
5895b482a8SLen Brown  ******************************************************************************/
5995b482a8SLen Brown /*
6095b482a8SLen Brown  * Predefined ACPI Names (Built-in to the Interpreter)
6195b482a8SLen Brown  *
6295b482a8SLen Brown  * NOTES:
6395b482a8SLen Brown  * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
6495b482a8SLen Brown  *    during the initialization sequence.
6595b482a8SLen Brown  * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
6681256669SBob Moore  *    perform a Notify() operation on it. 09/2010: Changed to type Device.
6781256669SBob Moore  *    This still allows notifies, but does not confuse host code that
6881256669SBob Moore  *    searches for valid thermal_zone objects.
6995b482a8SLen Brown  */
7095b482a8SLen Brown const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = {
7195b482a8SLen Brown 	{"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
7295b482a8SLen Brown 	{"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
7395b482a8SLen Brown 	{"_SB_", ACPI_TYPE_DEVICE, NULL},
7495b482a8SLen Brown 	{"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
7581256669SBob Moore 	{"_TZ_", ACPI_TYPE_DEVICE, NULL},
76ea7d5215SRafael J. Wysocki 	/*
77ea7d5215SRafael J. Wysocki 	 * March, 2015:
78ea7d5215SRafael J. Wysocki 	 * The _REV object is in the process of being deprecated, because
79ea7d5215SRafael J. Wysocki 	 * other ACPI implementations permanently return 2. Thus, it
80ea7d5215SRafael J. Wysocki 	 * has little or no value. Return 2 for compatibility with
81ea7d5215SRafael J. Wysocki 	 * other ACPI implementations.
82ea7d5215SRafael J. Wysocki 	 */
83ea7d5215SRafael J. Wysocki 	{"_REV", ACPI_TYPE_INTEGER, ACPI_CAST_PTR(char, 2)},
8495b482a8SLen Brown 	{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
85ea7d5215SRafael J. Wysocki 	{"_GL_", ACPI_TYPE_MUTEX, ACPI_CAST_PTR(char, 1)},
86ea7d5215SRafael J. Wysocki 	{"_OSI", ACPI_TYPE_METHOD, ACPI_CAST_PTR(char, 1)},
8795b482a8SLen Brown 
8895b482a8SLen Brown 	/* Table terminator */
8995b482a8SLen Brown 
9095b482a8SLen Brown 	{NULL, ACPI_TYPE_ANY, NULL}
9195b482a8SLen Brown };
9295b482a8SLen Brown 
9333620c54SBob Moore #if (!ACPI_REDUCED_HARDWARE)
9495b482a8SLen Brown /******************************************************************************
9595b482a8SLen Brown  *
9695b482a8SLen Brown  * Event and Hardware globals
9795b482a8SLen Brown  *
9895b482a8SLen Brown  ******************************************************************************/
9995b482a8SLen Brown 
10095b482a8SLen Brown struct acpi_bit_register_info acpi_gbl_bit_register_info[ACPI_NUM_BITREG] = {
10195b482a8SLen Brown 	/* Name                                     Parent Register             Register Bit Position                   Register Bit Mask       */
10295b482a8SLen Brown 
10395b482a8SLen Brown 	/* ACPI_BITREG_TIMER_STATUS         */ {ACPI_REGISTER_PM1_STATUS,
10495b482a8SLen Brown 						ACPI_BITPOSITION_TIMER_STATUS,
10595b482a8SLen Brown 						ACPI_BITMASK_TIMER_STATUS},
10695b482a8SLen Brown 	/* ACPI_BITREG_BUS_MASTER_STATUS    */ {ACPI_REGISTER_PM1_STATUS,
10795b482a8SLen Brown 						ACPI_BITPOSITION_BUS_MASTER_STATUS,
10895b482a8SLen Brown 						ACPI_BITMASK_BUS_MASTER_STATUS},
10995b482a8SLen Brown 	/* ACPI_BITREG_GLOBAL_LOCK_STATUS   */ {ACPI_REGISTER_PM1_STATUS,
11095b482a8SLen Brown 						ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,
11195b482a8SLen Brown 						ACPI_BITMASK_GLOBAL_LOCK_STATUS},
11295b482a8SLen Brown 	/* ACPI_BITREG_POWER_BUTTON_STATUS  */ {ACPI_REGISTER_PM1_STATUS,
11395b482a8SLen Brown 						ACPI_BITPOSITION_POWER_BUTTON_STATUS,
11495b482a8SLen Brown 						ACPI_BITMASK_POWER_BUTTON_STATUS},
11595b482a8SLen Brown 	/* ACPI_BITREG_SLEEP_BUTTON_STATUS  */ {ACPI_REGISTER_PM1_STATUS,
11695b482a8SLen Brown 						ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,
11795b482a8SLen Brown 						ACPI_BITMASK_SLEEP_BUTTON_STATUS},
11895b482a8SLen Brown 	/* ACPI_BITREG_RT_CLOCK_STATUS      */ {ACPI_REGISTER_PM1_STATUS,
11995b482a8SLen Brown 						ACPI_BITPOSITION_RT_CLOCK_STATUS,
12095b482a8SLen Brown 						ACPI_BITMASK_RT_CLOCK_STATUS},
12195b482a8SLen Brown 	/* ACPI_BITREG_WAKE_STATUS          */ {ACPI_REGISTER_PM1_STATUS,
12295b482a8SLen Brown 						ACPI_BITPOSITION_WAKE_STATUS,
12395b482a8SLen Brown 						ACPI_BITMASK_WAKE_STATUS},
12495b482a8SLen Brown 	/* ACPI_BITREG_PCIEXP_WAKE_STATUS   */ {ACPI_REGISTER_PM1_STATUS,
12595b482a8SLen Brown 						ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,
12695b482a8SLen Brown 						ACPI_BITMASK_PCIEXP_WAKE_STATUS},
12795b482a8SLen Brown 
12895b482a8SLen Brown 	/* ACPI_BITREG_TIMER_ENABLE         */ {ACPI_REGISTER_PM1_ENABLE,
12995b482a8SLen Brown 						ACPI_BITPOSITION_TIMER_ENABLE,
13095b482a8SLen Brown 						ACPI_BITMASK_TIMER_ENABLE},
13195b482a8SLen Brown 	/* ACPI_BITREG_GLOBAL_LOCK_ENABLE   */ {ACPI_REGISTER_PM1_ENABLE,
13295b482a8SLen Brown 						ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,
13395b482a8SLen Brown 						ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
13495b482a8SLen Brown 	/* ACPI_BITREG_POWER_BUTTON_ENABLE  */ {ACPI_REGISTER_PM1_ENABLE,
13595b482a8SLen Brown 						ACPI_BITPOSITION_POWER_BUTTON_ENABLE,
13695b482a8SLen Brown 						ACPI_BITMASK_POWER_BUTTON_ENABLE},
13795b482a8SLen Brown 	/* ACPI_BITREG_SLEEP_BUTTON_ENABLE  */ {ACPI_REGISTER_PM1_ENABLE,
13895b482a8SLen Brown 						ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,
13995b482a8SLen Brown 						ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
14095b482a8SLen Brown 	/* ACPI_BITREG_RT_CLOCK_ENABLE      */ {ACPI_REGISTER_PM1_ENABLE,
14195b482a8SLen Brown 						ACPI_BITPOSITION_RT_CLOCK_ENABLE,
14295b482a8SLen Brown 						ACPI_BITMASK_RT_CLOCK_ENABLE},
14395b482a8SLen Brown 	/* ACPI_BITREG_PCIEXP_WAKE_DISABLE  */ {ACPI_REGISTER_PM1_ENABLE,
14495b482a8SLen Brown 						ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,
14595b482a8SLen Brown 						ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
14695b482a8SLen Brown 
14795b482a8SLen Brown 	/* ACPI_BITREG_SCI_ENABLE           */ {ACPI_REGISTER_PM1_CONTROL,
14895b482a8SLen Brown 						ACPI_BITPOSITION_SCI_ENABLE,
14995b482a8SLen Brown 						ACPI_BITMASK_SCI_ENABLE},
15095b482a8SLen Brown 	/* ACPI_BITREG_BUS_MASTER_RLD       */ {ACPI_REGISTER_PM1_CONTROL,
15195b482a8SLen Brown 						ACPI_BITPOSITION_BUS_MASTER_RLD,
15295b482a8SLen Brown 						ACPI_BITMASK_BUS_MASTER_RLD},
15395b482a8SLen Brown 	/* ACPI_BITREG_GLOBAL_LOCK_RELEASE  */ {ACPI_REGISTER_PM1_CONTROL,
15495b482a8SLen Brown 						ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,
15595b482a8SLen Brown 						ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
15682d79b86SBob Moore 	/* ACPI_BITREG_SLEEP_TYPE           */ {ACPI_REGISTER_PM1_CONTROL,
15782d79b86SBob Moore 						ACPI_BITPOSITION_SLEEP_TYPE,
15882d79b86SBob Moore 						ACPI_BITMASK_SLEEP_TYPE},
15995b482a8SLen Brown 	/* ACPI_BITREG_SLEEP_ENABLE         */ {ACPI_REGISTER_PM1_CONTROL,
16095b482a8SLen Brown 						ACPI_BITPOSITION_SLEEP_ENABLE,
16195b482a8SLen Brown 						ACPI_BITMASK_SLEEP_ENABLE},
16295b482a8SLen Brown 
16395b482a8SLen Brown 	/* ACPI_BITREG_ARB_DIS              */ {ACPI_REGISTER_PM2_CONTROL,
16495b482a8SLen Brown 						ACPI_BITPOSITION_ARB_DISABLE,
16595b482a8SLen Brown 						ACPI_BITMASK_ARB_DISABLE}
16695b482a8SLen Brown };
16795b482a8SLen Brown 
16895b482a8SLen Brown struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] = {
16995b482a8SLen Brown 	/* ACPI_EVENT_PMTIMER       */ {ACPI_BITREG_TIMER_STATUS,
17095b482a8SLen Brown 					ACPI_BITREG_TIMER_ENABLE,
17195b482a8SLen Brown 					ACPI_BITMASK_TIMER_STATUS,
17295b482a8SLen Brown 					ACPI_BITMASK_TIMER_ENABLE},
17395b482a8SLen Brown 	/* ACPI_EVENT_GLOBAL        */ {ACPI_BITREG_GLOBAL_LOCK_STATUS,
17495b482a8SLen Brown 					ACPI_BITREG_GLOBAL_LOCK_ENABLE,
17595b482a8SLen Brown 					ACPI_BITMASK_GLOBAL_LOCK_STATUS,
17695b482a8SLen Brown 					ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
17795b482a8SLen Brown 	/* ACPI_EVENT_POWER_BUTTON  */ {ACPI_BITREG_POWER_BUTTON_STATUS,
17895b482a8SLen Brown 					ACPI_BITREG_POWER_BUTTON_ENABLE,
17995b482a8SLen Brown 					ACPI_BITMASK_POWER_BUTTON_STATUS,
18095b482a8SLen Brown 					ACPI_BITMASK_POWER_BUTTON_ENABLE},
18195b482a8SLen Brown 	/* ACPI_EVENT_SLEEP_BUTTON  */ {ACPI_BITREG_SLEEP_BUTTON_STATUS,
18295b482a8SLen Brown 					ACPI_BITREG_SLEEP_BUTTON_ENABLE,
18395b482a8SLen Brown 					ACPI_BITMASK_SLEEP_BUTTON_STATUS,
18495b482a8SLen Brown 					ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
18595b482a8SLen Brown 	/* ACPI_EVENT_RTC           */ {ACPI_BITREG_RT_CLOCK_STATUS,
18695b482a8SLen Brown 					ACPI_BITREG_RT_CLOCK_ENABLE,
18795b482a8SLen Brown 					ACPI_BITMASK_RT_CLOCK_STATUS,
18895b482a8SLen Brown 					ACPI_BITMASK_RT_CLOCK_ENABLE},
18995b482a8SLen Brown };
19033620c54SBob Moore #endif				/* !ACPI_REDUCED_HARDWARE */
19195b482a8SLen Brown 
192fe0f8765SBob Moore #if defined (ACPI_DISASSEMBLER) || defined (ACPI_ASL_COMPILER)
193fe0f8765SBob Moore 
194fe0f8765SBob Moore /* to_pld macro: compile/disassemble strings */
195fe0f8765SBob Moore 
196fe0f8765SBob Moore const char *acpi_gbl_pld_panel_list[] = {
197fe0f8765SBob Moore 	"TOP",
198fe0f8765SBob Moore 	"BOTTOM",
199fe0f8765SBob Moore 	"LEFT",
200fe0f8765SBob Moore 	"RIGHT",
201fe0f8765SBob Moore 	"FRONT",
202fe0f8765SBob Moore 	"BACK",
203fe0f8765SBob Moore 	"UNKNOWN",
204fe0f8765SBob Moore 	NULL
205fe0f8765SBob Moore };
206fe0f8765SBob Moore 
207fe0f8765SBob Moore const char *acpi_gbl_pld_vertical_position_list[] = {
208fe0f8765SBob Moore 	"UPPER",
209fe0f8765SBob Moore 	"CENTER",
210fe0f8765SBob Moore 	"LOWER",
211fe0f8765SBob Moore 	NULL
212fe0f8765SBob Moore };
213fe0f8765SBob Moore 
214fe0f8765SBob Moore const char *acpi_gbl_pld_horizontal_position_list[] = {
215fe0f8765SBob Moore 	"LEFT",
216fe0f8765SBob Moore 	"CENTER",
217fe0f8765SBob Moore 	"RIGHT",
218fe0f8765SBob Moore 	NULL
219fe0f8765SBob Moore };
220fe0f8765SBob Moore 
221fe0f8765SBob Moore const char *acpi_gbl_pld_shape_list[] = {
222fe0f8765SBob Moore 	"ROUND",
223fe0f8765SBob Moore 	"OVAL",
224fe0f8765SBob Moore 	"SQUARE",
225fe0f8765SBob Moore 	"VERTICALRECTANGLE",
226fe0f8765SBob Moore 	"HORIZONTALRECTANGLE",
227fe0f8765SBob Moore 	"VERTICALTRAPEZOID",
228fe0f8765SBob Moore 	"HORIZONTALTRAPEZOID",
229fe0f8765SBob Moore 	"UNKNOWN",
230fe0f8765SBob Moore 	"CHAMFERED",
231fe0f8765SBob Moore 	NULL
232fe0f8765SBob Moore };
233fe0f8765SBob Moore #endif
234fe0f8765SBob Moore 
23575c8044fSLv Zheng /* Public globals */
2363e8214e5SLv Zheng 
23795b482a8SLen Brown ACPI_EXPORT_SYMBOL(acpi_gbl_FADT)
23895b482a8SLen Brown ACPI_EXPORT_SYMBOL(acpi_dbg_level)
23995b482a8SLen Brown ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
2409187a415SLv Zheng ACPI_EXPORT_SYMBOL(acpi_gpe_count)
24195b482a8SLen Brown ACPI_EXPORT_SYMBOL(acpi_current_gpe_count)
242