1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace pcie_function 7 { 8 // clang-format off 9 10 enum class DeviceClass{ 11 Invalid, 12 UnclassifiedDevice, 13 MassStorageController, 14 NetworkController, 15 DisplayController, 16 MultimediaController, 17 MemoryController, 18 Bridge, 19 CommunicationController, 20 GenericSystemPeripheral, 21 InputDeviceController, 22 DockingStation, 23 Processor, 24 SerialBusController, 25 WirelessController, 26 IntelligentController, 27 SatelliteCommunicationsController, 28 EncryptionController, 29 SignalProcessingController, 30 ProcessingAccelerators, 31 NonEssentialInstrumentation, 32 Coprocessor, 33 UnassignedClass, 34 Other, 35 }; 36 37 enum class FunctionType{ 38 Invalid, 39 Physical, 40 Virtual, 41 }; 42 43 enum class FunctionProtocol{ 44 Invalid, 45 PCIe, 46 CXL, 47 }; 48 49 NLOHMANN_JSON_SERIALIZE_ENUM(DeviceClass, { 50 {DeviceClass::Invalid, "Invalid"}, 51 {DeviceClass::UnclassifiedDevice, "UnclassifiedDevice"}, 52 {DeviceClass::MassStorageController, "MassStorageController"}, 53 {DeviceClass::NetworkController, "NetworkController"}, 54 {DeviceClass::DisplayController, "DisplayController"}, 55 {DeviceClass::MultimediaController, "MultimediaController"}, 56 {DeviceClass::MemoryController, "MemoryController"}, 57 {DeviceClass::Bridge, "Bridge"}, 58 {DeviceClass::CommunicationController, "CommunicationController"}, 59 {DeviceClass::GenericSystemPeripheral, "GenericSystemPeripheral"}, 60 {DeviceClass::InputDeviceController, "InputDeviceController"}, 61 {DeviceClass::DockingStation, "DockingStation"}, 62 {DeviceClass::Processor, "Processor"}, 63 {DeviceClass::SerialBusController, "SerialBusController"}, 64 {DeviceClass::WirelessController, "WirelessController"}, 65 {DeviceClass::IntelligentController, "IntelligentController"}, 66 {DeviceClass::SatelliteCommunicationsController, "SatelliteCommunicationsController"}, 67 {DeviceClass::EncryptionController, "EncryptionController"}, 68 {DeviceClass::SignalProcessingController, "SignalProcessingController"}, 69 {DeviceClass::ProcessingAccelerators, "ProcessingAccelerators"}, 70 {DeviceClass::NonEssentialInstrumentation, "NonEssentialInstrumentation"}, 71 {DeviceClass::Coprocessor, "Coprocessor"}, 72 {DeviceClass::UnassignedClass, "UnassignedClass"}, 73 {DeviceClass::Other, "Other"}, 74 }); 75 76 NLOHMANN_JSON_SERIALIZE_ENUM(FunctionType, { 77 {FunctionType::Invalid, "Invalid"}, 78 {FunctionType::Physical, "Physical"}, 79 {FunctionType::Virtual, "Virtual"}, 80 }); 81 82 NLOHMANN_JSON_SERIALIZE_ENUM(FunctionProtocol, { 83 {FunctionProtocol::Invalid, "Invalid"}, 84 {FunctionProtocol::PCIe, "PCIe"}, 85 {FunctionProtocol::CXL, "CXL"}, 86 }); 87 88 } 89 // clang-format on 90