Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * Module Name: utxfinit - External interfaces for ACPICA initialization
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * Copyright (C) 2000 - 2020, Intel Corp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  *****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #define EXPORT_ACPI_INTERFACES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #include <acpi/acpi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include "accommon.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include "acevents.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #include "acnamesp.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #include "acdebug.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #include "actables.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #define _COMPONENT          ACPI_UTILITIES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) ACPI_MODULE_NAME("utxfinit")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) /* For acpi_exec only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) void ae_do_object_overrides(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27)  * FUNCTION:    acpi_initialize_subsystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)  * PARAMETERS:  None
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)  * RETURN:      Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)  * DESCRIPTION: Initializes all global variables. This is the first function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)  *              called, so any early initialization belongs here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) acpi_status ACPI_INIT_FUNCTION acpi_initialize_subsystem(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	acpi_status status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	ACPI_FUNCTION_TRACE(acpi_initialize_subsystem);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	acpi_gbl_startup_flags = ACPI_SUBSYSTEM_INITIALIZE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	ACPI_DEBUG_EXEC(acpi_ut_init_stack_ptr_trace());
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	/* Initialize the OS-Dependent layer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	status = acpi_os_initialize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 		ACPI_EXCEPTION((AE_INFO, status, "During OSL initialization"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 		return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	/* Initialize all globals used by the subsystem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	status = acpi_ut_init_globals();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 		ACPI_EXCEPTION((AE_INFO, status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 				"During initialization of globals"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 		return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	/* Create the default mutex objects */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	status = acpi_ut_mutex_initialize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 		ACPI_EXCEPTION((AE_INFO, status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 				"During Global Mutex creation"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 		return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	 * Initialize the namespace manager and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	 * the root of the namespace tree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	status = acpi_ns_root_initialize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 		ACPI_EXCEPTION((AE_INFO, status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 				"During Namespace initialization"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 		return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	/* Initialize the global OSI interfaces list with the static names */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	status = acpi_ut_initialize_interfaces();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 		ACPI_EXCEPTION((AE_INFO, status,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 				"During OSI interfaces initialization"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 		return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	return_ACPI_STATUS(AE_OK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) ACPI_EXPORT_SYMBOL_INIT(acpi_initialize_subsystem)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)  * FUNCTION:    acpi_enable_subsystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)  * PARAMETERS:  flags               - Init/enable Options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)  * RETURN:      Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)  * DESCRIPTION: Completes the subsystem initialization including hardware.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)  *              Puts system into ACPI mode if it isn't already.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) acpi_status ACPI_INIT_FUNCTION acpi_enable_subsystem(u32 flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	acpi_status status = AE_OK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	ACPI_FUNCTION_TRACE(acpi_enable_subsystem);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	 * The early initialization phase is complete. The namespace is loaded,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	 * and we can now support address spaces other than Memory, I/O, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	 * PCI_Config.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	acpi_gbl_early_initialization = FALSE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #if (!ACPI_REDUCED_HARDWARE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	/* Enable ACPI mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	if (!(flags & ACPI_NO_ACPI_ENABLE)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 		ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 				  "[Init] Going into ACPI mode\n"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 		acpi_gbl_original_mode = acpi_hw_get_mode();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 		status = acpi_enable();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 		if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 			ACPI_WARNING((AE_INFO, "AcpiEnable failed"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 			return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	 * Obtain a permanent mapping for the FACS. This is required for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	 * Global Lock and the Firmware Waking Vector
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	if (!(flags & ACPI_NO_FACS_INIT)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 		status = acpi_tb_initialize_facs();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 		if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 			ACPI_WARNING((AE_INFO, "Could not map the FACS table"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 			return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	 * Initialize ACPI Event handling (Fixed and General Purpose)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	 * Note1: We must have the hardware and events initialized before we can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	 * execute any control methods safely. Any control method can require
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	 * ACPI hardware support, so the hardware must be fully initialized before
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	 * any method execution!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	 * Note2: Fixed events are initialized and enabled here. GPEs are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	 * initialized, but cannot be enabled until after the hardware is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	 * completely initialized (SCI and global_lock activated) and the various
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	 * initialization control methods are run (_REG, _STA, _INI) on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	 * entire namespace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	if (!(flags & ACPI_NO_EVENT_INIT)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 		ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 				  "[Init] Initializing ACPI events\n"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 		status = acpi_ev_initialize_events();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 		if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 			return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	 * Install the SCI handler and Global Lock handler. This completes the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	 * hardware initialization.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	if (!(flags & ACPI_NO_HANDLER_INIT)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 		ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 				  "[Init] Installing SCI/GL handlers\n"));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 		status = acpi_ev_install_xrupt_handlers();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 		if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 			return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) #endif				/* !ACPI_REDUCED_HARDWARE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 	return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) ACPI_EXPORT_SYMBOL_INIT(acpi_enable_subsystem)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)  * FUNCTION:    acpi_initialize_objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)  * PARAMETERS:  flags               - Init/enable Options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)  * RETURN:      Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)  * DESCRIPTION: Completes namespace initialization by initializing device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)  *              objects and executing AML code for Regions, buffers, etc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) acpi_status ACPI_INIT_FUNCTION acpi_initialize_objects(u32 flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	acpi_status status = AE_OK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 	ACPI_FUNCTION_TRACE(acpi_initialize_objects);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #ifdef ACPI_OBSOLETE_BEHAVIOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 	 * 05/2019: Removed, initialization now happens at both object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 	 * creation and table load time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 	 * Initialize the objects that remain uninitialized. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	 * runs the executable AML that may be part of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 	 * declaration of these objects: operation_regions, buffer_fields,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	 * bank_fields, Buffers, and Packages.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 	if (!(flags & ACPI_NO_OBJECT_INIT)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 		status = acpi_ns_initialize_objects();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 		if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 			return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 	 * Initialize all device/region objects in the namespace. This runs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 	 * the device _STA and _INI methods and region _REG methods.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 	if (!(flags & (ACPI_NO_DEVICE_INIT | ACPI_NO_ADDRESS_SPACE_INIT))) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 		status = acpi_ns_initialize_devices(flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 		if (ACPI_FAILURE(status)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 			return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 	 * Empty the caches (delete the cached objects) on the assumption that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 	 * the table load filled them up more than they will be at runtime --
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 	 * thus wasting non-paged memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 	status = acpi_purge_cached_objects();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 	acpi_gbl_startup_flags |= ACPI_INITIALIZED_OK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 	return_ACPI_STATUS(status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) ACPI_EXPORT_SYMBOL_INIT(acpi_initialize_objects)