1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-26 00:45:06 +00:00

Kernel: Move x86-specific HID code to the Arch/x86 directory

The i8042 controller with its attached devices, the PS2 keyboard and
mouse, rely on x86-specific IO instructions to work. Therefore, move
them to the Arch/x86 directory to make it easier to omit the handling
code of these devices.
This commit is contained in:
Liav A 2022-09-03 10:25:33 +03:00 committed by Linus Groh
parent 948be9674a
commit c50a81e93e
11 changed files with 23 additions and 16 deletions

View file

@ -6,10 +6,10 @@
*/ */
#include <AK/Types.h> #include <AK/Types.h>
#include <Kernel/Arch/x86/ISABus/HID/PS2KeyboardDevice.h>
#include <Kernel/Debug.h> #include <Kernel/Debug.h>
#include <Kernel/Devices/DeviceManagement.h> #include <Kernel/Devices/DeviceManagement.h>
#include <Kernel/Devices/HID/HIDManagement.h> #include <Kernel/Devices/HID/HIDManagement.h>
#include <Kernel/Devices/HID/PS2KeyboardDevice.h>
#include <Kernel/Scheduler.h> #include <Kernel/Scheduler.h>
#include <Kernel/Sections.h> #include <Kernel/Sections.h>
#include <Kernel/TTY/ConsoleManagement.h> #include <Kernel/TTY/ConsoleManagement.h>

View file

@ -10,7 +10,7 @@
#include <AK/DoublyLinkedList.h> #include <AK/DoublyLinkedList.h>
#include <AK/Types.h> #include <AK/Types.h>
#include <Kernel/API/KeyCode.h> #include <Kernel/API/KeyCode.h>
#include <Kernel/Devices/HID/I8042Controller.h> #include <Kernel/Arch/x86/ISABus/I8042Controller.h>
#include <Kernel/Devices/HID/KeyboardDevice.h> #include <Kernel/Devices/HID/KeyboardDevice.h>
#include <Kernel/Interrupts/IRQHandler.h> #include <Kernel/Interrupts/IRQHandler.h>
#include <Kernel/Random.h> #include <Kernel/Random.h>

View file

