1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace memory 7 { 8 // clang-format off 9 10 enum class MemoryType{ 11 Invalid, 12 DRAM, 13 NVDIMM_N, 14 NVDIMM_F, 15 NVDIMM_P, 16 IntelOptane, 17 Cache, 18 }; 19 20 enum class MemoryDeviceType{ 21 Invalid, 22 DDR, 23 DDR2, 24 DDR3, 25 DDR4, 26 DDR4_SDRAM, 27 DDR4E_SDRAM, 28 LPDDR4_SDRAM, 29 DDR3_SDRAM, 30 LPDDR3_SDRAM, 31 DDR2_SDRAM, 32 DDR2_SDRAM_FB_DIMM, 33 DDR2_SDRAM_FB_DIMM_PROBE, 34 DDR_SGRAM, 35 DDR_SDRAM, 36 ROM, 37 SDRAM, 38 EDO, 39 FastPageMode, 40 PipelinedNibble, 41 Logical, 42 HBM, 43 HBM2, 44 HBM2E, 45 HBM3, 46 GDDR, 47 GDDR2, 48 GDDR3, 49 GDDR4, 50 GDDR5, 51 GDDR5X, 52 GDDR6, 53 GDDR7, 54 DDR5, 55 OEM, 56 LPDDR5_SDRAM, 57 DDR5_MRDIMM, 58 }; 59 60 enum class BaseModuleType{ 61 Invalid, 62 RDIMM, 63 UDIMM, 64 SO_DIMM, 65 LRDIMM, 66 Mini_RDIMM, 67 Mini_UDIMM, 68 SO_RDIMM_72b, 69 SO_UDIMM_72b, 70 SO_DIMM_16b, 71 SO_DIMM_32b, 72 Die, 73 CAMM, 74 }; 75 76 enum class MemoryMedia{ 77 Invalid, 78 DRAM, 79 NAND, 80 Intel3DXPoint, 81 Proprietary, 82 }; 83 84 enum class SecurityStates{ 85 Invalid, 86 Enabled, 87 Disabled, 88 Unlocked, 89 Locked, 90 Frozen, 91 Passphraselimit, 92 }; 93 94 enum class ErrorCorrection{ 95 Invalid, 96 NoECC, 97 SingleBitECC, 98 MultiBitECC, 99 AddressParity, 100 }; 101 102 enum class MemoryClassification{ 103 Invalid, 104 Volatile, 105 ByteAccessiblePersistent, 106 Block, 107 }; 108 109 enum class OperatingMemoryModes{ 110 Invalid, 111 Volatile, 112 PMEM, 113 Block, 114 }; 115 116 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryType, { 117 {MemoryType::Invalid, "Invalid"}, 118 {MemoryType::DRAM, "DRAM"}, 119 {MemoryType::NVDIMM_N, "NVDIMM_N"}, 120 {MemoryType::NVDIMM_F, "NVDIMM_F"}, 121 {MemoryType::NVDIMM_P, "NVDIMM_P"}, 122 {MemoryType::IntelOptane, "IntelOptane"}, 123 {MemoryType::Cache, "Cache"}, 124 }); 125 126 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryDeviceType, { 127 {MemoryDeviceType::Invalid, "Invalid"}, 128 {MemoryDeviceType::DDR, "DDR"}, 129 {MemoryDeviceType::DDR2, "DDR2"}, 130 {MemoryDeviceType::DDR3, "DDR3"}, 131 {MemoryDeviceType::DDR4, "DDR4"}, 132 {MemoryDeviceType::DDR4_SDRAM, "DDR4_SDRAM"}, 133 {MemoryDeviceType::DDR4E_SDRAM, "DDR4E_SDRAM"}, 134 {MemoryDeviceType::LPDDR4_SDRAM, "LPDDR4_SDRAM"}, 135 {MemoryDeviceType::DDR3_SDRAM, "DDR3_SDRAM"}, 136 {MemoryDeviceType::LPDDR3_SDRAM, "LPDDR3_SDRAM"}, 137 {MemoryDeviceType::DDR2_SDRAM, "DDR2_SDRAM"}, 138 {MemoryDeviceType::DDR2_SDRAM_FB_DIMM, "DDR2_SDRAM_FB_DIMM"}, 139 {MemoryDeviceType::DDR2_SDRAM_FB_DIMM_PROBE, "DDR2_SDRAM_FB_DIMM_PROBE"}, 140 {MemoryDeviceType::DDR_SGRAM, "DDR_SGRAM"}, 141 {MemoryDeviceType::DDR_SDRAM, "DDR_SDRAM"}, 142 {MemoryDeviceType::ROM, "ROM"}, 143 {MemoryDeviceType::SDRAM, "SDRAM"}, 144 {MemoryDeviceType::EDO, "EDO"}, 145 {MemoryDeviceType::FastPageMode, "FastPageMode"}, 146 {MemoryDeviceType::PipelinedNibble, "PipelinedNibble"}, 147 {MemoryDeviceType::Logical, "Logical"}, 148 {MemoryDeviceType::HBM, "HBM"}, 149 {MemoryDeviceType::HBM2, "HBM2"}, 150 {MemoryDeviceType::HBM2E, "HBM2E"}, 151 {MemoryDeviceType::HBM3, "HBM3"}, 152 {MemoryDeviceType::GDDR, "GDDR"}, 153 {MemoryDeviceType::GDDR2, "GDDR2"}, 154 {MemoryDeviceType::GDDR3, "GDDR3"}, 155 {MemoryDeviceType::GDDR4, "GDDR4"}, 156 {MemoryDeviceType::GDDR5, "GDDR5"}, 157 {MemoryDeviceType::GDDR5X, "GDDR5X"}, 158 {MemoryDeviceType::GDDR6, "GDDR6"}, 159 {MemoryDeviceType::GDDR7, "GDDR7"}, 160 {MemoryDeviceType::DDR5, "DDR5"}, 161 {MemoryDeviceType::OEM, "OEM"}, 162 {MemoryDeviceType::LPDDR5_SDRAM, "LPDDR5_SDRAM"}, 163 {MemoryDeviceType::DDR5_MRDIMM, "DDR5_MRDIMM"}, 164 }); 165 166 NLOHMANN_JSON_SERIALIZE_ENUM(BaseModuleType, { 167 {BaseModuleType::Invalid, "Invalid"}, 168 {BaseModuleType::RDIMM, "RDIMM"}, 169 {BaseModuleType::UDIMM, "UDIMM"}, 170 {BaseModuleType::SO_DIMM, "SO_DIMM"}, 171 {BaseModuleType::LRDIMM, "LRDIMM"}, 172 {BaseModuleType::Mini_RDIMM, "Mini_RDIMM"}, 173 {BaseModuleType::Mini_UDIMM, "Mini_UDIMM"}, 174 {BaseModuleType::SO_RDIMM_72b, "SO_RDIMM_72b"}, 175 {BaseModuleType::SO_UDIMM_72b, "SO_UDIMM_72b"}, 176 {BaseModuleType::SO_DIMM_16b, "SO_DIMM_16b"}, 177 {BaseModuleType::SO_DIMM_32b, "SO_DIMM_32b"}, 178 {BaseModuleType::Die, "Die"}, 179 {BaseModuleType::CAMM, "CAMM"}, 180 }); 181 182 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryMedia, { 183 {MemoryMedia::Invalid, "Invalid"}, 184 {MemoryMedia::DRAM, "DRAM"}, 185 {MemoryMedia::NAND, "NAND"}, 186 {MemoryMedia::Intel3DXPoint, "Intel3DXPoint"}, 187 {MemoryMedia::Proprietary, "Proprietary"}, 188 }); 189 190 NLOHMANN_JSON_SERIALIZE_ENUM(SecurityStates, { 191 {SecurityStates::Invalid, "Invalid"}, 192 {SecurityStates::Enabled, "Enabled"}, 193 {SecurityStates::Disabled, "Disabled"}, 194 {SecurityStates::Unlocked, "Unlocked"}, 195 {SecurityStates::Locked, "Locked"}, 196 {SecurityStates::Frozen, "Frozen"}, 197 {SecurityStates::Passphraselimit, "Passphraselimit"}, 198 }); 199 200 NLOHMANN_JSON_SERIALIZE_ENUM(ErrorCorrection, { 201 {ErrorCorrection::Invalid, "Invalid"}, 202 {ErrorCorrection::NoECC, "NoECC"}, 203 {ErrorCorrection::SingleBitECC, "SingleBitECC"}, 204 {ErrorCorrection::MultiBitECC, "MultiBitECC"}, 205 {ErrorCorrection::AddressParity, "AddressParity"}, 206 }); 207 208 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryClassification, { 209 {MemoryClassification::Invalid, "Invalid"}, 210 {MemoryClassification::Volatile, "Volatile"}, 211 {MemoryClassification::ByteAccessiblePersistent, "ByteAccessiblePersistent"}, 212 {MemoryClassification::Block, "Block"}, 213 }); 214 215 NLOHMANN_JSON_SERIALIZE_ENUM(OperatingMemoryModes, { 216 {OperatingMemoryModes::Invalid, "Invalid"}, 217 {OperatingMemoryModes::Volatile, "Volatile"}, 218 {OperatingMemoryModes::PMEM, "PMEM"}, 219 {OperatingMemoryModes::Block, "Block"}, 220 }); 221 222 } 223 // clang-format on 224