mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 13:32:45 +00:00 
			
		
		
		
	 9132596b8e
			
		
	
	
		9132596b8e
		
	
	
	
	
		
			
			This will somwhat help unify them also under the same SysFS directory in the commit. Also, it feels much more like this change reflects the reality that both ACPI and the BIOS are part of the firmware on x86 computers.
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			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 = Memory::map_typed<Structures::FADT>(facp.value());
 | |
|     u8 irq_line = facp_table->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();
 | |
| }
 | |
| 
 | |
| }
 |