Browse Source

DDR3: Print physical characteristics and registered DIMM information

for all module types which support it.


git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@6141 7894878c-1315-0410-8ee3-d5d059ff63e0
tags/v4.0
Jean Delvare 12 years ago
parent
commit
62a32795b5
  1. 1
      CHANGES
  2. 45
      eeprom/decode-dimms

1
CHANGES

@ -32,6 +32,7 @@ SVN HEAD
Fix speed and PC3 number of high-speed DDR3 modules
Decode DDR3 reference card revision
Print width of all known DDR3 module types
Print physical characteristics for all DDR3 module types
i2cdetect: Do a best effort detection if functionality is missing
Clarify the SMBus commands used for probing by default
i2c-dev.h: Minimize differences with kernel flavor

45
eeprom/decode-dimms

@ -1366,6 +1366,11 @@ sub ddr3_reference_card($$)
return "$ref_card revision $revision";
}
use constant DDR3_UNBUFFERED => 1;
use constant DDR3_REGISTERED => 2;
use constant DDR3_CLOCKED => 3;
use constant DDR3_LOAD_REDUCED => 4;
# Parameter: EEPROM bytes 0-127 (using 3-76)
sub decode_ddr3_sdram($)
{
@ -1377,19 +1382,19 @@ sub decode_ddr3_sdram($)
my @module_types = (
{ type => "Undefined", width => "Unknown" },
{ type => "RDIMM", width => "133.35 mm" },
{ type => "UDIMM", width => "133.35 mm" },
{ type => "SO-DIMM", width => "67.6 mm" },
{ type => "Micro-DIMM", width => "TBD" },
{ type => "Mini-RDIMM", width => "82.0 mm" },
{ type => "Mini-UDIMM", width => "82.0 mm" },
{ type => "Mini-CDIMM", width => "67.6 mm" },
{ type => "72b-SO-UDIMM", width => "67.6 mm" },
{ type => "72b-SO-RDIMM", width => "67.6 mm" },
{ type => "72b-SO-CDIMM", width => "67.6 mm" },
{ type => "LRDIMM", width => "133.35 mm" },
{ type => "16b-SO-DIMM", width => "67.6 mm" },
{ type => "32b-SO-DIMM", width => "67.6 mm" },
{ type => "RDIMM", width => "133.35 mm", family => DDR3_REGISTERED },
{ type => "UDIMM", width => "133.35 mm", family => DDR3_UNBUFFERED },
{ type => "SO-DIMM", width => "67.6 mm", family => DDR3_UNBUFFERED },
{ type => "Micro-DIMM", width => "TBD", family => DDR3_UNBUFFERED },
{ type => "Mini-RDIMM", width => "82.0 mm", family => DDR3_REGISTERED },
{ type => "Mini-UDIMM", width => "82.0 mm", family => DDR3_UNBUFFERED },
{ type => "Mini-CDIMM", width => "67.6 mm", family => DDR3_CLOCKED },
{ type => "72b-SO-UDIMM", width => "67.6 mm", family => DDR3_UNBUFFERED },
{ type => "72b-SO-RDIMM", width => "67.6 mm", family => DDR3_REGISTERED },
{ type => "72b-SO-CDIMM", width => "67.6 mm", family => DDR3_CLOCKED },
{ type => "LRDIMM", width => "133.35 mm", family => DDR3_LOAD_REDUCED },
{ type => "16b-SO-DIMM", width => "67.6 mm", family => DDR3_UNBUFFERED },
{ type => "32b-SO-DIMM", width => "67.6 mm", family => DDR3_UNBUFFERED },
);
printl("Module Type", ($bytes->[3] <= $#module_types) ?
@ -1543,19 +1548,25 @@ sub decode_ddr3_sdram($)
printl("SDRAM Device Type",
($bytes->[33] & 128) ? sprintf($bytes->[33] & 127) :
"Standard Monolithic");
if ($bytes->[3] >= 1 && $bytes->[3] <= 6) {
# Following bytes are type-specific, so don't continue if type
# isn't known.
return if $bytes->[3] == 0 || $bytes->[3] > $#module_types;
if ($module_types[$bytes->[3]]->{family} == DDR3_UNBUFFERED ||
$module_types[$bytes->[3]]->{family} == DDR3_REGISTERED ||
$module_types[$bytes->[3]]->{family} == DDR3_CLOCKED ||
$module_types[$bytes->[3]]->{family} == DDR3_LOAD_REDUCED) {
prints("Physical Characteristics");
printl("Module Height", (($bytes->[60] & 31) + 15) . " mm");
printl("Module Thickness", sprintf("%d mm front, %d mm back",
($bytes->[61] & 15) + 1,
(($bytes->[61] >> 4) & 15) +1));
printl("Module Width", $bytes->[3] <= $#module_types ?
$module_types[$bytes->[3]]->{width} : "TBD");
printl("Module Width", $module_types[$bytes->[3]]->{width});
printl("Module Reference Card", ddr3_reference_card($bytes->[62], $bytes->[60]));
}
if ($bytes->[3] == 1 || $bytes->[3] == 5) {
if ($module_types[$bytes->[3]]->{family} == DDR3_REGISTERED) {
prints("Registered DIMM");
my @rows = ("Undefined", 1, 2, 4);

Loading…
Cancel
Save