From 0b7fb42a6c3fe4a14577e79739964da390005369 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 2 Jul 2019 17:08:51 +0200 Subject: [PATCH] pci: Export network and mass storage sub classes Signed-off-by: Samuel Ortiz --- pci/src/configuration.rs | 44 ++++++++++++++++++++++++++++++++++++++++ pci/src/lib.rs | 4 ++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/pci/src/configuration.rs b/pci/src/configuration.rs index 9ec90c9cf..b8efb392c 100755 --- a/pci/src/configuration.rs +++ b/pci/src/configuration.rs @@ -124,6 +124,50 @@ impl PciSubclass for PciSerialBusSubClass { } } +/// Mass Storage Sub Classes +#[allow(dead_code)] +#[derive(Copy, Clone)] +pub enum PciMassStorageSubclass { + SCSIStorage = 0x00, + IDEInterface = 0x01, + FloppyController = 0x02, + IPIController = 0x03, + RAIDController = 0x04, + ATAController = 0x05, + SATAController = 0x06, + SerialSCSIController = 0x07, + NVMController = 0x08, + MassStorage = 0x80, +} + +impl PciSubclass for PciMassStorageSubclass { + fn get_register_value(&self) -> u8 { + *self as u8 + } +} + +/// Network Controller Sub Classes +#[allow(dead_code)] +#[derive(Copy, Clone)] +pub enum PciNetworkControllerSubclass { + EthernetController = 0x00, + TokenRingController = 0x01, + FDDIController = 0x02, + ATMController = 0x03, + ISDNController = 0x04, + WorldFipController = 0x05, + PICMGController = 0x06, + InfinibandController = 0x07, + FabricController = 0x08, + NetworkController = 0x80, +} + +impl PciSubclass for PciNetworkControllerSubclass { + fn get_register_value(&self) -> u8 { + *self as u8 + } +} + /// A PCI class programming interface. Each combination of `PciClassCode` and /// `PciSubclass` can specify a set of register-level programming interfaces. /// This trait is implemented by each programming interface. diff --git a/pci/src/lib.rs b/pci/src/lib.rs index dd3238efd..05cb03d38 100644 --- a/pci/src/lib.rs +++ b/pci/src/lib.rs @@ -17,8 +17,8 @@ mod root; pub use self::configuration::{ PciBarConfiguration, PciBarPrefetchable, PciBarRegionType, PciCapability, PciCapabilityID, - PciClassCode, PciConfiguration, PciHeaderType, PciProgrammingInterface, PciSerialBusSubClass, - PciSubclass, + PciClassCode, PciConfiguration, PciHeaderType, PciMassStorageSubclass, + PciNetworkControllerSubclass, PciProgrammingInterface, PciSerialBusSubClass, PciSubclass, }; pub use self::device::Error as PciDeviceError; pub use self::device::{InterruptDelivery, InterruptParameters, PciDevice};