diff --git a/Kernel/Bus/PCI/IDs.h b/Kernel/Bus/PCI/IDs.h index 8f125f80e45..531e2d7826a 100644 --- a/Kernel/Bus/PCI/IDs.h +++ b/Kernel/Bus/PCI/IDs.h @@ -6,19 +6,22 @@ #pragma once -namespace Kernel { +namespace Kernel::PCI { -enum class PCIVendorID { +enum VendorID { VirtIO = 0x1af4, Intel = 0x8086, WCH = 0x1c00, RedHat = 0x1b36, - Realtek = 0x10ec + Realtek = 0x10ec, + QEMUOld = 0x1234, + VirtualBox = 0x80ee }; -enum class PCIDeviceID { +enum DeviceID { VirtIOConsole = 0x1003, VirtIOEntropy = 0x1005, VirtIOGPU = 0x1050, }; + } diff --git a/Kernel/Devices/PCISerialDevice.h b/Kernel/Devices/PCISerialDevice.h index 864941ed704..34beb5942be 100644 --- a/Kernel/Devices/PCISerialDevice.h +++ b/Kernel/Devices/PCISerialDevice.h @@ -32,10 +32,10 @@ private: }; static constexpr BoardDefinition board_definitions[4] = { - { { (u16)PCIVendorID::WCH, 0x3253 }, "WCH CH382 2S", 2, 0, 0xC0, 8, SerialDevice::Baud::Baud115200 }, - { { (u16)PCIVendorID::RedHat, 0x0002 }, "QEMU PCI 16550A", 1, 0, 0, 8, SerialDevice::Baud::Baud115200 }, - { { (u16)PCIVendorID::RedHat, 0x0003 }, "QEMU PCI Dual-port 16550A", 2, 0, 0, 8, SerialDevice::Baud::Baud115200 }, - { { (u16)PCIVendorID::RedHat, 0x0004 }, "QEMU PCI Quad-port 16550A", 4, 0, 0, 8, SerialDevice::Baud::Baud115200 } + { { PCI::VendorID::WCH, 0x3253 }, "WCH CH382 2S", 2, 0, 0xC0, 8, SerialDevice::Baud::Baud115200 }, + { { PCI::VendorID::RedHat, 0x0002 }, "QEMU PCI 16550A", 1, 0, 0, 8, SerialDevice::Baud::Baud115200 }, + { { PCI::VendorID::RedHat, 0x0003 }, "QEMU PCI Dual-port 16550A", 2, 0, 0, 8, SerialDevice::Baud::Baud115200 }, + { { PCI::VendorID::RedHat, 0x0004 }, "QEMU PCI Quad-port 16550A", 4, 0, 0, 8, SerialDevice::Baud::Baud115200 } }; }; diff --git a/Kernel/Graphics/BochsGraphicsAdapter.cpp b/Kernel/Graphics/BochsGraphicsAdapter.cpp index 531412231a3..0070bcff981 100644 --- a/Kernel/Graphics/BochsGraphicsAdapter.cpp +++ b/Kernel/Graphics/BochsGraphicsAdapter.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -47,7 +48,7 @@ struct [[gnu::packed]] BochsDisplayMMIORegisters { UNMAP_AFTER_INIT NonnullRefPtr BochsGraphicsAdapter::initialize(PCI::Address address) { PCI::ID id = PCI::get_id(address); - VERIFY((id.vendor_id == 0x1234 && id.device_id == 0x1111) || (id.vendor_id == 0x80ee && id.device_id == 0xbeef)); + VERIFY((id.vendor_id == PCI::VendorID::QEMUOld && id.device_id == 0x1111) || (id.vendor_id == PCI::VendorID::VirtualBox && id.device_id == 0xbeef)); return adopt_ref(*new BochsGraphicsAdapter(address)); } diff --git a/Kernel/Graphics/GraphicsManagement.cpp b/Kernel/Graphics/GraphicsManagement.cpp index a3a11b4ab14..c9500e7e6fa 100644 --- a/Kernel/Graphics/GraphicsManagement.cpp +++ b/Kernel/Graphics/GraphicsManagement.cpp @@ -82,18 +82,18 @@ UNMAP_AFTER_INIT bool GraphicsManagement::determine_and_initialize_graphics_devi RefPtr adapter; switch (id.vendor_id) { - case 0x1234: + case PCI::VendorID::QEMUOld: if (id.device_id == 0x1111) adapter = BochsGraphicsAdapter::initialize(address); break; - case 0x80ee: + case PCI::VendorID::VirtualBox: if (id.device_id == 0xbeef) adapter = BochsGraphicsAdapter::initialize(address); break; - case 0x8086: + case PCI::VendorID::Intel: adapter = IntelNativeGraphicsAdapter::initialize(address); break; - case static_cast(PCIVendorID::VirtIO): + case PCI::VendorID::VirtIO: dmesgln("Graphics: Using VirtIO console"); adapter = Graphics::VirtIOGraphicsAdapter::initialize(address); break; diff --git a/Kernel/Graphics/VirtIOGPU/VirtIOGraphicsAdapter.cpp b/Kernel/Graphics/VirtIOGPU/VirtIOGraphicsAdapter.cpp index 6219a357a15..b41f1f56068 100644 --- a/Kernel/Graphics/VirtIOGPU/VirtIOGraphicsAdapter.cpp +++ b/Kernel/Graphics/VirtIOGPU/VirtIOGraphicsAdapter.cpp @@ -14,7 +14,7 @@ namespace Kernel::Graphics { NonnullRefPtr VirtIOGraphicsAdapter::initialize(PCI::Address base_address) { - VERIFY(PCI::get_id(base_address).vendor_id == static_cast(PCIVendorID::VirtIO)); + VERIFY(PCI::get_id(base_address).vendor_id == PCI::VendorID::VirtIO); return adopt_ref(*new VirtIOGraphicsAdapter(base_address)); } diff --git a/Kernel/Net/E1000ENetworkAdapter.cpp b/Kernel/Net/E1000ENetworkAdapter.cpp index d9cfe06c6f5..c4166fab6ec 100644 --- a/Kernel/Net/E1000ENetworkAdapter.cpp +++ b/Kernel/Net/E1000ENetworkAdapter.cpp @@ -183,7 +183,7 @@ static bool is_valid_device_id(u16 device_id) UNMAP_AFTER_INIT RefPtr E1000ENetworkAdapter::try_to_initialize(PCI::Address address) { auto id = PCI::get_id(address); - if (id.vendor_id != (u16)PCIVendorID::Intel) + if (id.vendor_id != PCI::VendorID::Intel) return {}; if (!is_valid_device_id(id.device_id)) return {}; diff --git a/Kernel/Net/E1000NetworkAdapter.cpp b/Kernel/Net/E1000NetworkAdapter.cpp index 16324e728a0..b5c4f6c3030 100644 --- a/Kernel/Net/E1000NetworkAdapter.cpp +++ b/Kernel/Net/E1000NetworkAdapter.cpp @@ -160,7 +160,7 @@ UNMAP_AFTER_INIT static bool is_valid_device_id(u16 device_id) UNMAP_AFTER_INIT RefPtr E1000NetworkAdapter::try_to_initialize(PCI::Address address) { auto id = PCI::get_id(address); - if (id.vendor_id != (u16)PCIVendorID::Intel) + if (id.vendor_id != PCI::VendorID::Intel) return {}; if (!is_valid_device_id(id.device_id)) return {}; diff --git a/Kernel/Net/RTL8168NetworkAdapter.cpp b/Kernel/Net/RTL8168NetworkAdapter.cpp index 039ab521ac7..38aa1aba621 100644 --- a/Kernel/Net/RTL8168NetworkAdapter.cpp +++ b/Kernel/Net/RTL8168NetworkAdapter.cpp @@ -179,7 +179,7 @@ namespace Kernel { UNMAP_AFTER_INIT RefPtr RTL8168NetworkAdapter::try_to_initialize(PCI::Address address) { auto id = PCI::get_id(address); - if (id.vendor_id != (u16)PCIVendorID::Realtek) + if (id.vendor_id != PCI::VendorID::Realtek) return {}; if (id.device_id != 0x8168) return {}; diff --git a/Kernel/VirtIO/VirtIO.cpp b/Kernel/VirtIO/VirtIO.cpp index 0137faf418c..d1a20a334a0 100644 --- a/Kernel/VirtIO/VirtIO.cpp +++ b/Kernel/VirtIO/VirtIO.cpp @@ -21,18 +21,18 @@ UNMAP_AFTER_INIT void VirtIO::detect() if (address.is_null() || id.is_null()) return; // TODO: We should also be checking that the device_id is in between 0x1000 - 0x107F inclusive - if (id.vendor_id != (u16)PCIVendorID::VirtIO) + if (id.vendor_id != PCI::VendorID::VirtIO) return; switch (id.device_id) { - case (u16)PCIDeviceID::VirtIOConsole: { + case PCI::DeviceID::VirtIOConsole: { [[maybe_unused]] auto& unused = adopt_ref(*new VirtIOConsole(address)).leak_ref(); break; } - case (u16)PCIDeviceID::VirtIOEntropy: { + case PCI::DeviceID::VirtIOEntropy: { [[maybe_unused]] auto& unused = adopt_ref(*new VirtIORNG(address)).leak_ref(); break; } - case (u16)PCIDeviceID::VirtIOGPU: { + case PCI::DeviceID::VirtIOGPU: { // This should have been initialized by the graphics subsystem break; }