mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 16:22:43 +00:00 
			
		
		
		
	 fb3e46e930
			
		
	
	
		fb3e46e930
		
	
	
	
	
		
			
			This mostly just moved the problem, as a lot of the callers are not capable of propagating the errors themselves, but it's a step in the right direction.
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2020-2021, Liav A. <liavalb@hotmail.co.il>
 | |
|  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <Kernel/CommandLine.h>
 | |
| #include <Kernel/Firmware/ACPI/Parser.h>
 | |
| #include <Kernel/Memory/TypedMapping.h>
 | |
| #include <Kernel/Sections.h>
 | |
| 
 | |
| namespace Kernel::ACPI {
 | |
| 
 | |
| UNMAP_AFTER_INIT void initialize()
 | |
| {
 | |
|     auto feature_level = kernel_command_line().acpi_feature_level();
 | |
|     if (feature_level == AcpiFeatureLevel::Disabled)
 | |
|         return;
 | |
| 
 | |
|     auto rsdp = StaticParsing::find_rsdp();
 | |
|     if (!rsdp.has_value())
 | |
|         return;
 | |
| 
 | |
|     auto facp = StaticParsing::find_table(rsdp.value(), "FACP");
 | |
|     if (!facp.has_value())
 | |
|         return;
 | |
|     auto facp_table_or_error = Memory::map_typed<Structures::FADT>(facp.value());
 | |
|     if (facp_table_or_error.is_error())
 | |
|         return;
 | |
|     u8 irq_line = facp_table_or_error.value()->sci_int;
 | |
| 
 | |
|     Parser::must_initialize(rsdp.value(), facp.value(), irq_line);
 | |
|     if (kernel_command_line().acpi_feature_level() == AcpiFeatureLevel::Enabled)
 | |
|         Parser::the()->enable_aml_parsing();
 | |
| }
 | |
| 
 | |
| bool is_enabled()
 | |
| {
 | |
|     return Parser::the();
 | |
| }
 | |
| 
 | |
| }
 |