diff --git a/Kernel/ACPI/Parser.cpp b/Kernel/ACPI/Parser.cpp index 9784976a91..a56f5287c6 100644 --- a/Kernel/ACPI/Parser.cpp +++ b/Kernel/ACPI/Parser.cpp @@ -104,7 +104,7 @@ void Parser::init_fadt() klog() << "ACPI: Fixed ACPI data, Revision " << sdt->h.revision << ", Length " << sdt->h.length << " bytes"; klog() << "ACPI: DSDT " << PhysicalAddress(sdt->dsdt_ptr); m_x86_specific_flags.cmos_rtc_not_present = (sdt->ia_pc_boot_arch_flags & (u8)FADTFlags::IA_PC_Flags::CMOS_RTC_Not_Present); - m_x86_specific_flags.keyboard_8042 = (sdt->ia_pc_boot_arch_flags & (u8)FADTFlags::IA_PC_Flags::PS2_8042); + m_x86_specific_flags.keyboard_8042 = (sdt->h.revision <= 1) || (sdt->ia_pc_boot_arch_flags & (u8)FADTFlags::IA_PC_Flags::PS2_8042); m_x86_specific_flags.legacy_devices = (sdt->ia_pc_boot_arch_flags & (u8)FADTFlags::IA_PC_Flags::Legacy_Devices); m_x86_specific_flags.msi_not_supported = (sdt->ia_pc_boot_arch_flags & (u8)FADTFlags::IA_PC_Flags::MSI_Not_Supported); m_x86_specific_flags.vga_not_present = (sdt->ia_pc_boot_arch_flags & (u8)FADTFlags::IA_PC_Flags::VGA_Not_Present); diff --git a/Kernel/ACPI/Parser.h b/Kernel/ACPI/Parser.h index 6d1717a254..e9fecebcf1 100644 --- a/Kernel/ACPI/Parser.h +++ b/Kernel/ACPI/Parser.h @@ -54,6 +54,11 @@ public: virtual void try_acpi_shutdown(); virtual bool can_shutdown() { return false; } + virtual bool have_8042() const + { + return m_x86_specific_flags.keyboard_8042; + } + const FADTFlags::HardwareFeatures& hardware_features() const { return m_hardware_flags; } const FADTFlags::x86_Specific_Flags& x86_specific_flags() const { return m_x86_specific_flags; }