10ec8b83dSEd Tanous #pragma once 20ec8b83dSEd Tanous #include <nlohmann/json.hpp> 30ec8b83dSEd Tanous 40ec8b83dSEd Tanous namespace pcie_device 50ec8b83dSEd Tanous { 60ec8b83dSEd Tanous // clang-format off 70ec8b83dSEd Tanous 80ec8b83dSEd Tanous enum class PCIeTypes{ 90ec8b83dSEd Tanous Invalid, 100ec8b83dSEd Tanous Gen1, 110ec8b83dSEd Tanous Gen2, 120ec8b83dSEd Tanous Gen3, 130ec8b83dSEd Tanous Gen4, 140ec8b83dSEd Tanous Gen5, 150ec8b83dSEd Tanous }; 160ec8b83dSEd Tanous 170ec8b83dSEd Tanous enum class DeviceType{ 180ec8b83dSEd Tanous Invalid, 190ec8b83dSEd Tanous SingleFunction, 200ec8b83dSEd Tanous MultiFunction, 210ec8b83dSEd Tanous Simulated, 220ec8b83dSEd Tanous Retimer, 230ec8b83dSEd Tanous }; 240ec8b83dSEd Tanous 250ec8b83dSEd Tanous enum class SlotType{ 260ec8b83dSEd Tanous Invalid, 270ec8b83dSEd Tanous FullLength, 280ec8b83dSEd Tanous HalfLength, 290ec8b83dSEd Tanous LowProfile, 300ec8b83dSEd Tanous Mini, 310ec8b83dSEd Tanous M2, 320ec8b83dSEd Tanous OEM, 330ec8b83dSEd Tanous OCP3Small, 340ec8b83dSEd Tanous OCP3Large, 350ec8b83dSEd Tanous U2, 360ec8b83dSEd Tanous }; 370ec8b83dSEd Tanous 380ec8b83dSEd Tanous enum class LaneSplittingType{ 390ec8b83dSEd Tanous Invalid, 400ec8b83dSEd Tanous None, 410ec8b83dSEd Tanous Bridged, 420ec8b83dSEd Tanous Bifurcated, 430ec8b83dSEd Tanous }; 440ec8b83dSEd Tanous 45a8d8f9d8SEd Tanous enum class CXLDeviceType{ 46a8d8f9d8SEd Tanous Invalid, 47a8d8f9d8SEd Tanous Type1, 48a8d8f9d8SEd Tanous Type2, 49a8d8f9d8SEd Tanous Type3, 50a8d8f9d8SEd Tanous }; 51a8d8f9d8SEd Tanous 52*e9cc1bc9SEd Tanous enum class CXLDynamicCapacityPolicies{ 53*e9cc1bc9SEd Tanous Invalid, 54*e9cc1bc9SEd Tanous Free, 55*e9cc1bc9SEd Tanous Contiguous, 56*e9cc1bc9SEd Tanous Prescriptive, 57*e9cc1bc9SEd Tanous TagBased, 58*e9cc1bc9SEd Tanous }; 59*e9cc1bc9SEd Tanous 600ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PCIeTypes, { 610ec8b83dSEd Tanous {PCIeTypes::Invalid, "Invalid"}, 620ec8b83dSEd Tanous {PCIeTypes::Gen1, "Gen1"}, 630ec8b83dSEd Tanous {PCIeTypes::Gen2, "Gen2"}, 640ec8b83dSEd Tanous {PCIeTypes::Gen3, "Gen3"}, 650ec8b83dSEd Tanous {PCIeTypes::Gen4, "Gen4"}, 660ec8b83dSEd Tanous {PCIeTypes::Gen5, "Gen5"}, 670ec8b83dSEd Tanous }); 680ec8b83dSEd Tanous 690ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DeviceType, { 700ec8b83dSEd Tanous {DeviceType::Invalid, "Invalid"}, 710ec8b83dSEd Tanous {DeviceType::SingleFunction, "SingleFunction"}, 720ec8b83dSEd Tanous {DeviceType::MultiFunction, "MultiFunction"}, 730ec8b83dSEd Tanous {DeviceType::Simulated, "Simulated"}, 740ec8b83dSEd Tanous {DeviceType::Retimer, "Retimer"}, 750ec8b83dSEd Tanous }); 760ec8b83dSEd Tanous 770ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SlotType, { 780ec8b83dSEd Tanous {SlotType::Invalid, "Invalid"}, 790ec8b83dSEd Tanous {SlotType::FullLength, "FullLength"}, 800ec8b83dSEd Tanous {SlotType::HalfLength, "HalfLength"}, 810ec8b83dSEd Tanous {SlotType::LowProfile, "LowProfile"}, 820ec8b83dSEd Tanous {SlotType::Mini, "Mini"}, 830ec8b83dSEd Tanous {SlotType::M2, "M2"}, 840ec8b83dSEd Tanous {SlotType::OEM, "OEM"}, 850ec8b83dSEd Tanous {SlotType::OCP3Small, "OCP3Small"}, 860ec8b83dSEd Tanous {SlotType::OCP3Large, "OCP3Large"}, 870ec8b83dSEd Tanous {SlotType::U2, "U2"}, 880ec8b83dSEd Tanous }); 890ec8b83dSEd Tanous 900ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LaneSplittingType, { 910ec8b83dSEd Tanous {LaneSplittingType::Invalid, "Invalid"}, 920ec8b83dSEd Tanous {LaneSplittingType::None, "None"}, 930ec8b83dSEd Tanous {LaneSplittingType::Bridged, "Bridged"}, 940ec8b83dSEd Tanous {LaneSplittingType::Bifurcated, "Bifurcated"}, 950ec8b83dSEd Tanous }); 960ec8b83dSEd Tanous 97a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CXLDeviceType, { 98a8d8f9d8SEd Tanous {CXLDeviceType::Invalid, "Invalid"}, 99a8d8f9d8SEd Tanous {CXLDeviceType::Type1, "Type1"}, 100a8d8f9d8SEd Tanous {CXLDeviceType::Type2, "Type2"}, 101a8d8f9d8SEd Tanous {CXLDeviceType::Type3, "Type3"}, 102a8d8f9d8SEd Tanous }); 103a8d8f9d8SEd Tanous 104*e9cc1bc9SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CXLDynamicCapacityPolicies, { 105*e9cc1bc9SEd Tanous {CXLDynamicCapacityPolicies::Invalid, "Invalid"}, 106*e9cc1bc9SEd Tanous {CXLDynamicCapacityPolicies::Free, "Free"}, 107*e9cc1bc9SEd Tanous {CXLDynamicCapacityPolicies::Contiguous, "Contiguous"}, 108*e9cc1bc9SEd Tanous {CXLDynamicCapacityPolicies::Prescriptive, "Prescriptive"}, 109*e9cc1bc9SEd Tanous {CXLDynamicCapacityPolicies::TagBased, "TagBased"}, 110*e9cc1bc9SEd Tanous }); 111*e9cc1bc9SEd Tanous 1120ec8b83dSEd Tanous } 1130ec8b83dSEd Tanous // clang-format on 114