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