blob: afdfe97e39905484c5780ad113327c895d4cd983 [file] [log] [blame]
#pragma once
#include <cstdint>
#include <nlohmann/json.hpp>
namespace memory
{
// clang-format off
enum class MemoryType : std::uint8_t{
Invalid,
DRAM,
NVDIMM_N,
NVDIMM_F,
NVDIMM_P,
IntelOptane,
};
enum class MemoryDeviceType : std::uint8_t{
Invalid,
DDR,
DDR2,
DDR3,
DDR4,
DDR4_SDRAM,
DDR4E_SDRAM,
LPDDR4_SDRAM,
DDR3_SDRAM,
LPDDR3_SDRAM,
DDR2_SDRAM,
DDR2_SDRAM_FB_DIMM,
DDR2_SDRAM_FB_DIMM_PROBE,
DDR_SGRAM,
DDR_SDRAM,
ROM,
SDRAM,
EDO,
FastPageMode,
PipelinedNibble,
Logical,
HBM,
HBM2,
HBM2E,
HBM3,
GDDR,
GDDR2,
GDDR3,
GDDR4,
GDDR5,
GDDR5X,
GDDR6,
DDR5,
OEM,
};
enum class BaseModuleType : std::uint8_t{
Invalid,
RDIMM,
UDIMM,
SO_DIMM,
LRDIMM,
Mini_RDIMM,
Mini_UDIMM,
SO_RDIMM_72b,
SO_UDIMM_72b,
SO_DIMM_16b,
SO_DIMM_32b,
Die,
};
enum class MemoryMedia : std::uint8_t{
Invalid,
DRAM,
NAND,
Intel3DXPoint,
Proprietary,
};
enum class SecurityStates : std::uint8_t{
Invalid,
Enabled,
Disabled,
Unlocked,
Locked,
Frozen,
Passphraselimit,
};
enum class ErrorCorrection : std::uint8_t{
Invalid,
NoECC,
SingleBitECC,
MultiBitECC,
AddressParity,
};
enum class MemoryClassification : std::uint8_t{
Invalid,
Volatile,
ByteAccessiblePersistent,
Block,
};
enum class OperatingMemoryModes : std::uint8_t{
Invalid,
Volatile,
PMEM,
Block,
};
NLOHMANN_JSON_SERIALIZE_ENUM(MemoryType, {
{MemoryType::Invalid, "Invalid"},
{MemoryType::DRAM, "DRAM"},
{MemoryType::NVDIMM_N, "NVDIMM_N"},
{MemoryType::NVDIMM_F, "NVDIMM_F"},
{MemoryType::NVDIMM_P, "NVDIMM_P"},
{MemoryType::IntelOptane, "IntelOptane"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(MemoryDeviceType, {
{MemoryDeviceType::Invalid, "Invalid"},
{MemoryDeviceType::DDR, "DDR"},
{MemoryDeviceType::DDR2, "DDR2"},
{MemoryDeviceType::DDR3, "DDR3"},
{MemoryDeviceType::DDR4, "DDR4"},
{MemoryDeviceType::DDR4_SDRAM, "DDR4_SDRAM"},
{MemoryDeviceType::DDR4E_SDRAM, "DDR4E_SDRAM"},
{MemoryDeviceType::LPDDR4_SDRAM, "LPDDR4_SDRAM"},
{MemoryDeviceType::DDR3_SDRAM, "DDR3_SDRAM"},
{MemoryDeviceType::LPDDR3_SDRAM, "LPDDR3_SDRAM"},
{MemoryDeviceType::DDR2_SDRAM, "DDR2_SDRAM"},
{MemoryDeviceType::DDR2_SDRAM_FB_DIMM, "DDR2_SDRAM_FB_DIMM"},
{MemoryDeviceType::DDR2_SDRAM_FB_DIMM_PROBE, "DDR2_SDRAM_FB_DIMM_PROBE"},
{MemoryDeviceType::DDR_SGRAM, "DDR_SGRAM"},
{MemoryDeviceType::DDR_SDRAM, "DDR_SDRAM"},
{MemoryDeviceType::ROM, "ROM"},
{MemoryDeviceType::SDRAM, "SDRAM"},
{MemoryDeviceType::EDO, "EDO"},
{MemoryDeviceType::FastPageMode, "FastPageMode"},
{MemoryDeviceType::PipelinedNibble, "PipelinedNibble"},
{MemoryDeviceType::Logical, "Logical"},
{MemoryDeviceType::HBM, "HBM"},
{MemoryDeviceType::HBM2, "HBM2"},
{MemoryDeviceType::HBM2E, "HBM2E"},
{MemoryDeviceType::HBM3, "HBM3"},
{MemoryDeviceType::GDDR, "GDDR"},
{MemoryDeviceType::GDDR2, "GDDR2"},
{MemoryDeviceType::GDDR3, "GDDR3"},
{MemoryDeviceType::GDDR4, "GDDR4"},
{MemoryDeviceType::GDDR5, "GDDR5"},
{MemoryDeviceType::GDDR5X, "GDDR5X"},
{MemoryDeviceType::GDDR6, "GDDR6"},
{MemoryDeviceType::DDR5, "DDR5"},
{MemoryDeviceType::OEM, "OEM"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(BaseModuleType, {
{BaseModuleType::Invalid, "Invalid"},
{BaseModuleType::RDIMM, "RDIMM"},
{BaseModuleType::UDIMM, "UDIMM"},
{BaseModuleType::SO_DIMM, "SO_DIMM"},
{BaseModuleType::LRDIMM, "LRDIMM"},
{BaseModuleType::Mini_RDIMM, "Mini_RDIMM"},
{BaseModuleType::Mini_UDIMM, "Mini_UDIMM"},
{BaseModuleType::SO_RDIMM_72b, "SO_RDIMM_72b"},
{BaseModuleType::SO_UDIMM_72b, "SO_UDIMM_72b"},
{BaseModuleType::SO_DIMM_16b, "SO_DIMM_16b"},
{BaseModuleType::SO_DIMM_32b, "SO_DIMM_32b"},
{BaseModuleType::Die, "Die"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(MemoryMedia, {
{MemoryMedia::Invalid, "Invalid"},
{MemoryMedia::DRAM, "DRAM"},
{MemoryMedia::NAND, "NAND"},
{MemoryMedia::Intel3DXPoint, "Intel3DXPoint"},
{MemoryMedia::Proprietary, "Proprietary"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(SecurityStates, {
{SecurityStates::Invalid, "Invalid"},
{SecurityStates::Enabled, "Enabled"},
{SecurityStates::Disabled, "Disabled"},
{SecurityStates::Unlocked, "Unlocked"},
{SecurityStates::Locked, "Locked"},
{SecurityStates::Frozen, "Frozen"},
{SecurityStates::Passphraselimit, "Passphraselimit"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(ErrorCorrection, {
{ErrorCorrection::Invalid, "Invalid"},
{ErrorCorrection::NoECC, "NoECC"},
{ErrorCorrection::SingleBitECC, "SingleBitECC"},
{ErrorCorrection::MultiBitECC, "MultiBitECC"},
{ErrorCorrection::AddressParity, "AddressParity"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(MemoryClassification, {
{MemoryClassification::Invalid, "Invalid"},
{MemoryClassification::Volatile, "Volatile"},
{MemoryClassification::ByteAccessiblePersistent, "ByteAccessiblePersistent"},
{MemoryClassification::Block, "Block"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(OperatingMemoryModes, {
{OperatingMemoryModes::Invalid, "Invalid"},
{OperatingMemoryModes::Volatile, "Volatile"},
{OperatingMemoryModes::PMEM, "PMEM"},
{OperatingMemoryModes::Block, "Block"},
});
} // namespace memory
// clang-format on