0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #define EXPORT_ACPI_INTERFACES
0011
0012 #include <acpi/acpi.h>
0013 #include "accommon.h"
0014 #include "acevents.h"
0015 #include "acnamesp.h"
0016 #include "acdebug.h"
0017 #include "actables.h"
0018
0019 #define _COMPONENT ACPI_UTILITIES
0020 ACPI_MODULE_NAME("utxfinit")
0021
0022
0023 void ae_do_object_overrides(void);
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 acpi_status ACPI_INIT_FUNCTION acpi_initialize_subsystem(void)
0039 {
0040 acpi_status status;
0041
0042 ACPI_FUNCTION_TRACE(acpi_initialize_subsystem);
0043
0044 acpi_gbl_startup_flags = ACPI_SUBSYSTEM_INITIALIZE;
0045 ACPI_DEBUG_EXEC(acpi_ut_init_stack_ptr_trace());
0046
0047
0048
0049 status = acpi_os_initialize();
0050 if (ACPI_FAILURE(status)) {
0051 ACPI_EXCEPTION((AE_INFO, status, "During OSL initialization"));
0052 return_ACPI_STATUS(status);
0053 }
0054
0055
0056
0057 status = acpi_ut_init_globals();
0058 if (ACPI_FAILURE(status)) {
0059 ACPI_EXCEPTION((AE_INFO, status,
0060 "During initialization of globals"));
0061 return_ACPI_STATUS(status);
0062 }
0063
0064
0065
0066 status = acpi_ut_mutex_initialize();
0067 if (ACPI_FAILURE(status)) {
0068 ACPI_EXCEPTION((AE_INFO, status,
0069 "During Global Mutex creation"));
0070 return_ACPI_STATUS(status);
0071 }
0072
0073
0074
0075
0076
0077 status = acpi_ns_root_initialize();
0078 if (ACPI_FAILURE(status)) {
0079 ACPI_EXCEPTION((AE_INFO, status,
0080 "During Namespace initialization"));
0081 return_ACPI_STATUS(status);
0082 }
0083
0084
0085
0086 status = acpi_ut_initialize_interfaces();
0087 if (ACPI_FAILURE(status)) {
0088 ACPI_EXCEPTION((AE_INFO, status,
0089 "During OSI interfaces initialization"));
0090 return_ACPI_STATUS(status);
0091 }
0092
0093 return_ACPI_STATUS(AE_OK);
0094 }
0095
0096 ACPI_EXPORT_SYMBOL_INIT(acpi_initialize_subsystem)
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110 acpi_status ACPI_INIT_FUNCTION acpi_enable_subsystem(u32 flags)
0111 {
0112 acpi_status status = AE_OK;
0113
0114 ACPI_FUNCTION_TRACE(acpi_enable_subsystem);
0115
0116
0117
0118
0119
0120
0121 acpi_gbl_early_initialization = FALSE;
0122
0123 #if (!ACPI_REDUCED_HARDWARE)
0124
0125
0126
0127 if (!(flags & ACPI_NO_ACPI_ENABLE)) {
0128 ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
0129 "[Init] Going into ACPI mode\n"));
0130
0131 acpi_gbl_original_mode = acpi_hw_get_mode();
0132
0133 status = acpi_enable();
0134 if (ACPI_FAILURE(status)) {
0135 ACPI_WARNING((AE_INFO, "AcpiEnable failed"));
0136 return_ACPI_STATUS(status);
0137 }
0138 }
0139
0140
0141
0142
0143
0144 if (!(flags & ACPI_NO_FACS_INIT)) {
0145 status = acpi_tb_initialize_facs();
0146 if (ACPI_FAILURE(status)) {
0147 ACPI_WARNING((AE_INFO, "Could not map the FACS table"));
0148 return_ACPI_STATUS(status);
0149 }
0150 }
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166 if (!(flags & ACPI_NO_EVENT_INIT)) {
0167 ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
0168 "[Init] Initializing ACPI events\n"));
0169
0170 status = acpi_ev_initialize_events();
0171 if (ACPI_FAILURE(status)) {
0172 return_ACPI_STATUS(status);
0173 }
0174 }
0175
0176
0177
0178
0179
0180 if (!(flags & ACPI_NO_HANDLER_INIT)) {
0181 ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
0182 "[Init] Installing SCI/GL handlers\n"));
0183
0184 status = acpi_ev_install_xrupt_handlers();
0185 if (ACPI_FAILURE(status)) {
0186 return_ACPI_STATUS(status);
0187 }
0188 }
0189 #endif
0190
0191 return_ACPI_STATUS(status);
0192 }
0193
0194 ACPI_EXPORT_SYMBOL_INIT(acpi_enable_subsystem)
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208 acpi_status ACPI_INIT_FUNCTION acpi_initialize_objects(u32 flags)
0209 {
0210 acpi_status status = AE_OK;
0211
0212 ACPI_FUNCTION_TRACE(acpi_initialize_objects);
0213
0214 #ifdef ACPI_OBSOLETE_BEHAVIOR
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226 if (!(flags & ACPI_NO_OBJECT_INIT)) {
0227 status = acpi_ns_initialize_objects();
0228 if (ACPI_FAILURE(status)) {
0229 return_ACPI_STATUS(status);
0230 }
0231 }
0232 #endif
0233
0234
0235
0236
0237
0238 if (!(flags & (ACPI_NO_DEVICE_INIT | ACPI_NO_ADDRESS_SPACE_INIT))) {
0239 status = acpi_ns_initialize_devices(flags);
0240 if (ACPI_FAILURE(status)) {
0241 return_ACPI_STATUS(status);
0242 }
0243 }
0244
0245
0246
0247
0248
0249
0250 status = acpi_purge_cached_objects();
0251
0252 acpi_gbl_startup_flags |= ACPI_INITIALIZED_OK;
0253 return_ACPI_STATUS(status);
0254 }
0255
0256 ACPI_EXPORT_SYMBOL_INIT(acpi_initialize_objects)