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 DDR5, 54 OEM, 55 LPDDR5_SDRAM, 56 DDR5_MRDIMM, 57 }; 58 59 enum class BaseModuleType{ 60 Invalid, 61 RDIMM, 62 UDIMM, 63 SO_DIMM, 64 LRDIMM, 65 Mini_RDIMM, 66 Mini_UDIMM, 67 SO_RDIMM_72b, 68 SO_UDIMM_72b, 69 SO_DIMM_16b, 70 SO_DIMM_32b, 71 Die, 72 CAMM, 73 }; 74 75 enum class MemoryMedia{ 76 Invalid, 77 DRAM, 78 NAND, 79 Intel3DXPoint, 80 Proprietary, 81 }; 82 83 enum class SecurityStates{ 84 Invalid, 85 Enabled, 86 Disabled, 87 Unlocked, 88 Locked, 89 Frozen, 90 Passphraselimit, 91 }; 92 93 enum class ErrorCorrection{ 94 Invalid, 95 NoECC, 96 SingleBitECC, 97 MultiBitECC, 98 AddressParity, 99 }; 100 101 enum class MemoryClassification{ 102 Invalid, 103 Volatile, 104 ByteAccessiblePersistent, 105 Block, 106 }; 107 108 enum class OperatingMemoryModes{ 109 Invalid, 110 Volatile, 111 PMEM, 112 Block, 113 }; 114 115 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryType, { 116 {MemoryType::Invalid, "Invalid"}, 117 {MemoryType::DRAM, "DRAM"}, 118 {MemoryType::NVDIMM_N, "NVDIMM_N"}, 119 {MemoryType::NVDIMM_F, "NVDIMM_F"}, 120 {MemoryType::NVDIMM_P, "NVDIMM_P"}, 121 {MemoryType::IntelOptane, "IntelOptane"}, 122 {MemoryType::Cache, "Cache"}, 123 }); 124 125 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryDeviceType, { 126 {MemoryDeviceType::Invalid, "Invalid"}, 127 {MemoryDeviceType::DDR, "DDR"}, 128 {MemoryDeviceType::DDR2, "DDR2"}, 129 {MemoryDeviceType::DDR3, "DDR3"}, 130 {MemoryDeviceType::DDR4, "DDR4"}, 131 {MemoryDeviceType::DDR4_SDRAM, "DDR4_SDRAM"}, 132 {MemoryDeviceType::DDR4E_SDRAM, "DDR4E_SDRAM"}, 133 {MemoryDeviceType::LPDDR4_SDRAM, "LPDDR4_SDRAM"}, 134 {MemoryDeviceType::DDR3_SDRAM, "DDR3_SDRAM"}, 135 {MemoryDeviceType::LPDDR3_SDRAM, "LPDDR3_SDRAM"}, 136 {MemoryDeviceType::DDR2_SDRAM, "DDR2_SDRAM"}, 137 {MemoryDeviceType::DDR2_SDRAM_FB_DIMM, "DDR2_SDRAM_FB_DIMM"}, 138 {MemoryDeviceType::DDR2_SDRAM_FB_DIMM_PROBE, "DDR2_SDRAM_FB_DIMM_PROBE"}, 139 {MemoryDeviceType::DDR_SGRAM, "DDR_SGRAM"}, 140 {MemoryDeviceType::DDR_SDRAM, "DDR_SDRAM"}, 141 {MemoryDeviceType::ROM, "ROM"}, 142 {MemoryDeviceType::SDRAM, "SDRAM"}, 143 {MemoryDeviceType::EDO, "EDO"}, 144 {MemoryDeviceType::FastPageMode, "FastPageMode"}, 145 {MemoryDeviceType::PipelinedNibble, "PipelinedNibble"}, 146 {MemoryDeviceType::Logical, "Logical"}, 147 {MemoryDeviceType::HBM, "HBM"}, 148 {MemoryDeviceType::HBM2, "HBM2"}, 149 {MemoryDeviceType::HBM2E, "HBM2E"}, 150 {MemoryDeviceType::HBM3, "HBM3"}, 151 {MemoryDeviceType::GDDR, "GDDR"}, 152 {MemoryDeviceType::GDDR2, "GDDR2"}, 153 {MemoryDeviceType::GDDR3, "GDDR3"}, 154 {MemoryDeviceType::GDDR4, "GDDR4"}, 155 {MemoryDeviceType::GDDR5, "GDDR5"}, 156 {MemoryDeviceType::GDDR5X, "GDDR5X"}, 157 {MemoryDeviceType::GDDR6, "GDDR6"}, 158 {MemoryDeviceType::DDR5, "DDR5"}, 159 {MemoryDeviceType::OEM, "OEM"}, 160 {MemoryDeviceType::LPDDR5_SDRAM, "LPDDR5_SDRAM"}, 161 {MemoryDeviceType::DDR5_MRDIMM, "DDR5_MRDIMM"}, 162 }); 163 164 NLOHMANN_JSON_SERIALIZE_ENUM(BaseModuleType, { 165 {BaseModuleType::Invalid, "Invalid"}, 166 {BaseModuleType::RDIMM, "RDIMM"}, 167 {BaseModuleType::UDIMM, "UDIMM"}, 168 {BaseModuleType::SO_DIMM, "SO_DIMM"}, 169 {BaseModuleType::LRDIMM, "LRDIMM"}, 170 {BaseModuleType::Mini_RDIMM, "Mini_RDIMM"}, 171 {BaseModuleType::Mini_UDIMM, "Mini_UDIMM"}, 172 {BaseModuleType::SO_RDIMM_72b, "SO_RDIMM_72b"}, 173 {BaseModuleType::SO_UDIMM_72b, "SO_UDIMM_72b"}, 174 {BaseModuleType::SO_DIMM_16b, "SO_DIMM_16b"}, 175 {BaseModuleType::SO_DIMM_32b, "SO_DIMM_32b"}, 176 {BaseModuleType::Die, "Die"}, 177 {BaseModuleType::CAMM, "CAMM"}, 178 }); 179 180 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryMedia, { 181 {MemoryMedia::Invalid, "Invalid"}, 182 {MemoryMedia::DRAM, "DRAM"}, 183 {MemoryMedia::NAND, "NAND"}, 184 {MemoryMedia::Intel3DXPoint, "Intel3DXPoint"}, 185 {MemoryMedia::Proprietary, "Proprietary"}, 186 }); 187 188 NLOHMANN_JSON_SERIALIZE_ENUM(SecurityStates, { 189 {SecurityStates::Invalid, "Invalid"}, 190 {SecurityStates::Enabled, "Enabled"}, 191 {SecurityStates::Disabled, "Disabled"}, 192 {SecurityStates::Unlocked, "Unlocked"}, 193 {SecurityStates::Locked, "Locked"}, 194 {SecurityStates::Frozen, "Frozen"}, 195 {SecurityStates::Passphraselimit, "Passphraselimit"}, 196 }); 197 198 NLOHMANN_JSON_SERIALIZE_ENUM(ErrorCorrection, { 199 {ErrorCorrection::Invalid, "Invalid"}, 200 {ErrorCorrection::NoECC, "NoECC"}, 201 {ErrorCorrection::SingleBitECC, "SingleBitECC"}, 202 {ErrorCorrection::MultiBitECC, "MultiBitECC"}, 203 {ErrorCorrection::AddressParity, "AddressParity"}, 204 }); 205 206 NLOHMANN_JSON_SERIALIZE_ENUM(MemoryClassification, { 207 {MemoryClassification::Invalid, "Invalid"}, 208 {MemoryClassification::Volatile, "Volatile"}, 209 {MemoryClassification::ByteAccessiblePersistent, "ByteAccessiblePersistent"}, 210 {MemoryClassification::Block, "Block"}, 211 }); 212 213 NLOHMANN_JSON_SERIALIZE_ENUM(OperatingMemoryModes, { 214 {OperatingMemoryModes::Invalid, "Invalid"}, 215 {OperatingMemoryModes::Volatile, "Volatile"}, 216 {OperatingMemoryModes::PMEM, "PMEM"}, 217 {OperatingMemoryModes::Block, "Block"}, 218 }); 219 220 } 221 // clang-format on 222