From: Stephen Horvath <s.horvath@xxxxxxxxxxxxxx> Decode more manufacturer information, but only the info that is specific to certain types of DDR5 memory modules. This is completely untested since my modules don't expose this. I also only have UDIMMs. Signed-off-by: Stephen Horvath <s.horvath@xxxxxxxxxxxxxx> --- eeprom/decode-dimms | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/eeprom/decode-dimms b/eeprom/decode-dimms index f36af056a480d429203abc7e0dfda3751027948b..a3b613bc869bbd1d8183958c42d05c3b3e3653ca 100755 --- a/eeprom/decode-dimms +++ b/eeprom/decode-dimms @@ -2386,6 +2386,77 @@ sub decode_ddr5_sdram($) (($bytes->[231] >> 4) & 15) + 1)); printl("Module Reference Card", ddr3_reference_card($bytes->[232], $bytes->[232])); + +# type-specific settings + if ($spd_info_rev == 0x11 && + ($type == 0x02 || # UDIMM + $type == 0x03 || # SODIMM + $type == 0x05 || # CUDIMM + $type == 0x06)) { # CSODIMM + prints("Unbuffered Memory Module"); + + printl("Clock driver manufacturer", + manufacturer_ddr3($bytes->[240], $bytes->[241])); + } + + if ($spd_info_rev == 0x11 && + ($type == 0x01 || # RDIMM + $type == 0x04)) { # LRDIMM + prints("Registered Memory Module"); + + printl("Clock driver manufacturer", + manufacturer_ddr3($bytes->[240], $bytes->[241])); + printl("Data buffer manufacturer", + manufacturer_ddr3($bytes->[244], $bytes->[245])); + } + + if ($spd_info_rev == 0x11 && + ($type == 0x07)) { # MRDIMM + prints("Multiplexed Rank Memory Module"); + + printl("Clock driver manufacturer", + manufacturer_ddr3($bytes->[240], $bytes->[241])); + printl("Data buffer manufacturer", + manufacturer_ddr3($bytes->[244], $bytes->[245])); + } + + if ($spd_info_rev == 0x10 && + ($type == 0x0A)) { # DDIMM + prints("Differential Memory Module"); + + printl("Memory buffer manufacturer", + manufacturer_ddr3($bytes->[240], $bytes->[241])); + } + + if ($spd_info_rev == 0x01 && + ($raw_type & 0xf0 == 0x90)) { # NVDIMM-N + prints("Non-Volatile Memory Module"); + + printl("Clock driver manufacturer", + manufacturer_ddr3($bytes->[240], $bytes->[241])); + printl("Data buffer manufacturer", + manufacturer_ddr3($bytes->[244], $bytes->[245])); + } + + if ($spd_info_rev == 0x10 && + ($raw_type & 0xf0 == 0xA0)) { # NVDIMM-P + prints("Non-Volatile Memory Module"); + + printl("Clock driver manufacturer", + manufacturer_ddr3($bytes->[240], $bytes->[241])); + printl("Data buffer manufacturer", + manufacturer_ddr3($bytes->[244], $bytes->[245])); + } + + if ($spd_info_rev == 0x10 && + ($type == 0x08)) { # CAMM2 + prints("Compression Attached Memory Module"); + + printl("Clock driver 0 manufacturer", + manufacturer_ddr3($bytes->[240], $bytes->[241])); + printl("Clock driver 1 manufacturer", + manufacturer_ddr3($bytes->[244], $bytes->[245])); + } } # Parameter: EEPROM bytes 0-127 (using 4-5) -- 2.45.2