@ -6,9 +6,9 @@
#include <AK/Memory.h> #include <AK/Memory.h>
#include <Kernel/Arch/x86/Hypervisor/VMWareBackdoor.h> #include <Kernel/Arch/x86/Hypervisor/VMWareBackdoor.h>
#include <Kernel/Arch/x86/ISABus/HID/PS2MouseDevice.h>
#include <Kernel/Debug.h> #include <Kernel/Debug.h>
#include <Kernel/Devices/DeviceManagement.h> #include <Kernel/Devices/DeviceManagement.h>
#include <Kernel/Devices/HID/PS2MouseDevice.h>
#include <Kernel/Sections.h> #include <Kernel/Sections.h>
namespace Kernel { namespace Kernel {

View file

@ -8,7 +8,7 @@
#include <AK/CircularQueue.h> #include <AK/CircularQueue.h>
#include <Kernel/API/MousePacket.h> #include <Kernel/API/MousePacket.h>
#include <Kernel/Devices/HID/I8042Controller.h> #include <Kernel/Arch/x86/ISABus/I8042Controller.h>
#include <Kernel/Devices/HID/MouseDevice.h> #include <Kernel/Devices/HID/MouseDevice.h>
#include <Kernel/Interrupts/IRQHandler.h> #include <Kernel/Interrupts/IRQHandler.h>
#include <Kernel/Random.h> #include <Kernel/Random.h>

View file

@ -5,8 +5,8 @@
*/ */
#include <Kernel/Arch/x86/Hypervisor/VMWareBackdoor.h> #include <Kernel/Arch/x86/Hypervisor/VMWareBackdoor.h>
#include <Kernel/Arch/x86/ISABus/HID/VMWareMouseDevice.h>
#include <Kernel/Devices/DeviceManagement.h> #include <Kernel/Devices/DeviceManagement.h>
#include <Kernel/Devices/HID/VMWareMouseDevice.h>
#include <Kernel/Sections.h> #include <Kernel/Sections.h>
namespace Kernel { namespace Kernel {

View file

@ -8,8 +8,8 @@
#include <AK/CircularQueue.h> #include <AK/CircularQueue.h>
#include <Kernel/API/MousePacket.h> #include <Kernel/API/MousePacket.h>
#include <Kernel/Devices/HID/I8042Controller.h> #include <Kernel/Arch/x86/ISABus/HID/PS2MouseDevice.h>
#include <Kernel/Devices/HID/PS2MouseDevice.h> #include <Kernel/Arch/x86/ISABus/I8042Controller.h>
#include <Kernel/Interrupts/IRQHandler.h> #include <Kernel/Interrupts/IRQHandler.h>
#include <Kernel/Random.h> #include <Kernel/Random.h>

View file

@ -6,10 +6,10 @@
#include <Kernel/Arch/Delay.h> #include <Kernel/Arch/Delay.h>
#include <Kernel/Arch/x86/IO.h> #include <Kernel/Arch/x86/IO.h>
#include <Kernel/Devices/HID/I8042Controller.h> #include <Kernel/Arch/x86/ISABus/HID/PS2KeyboardDevice.h>
#include <Kernel/Devices/HID/PS2KeyboardDevice.h> #include <Kernel/Arch/x86/ISABus/HID/PS2MouseDevice.h>
#include <Kernel/Devices/HID/PS2MouseDevice.h> #include <Kernel/Arch/x86/ISABus/HID/VMWareMouseDevice.h>
#include <Kernel/Devices/HID/VMWareMouseDevice.h> #include <Kernel/Arch/x86/ISABus/I8042Controller.h>
#include <Kernel/Sections.h> #include <Kernel/Sections.h>
namespace Kernel { namespace Kernel {

View file

@ -62,13 +62,9 @@ set(KERNEL_SOURCES
Devices/SelfTTYDevice.cpp Devices/SelfTTYDevice.cpp
Devices/SerialDevice.cpp Devices/SerialDevice.cpp
Devices/ZeroDevice.cpp Devices/ZeroDevice.cpp
Devices/HID/I8042Controller.cpp
Devices/HID/HIDManagement.cpp Devices/HID/HIDManagement.cpp
Devices/HID/KeyboardDevice.cpp Devices/HID/KeyboardDevice.cpp
Devices/HID/MouseDevice.cpp Devices/HID/MouseDevice.cpp
Devices/HID/PS2KeyboardDevice.cpp
Devices/HID/PS2MouseDevice.cpp
Devices/HID/VMWareMouseDevice.cpp
GlobalProcessExposed.cpp GlobalProcessExposed.cpp
Graphics/Bochs/DisplayConnector.cpp Graphics/Bochs/DisplayConnector.cpp
Graphics/Bochs/GraphicsAdapter.cpp Graphics/Bochs/GraphicsAdapter.cpp
@ -339,6 +335,10 @@ if ("${SERENITY_ARCH}" STREQUAL "i686" OR "${SERENITY_ARCH}" STREQUAL "x86_64")
Arch/x86/Hypervisor/VMWareBackdoor.cpp Arch/x86/Hypervisor/VMWareBackdoor.cpp
Arch/x86/ISABus/HID/PS2KeyboardDevice.cpp
Arch/x86/ISABus/HID/PS2MouseDevice.cpp
Arch/x86/ISABus/HID/VMWareMouseDevice.cpp
Arch/x86/ISABus/I8042Controller.cpp
Arch/x86/ISABus/IDEController.cpp Arch/x86/ISABus/IDEController.cpp
Arch/x86/PCI/Controller/HostBridge.cpp Arch/x86/PCI/Controller/HostBridge.cpp
Arch/x86/PCI/Initializer.cpp Arch/x86/PCI/Initializer.cpp

View file

@ -4,10 +4,13 @@
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
*/ */
#include <AK/Platform.h>
#include <AK/Singleton.h> #include <AK/Singleton.h>
#if ARCH(I386) || ARCH(X86_64)
# include <Kernel/Arch/x86/ISABus/I8042Controller.h>
#endif
#include <Kernel/CommandLine.h> #include <Kernel/CommandLine.h>
#include <Kernel/Devices/HID/HIDManagement.h> #include <Kernel/Devices/HID/HIDManagement.h>
#include <Kernel/Devices/HID/I8042Controller.h>
#include <Kernel/Firmware/ACPI/Parser.h> #include <Kernel/Firmware/ACPI/Parser.h>
#include <Kernel/Sections.h> #include <Kernel/Sections.h>
@ -119,6 +122,7 @@ UNMAP_AFTER_INIT ErrorOr<void> HIDManagement::enumerate()
// set to emulate PS/2, we should not initialize the PS/2 controller. // set to emulate PS/2, we should not initialize the PS/2 controller.
if (kernel_command_line().disable_ps2_controller()) if (kernel_command_line().disable_ps2_controller())
return {}; return {};
#if ARCH(I386) || ARCH(X86_64)
m_i8042_controller = I8042Controller::initialize(); m_i8042_controller = I8042Controller::initialize();
// Note: If ACPI is disabled or doesn't indicate that we have an i8042, we // Note: If ACPI is disabled or doesn't indicate that we have an i8042, we
@ -140,6 +144,7 @@ UNMAP_AFTER_INIT ErrorOr<void> HIDManagement::enumerate()
if (m_i8042_controller->keyboard()) if (m_i8042_controller->keyboard())
m_hid_devices.append(m_i8042_controller->keyboard().release_nonnull()); m_hid_devices.append(m_i8042_controller->keyboard().release_nonnull());
#endif
return {}; return {};
} }

View file

@ -61,7 +61,9 @@ private:
size_t m_mouse_minor_number { 0 }; size_t m_mouse_minor_number { 0 };
size_t m_keyboard_minor_number { 0 }; size_t m_keyboard_minor_number { 0 };
KeyboardClient* m_client { nullptr }; KeyboardClient* m_client { nullptr };
#if ARCH(I386) || ARCH(X86_64)
LockRefPtr<I8042Controller> m_i8042_controller; LockRefPtr<I8042Controller> m_i8042_controller;
#endif
NonnullLockRefPtrVector<HIDDevice> m_hid_devices; NonnullLockRefPtrVector<HIDDevice> m_hid_devices;
Spinlock m_client_lock { LockRank::None }; Spinlock m_client_lock { LockRank::None };
}; };