@@ -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)