mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 09:07:35 +00:00
Kernel: Add some more PCI [Sub]Class IDs
This commit is contained in:
parent
66647b58d4
commit
693f3ad33e
3 changed files with 78 additions and 11 deletions
|
@ -93,30 +93,80 @@ static constexpr u16 msix_control_enable = 0x8000;
|
||||||
|
|
||||||
// Taken from https://pcisig.com/sites/default/files/files/PCI_Code-ID_r_1_11__v24_Jan_2019.pdf
|
// Taken from https://pcisig.com/sites/default/files/files/PCI_Code-ID_r_1_11__v24_Jan_2019.pdf
|
||||||
enum class ClassID {
|
enum class ClassID {
|
||||||
MassStorage = 0x1,
|
MassStorage = 0x01,
|
||||||
Multimedia = 0x4,
|
Network = 0x02,
|
||||||
Bridge = 0x6,
|
Display = 0x03,
|
||||||
Base = 0x8,
|
Multimedia = 0x04,
|
||||||
|
Memory = 0x05,
|
||||||
|
Bridge = 0x06,
|
||||||
|
SimpleCommunication = 0x07,
|
||||||
|
Base = 0x08,
|
||||||
|
Input = 0x09,
|
||||||
|
DockingStation = 0x0A,
|
||||||
|
Processor = 0x0B,
|
||||||
|
SerialBus = 0x0C,
|
||||||
|
Wireless = 0x0D,
|
||||||
|
IntelligentIO = 0x0E,
|
||||||
|
SatelliteCommunication = 0x0F,
|
||||||
|
EncryptionDecryption = 0x10,
|
||||||
|
DataAcquisitionAndSignalProcessing = 0x11,
|
||||||
|
ProcessingAccelerator = 0x12,
|
||||||
|
NonEssentialInstrumentation = 0x13,
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace MassStorage {
|
namespace MassStorage {
|
||||||
|
|
||||||
enum class SubclassID {
|
enum class SubclassID {
|
||||||
IDEController = 0x1,
|
SCSIController = 0x00,
|
||||||
SATAController = 0x6,
|
IDEController = 0x01,
|
||||||
NVMeController = 0x8,
|
FloppyController = 0x02,
|
||||||
|
IPIController = 0x03,
|
||||||
|
RAIDController = 0x04,
|
||||||
|
ATAController = 0x05,
|
||||||
|
SATAController = 0x06,
|
||||||
|
SASController = 0x06,
|
||||||
|
NVMeController = 0x08 // Technically other non-volatile memory subsystems as well
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class SATAProgIF {
|
enum class SATAProgIF {
|
||||||
AHCI = 0x1,
|
AHCI = 0x1,
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace Network {
|
||||||
|
|
||||||
|
enum class SubclassID {
|
||||||
|
Ethernet = 0x00,
|
||||||
|
TokenRing = 0x01,
|
||||||
|
FDD = 0x02,
|
||||||
|
ATM = 0x03,
|
||||||
|
ISDN = 0x04,
|
||||||
|
WorldFlip = 0x05,
|
||||||
|
PICMG_2_14_MultiComputing = 0x06,
|
||||||
|
InfiniBand = 0x07,
|
||||||
|
HostFabric = 0x08,
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Display {
|
||||||
|
|
||||||
|
enum class SubclassID {
|
||||||
|
VGA = 0x00,
|
||||||
|
XGA = 0x01,
|
||||||
|
ThreeD = 0x02,
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
namespace Multimedia {
|
namespace Multimedia {
|
||||||
|
|
||||||
enum class SubclassID {
|
enum class SubclassID {
|
||||||
AudioController = 0x1,
|
Video = 0x00,
|
||||||
HDACompatibleController = 0x3,
|
Audio = 0x01,
|
||||||
|
ComputerTelephony = 0x01,
|
||||||
|
HDACompatible = 0x3,
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -132,7 +182,21 @@ enum class SubclassID {
|
||||||
namespace Base {
|
namespace Base {
|
||||||
|
|
||||||
enum class SubclassID {
|
enum class SubclassID {
|
||||||
|
PIC = 0x00,
|
||||||
|
DMAController = 0x01,
|
||||||
|
Timer = 0x02,
|
||||||
|
RTCController = 0x03,
|
||||||
|
PCIHotplugController = 0x04,
|
||||||
SDHostController = 0x5,
|
SDHostController = 0x5,
|
||||||
|
IOMMU = 0x06
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace SerialBus {
|
||||||
|
|
||||||
|
enum class SubclassID {
|
||||||
|
USB = 0x03,
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -264,9 +328,12 @@ AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(ClassCode, ClassID)
|
||||||
|
|
||||||
AK_TYPEDEF_DISTINCT_ORDERED_ID(u8, SubclassCode);
|
AK_TYPEDEF_DISTINCT_ORDERED_ID(u8, SubclassCode);
|
||||||
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, MassStorage::SubclassID);
|
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, MassStorage::SubclassID);
|
||||||
|
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, Network::SubclassID);
|
||||||
|
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, Display::SubclassID);
|
||||||
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, Multimedia::SubclassID);
|
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, Multimedia::SubclassID);
|
||||||
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, Bridge::SubclassID);
|
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, Bridge::SubclassID);
|
||||||
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, Base::SubclassID);
|
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, Base::SubclassID);
|
||||||
|
AK_MAKE_DISTINCT_NUMERIC_COMPARABLE_TO_ENUM(SubclassCode, SerialBus::SubclassID);
|
||||||
|
|
||||||
AK_TYPEDEF_DISTINCT_ORDERED_ID(u8, ProgrammingInterface);
|
AK_TYPEDEF_DISTINCT_ORDERED_ID(u8, ProgrammingInterface);
|
||||||
AK_TYPEDEF_DISTINCT_ORDERED_ID(u8, RevisionID);
|
AK_TYPEDEF_DISTINCT_ORDERED_ID(u8, RevisionID);
|
||||||
|
|
|
@ -35,7 +35,7 @@ UNMAP_AFTER_INIT ErrorOr<NonnullRefPtr<AudioController>> AC97::create(PCI::Devic
|
||||||
UNMAP_AFTER_INIT ErrorOr<bool> AC97::probe(PCI::DeviceIdentifier const& device_identifier)
|
UNMAP_AFTER_INIT ErrorOr<bool> AC97::probe(PCI::DeviceIdentifier const& device_identifier)
|
||||||
{
|
{
|
||||||
VERIFY(device_identifier.class_code() == PCI::ClassID::Multimedia);
|
VERIFY(device_identifier.class_code() == PCI::ClassID::Multimedia);
|
||||||
return device_identifier.subclass_code() == PCI::Multimedia::SubclassID::AudioController;
|
return device_identifier.subclass_code() == PCI::Multimedia::SubclassID::Audio;
|
||||||
}
|
}
|
||||||
|
|
||||||
UNMAP_AFTER_INIT AC97::AC97(PCI::DeviceIdentifier const& pci_device_identifier, NonnullOwnPtr<AC97Channel> pcm_out_channel, NonnullOwnPtr<IOWindow> mixer_io_window, NonnullOwnPtr<IOWindow> bus_io_window)
|
UNMAP_AFTER_INIT AC97::AC97(PCI::DeviceIdentifier const& pci_device_identifier, NonnullOwnPtr<AC97Channel> pcm_out_channel, NonnullOwnPtr<IOWindow> mixer_io_window, NonnullOwnPtr<IOWindow> bus_io_window)
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace Kernel::Audio::IntelHDA {
|
||||||
UNMAP_AFTER_INIT ErrorOr<bool> Controller::probe(PCI::DeviceIdentifier const& device_identifier)
|
UNMAP_AFTER_INIT ErrorOr<bool> Controller::probe(PCI::DeviceIdentifier const& device_identifier)
|
||||||
{
|
{
|
||||||
VERIFY(device_identifier.class_code() == PCI::ClassID::Multimedia);
|
VERIFY(device_identifier.class_code() == PCI::ClassID::Multimedia);
|
||||||
return device_identifier.subclass_code() == PCI::Multimedia::SubclassID::HDACompatibleController;
|
return device_identifier.subclass_code() == PCI::Multimedia::SubclassID::HDACompatible;
|
||||||
}
|
}
|
||||||
|
|
||||||
UNMAP_AFTER_INIT ErrorOr<NonnullRefPtr<AudioController>> Controller::create(PCI::DeviceIdentifier const& pci_device_identifier)
|
UNMAP_AFTER_INIT ErrorOr<NonnullRefPtr<AudioController>> Controller::create(PCI::DeviceIdentifier const& pci_device_identifier)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue