Kernel: Const defines for PCI IDs for storage controllers

This commit is contained in:
panky-codes 2021-08-15 16:34:48 +02:00 committed by Andreas Kling
parent a9cbdcbcd0
commit 1b093c8b48
Notes: sideshowbarker 2024-07-19 17:19:00 +09:00
2 changed files with 8 additions and 2 deletions

View file

@ -52,6 +52,12 @@ namespace Kernel {
#define PCI_CAPABILITY_VENDOR_SPECIFIC 0x9 #define PCI_CAPABILITY_VENDOR_SPECIFIC 0x9
#define PCI_CAPABILITY_MSIX 0x11 #define PCI_CAPABILITY_MSIX 0x11
// Taken from https://pcisig.com/sites/default/files/files/PCI_Code-ID_r_1_11__v24_Jan_2019.pdf
#define PCI_MASS_STORAGE_CLASS_ID 0x1
#define PCI_IDE_CTRL_SUBCLASS_ID 0x1
#define PCI_SATA_CTRL_SUBCLASS_ID 0x6
#define PCI_AHCI_IF_PROGIF 0x1
namespace PCI { namespace PCI {
struct ID { struct ID {
u16 vendor_id { 0 }; u16 vendor_id { 0 };

View file

@ -48,13 +48,13 @@ UNMAP_AFTER_INIT NonnullRefPtrVector<StorageController> StorageManagement::enume
if (!kernel_command_line().disable_physical_storage()) { if (!kernel_command_line().disable_physical_storage()) {
if (kernel_command_line().is_ide_enabled()) { if (kernel_command_line().is_ide_enabled()) {
PCI::enumerate([&](const PCI::Address& address, PCI::ID) { PCI::enumerate([&](const PCI::Address& address, PCI::ID) {
if (PCI::get_class(address) == 0x1 && PCI::get_subclass(address) == 0x1) { if (PCI::get_class(address) == PCI_MASS_STORAGE_CLASS_ID && PCI::get_subclass(address) == PCI_IDE_CTRL_SUBCLASS_ID) {
controllers.append(IDEController::initialize(address, force_pio)); controllers.append(IDEController::initialize(address, force_pio));
} }
}); });
} }
PCI::enumerate([&](const PCI::Address& address, PCI::ID) { PCI::enumerate([&](const PCI::Address& address, PCI::ID) {
if (PCI::get_class(address) == 0x1 && PCI::get_subclass(address) == 0x6 && PCI::get_programming_interface(address) == 0x1) { if (PCI::get_class(address) == PCI_MASS_STORAGE_CLASS_ID && PCI::get_subclass(address) == PCI_SATA_CTRL_SUBCLASS_ID && PCI::get_programming_interface(address) == PCI_AHCI_IF_PROGIF) {
controllers.append(AHCIController::initialize(address)); controllers.append(AHCIController::initialize(address));
} }
}); });