summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0>2013-04-14 17:30:22 +0000
committerkhali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0>2013-04-14 17:30:22 +0000
commit3d0d3fc40809647d1cff1a74d1cd0809c50f3953 (patch)
tree18f0a71a4b721b52729e2c2a2b433b9b429ac822
parente1587ef71c253f9f94d865cddd73ea295ca402a5 (diff)
downloadi2c-tools-3d0d3fc40809647d1cff1a74d1cd0809c50f3953.tar.gz
DDR3: Decode and print reference card revision.
git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@6138 7894878c-1315-0410-8ee3-d5d059ff63e0
-rw-r--r--CHANGES1
-rwxr-xr-xeeprom/decode-dimms10
2 files changed, 7 insertions, 4 deletions
diff --git a/CHANGES b/CHANGES
index 55f12fc..fca43f1 100644
--- a/CHANGES
+++ b/CHANGES
@@ -30,6 +30,7 @@ SVN HEAD
Don't print the DDR3 time bases
Decode the FTB fields of DDR3 tCk, tAA, tRCD, tRP and tRC
Fix speed and PC3 number of high-speed DDR3 modules
+ Decode DDR3 reference card revision
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
diff --git a/eeprom/decode-dimms b/eeprom/decode-dimms
index e51f639..fad04eb 100755
--- a/eeprom/decode-dimms
+++ b/eeprom/decode-dimms
@@ -1340,15 +1340,17 @@ sub ddr3_mtb_ftb($$$$)
return $byte1 * $mtb + $byte2 * $ftb / 1000;
}
-sub ddr3_reference_card($)
+sub ddr3_reference_card($$)
{
- my ($rrc) = @_;
+ my ($rrc, $ext) = @_;
my $alphabet = "ABCDEFGHJKLMNPRTUVWY";
my $ref = $rrc & 0x1f;
+ my $revision = $ext >> 5;
my $ref_card;
return "ZZ" if $ref == 0x1f;
$ref += 0x1f if $rrc & 0x80;
+ $revision = (($rrc >> 5) & 0x03) if $revision == 0;
if ($ref < length($alphabet)) {
# One letter reference card
@@ -1361,7 +1363,7 @@ sub ddr3_reference_card($)
substr($alphabet, $ref, 1);
}
- return $ref_card;
+ return "$ref_card revision $revision";
}
# Parameter: EEPROM bytes 0-127 (using 3-76)
@@ -1539,7 +1541,7 @@ sub decode_ddr3_sdram($)
(($bytes->[61] >> 4) & 15) +1));
printl("Module Width (mm)", ($bytes->[3] <= 2) ? 133.5 :
($bytes->[3] == 3) ? 67.6 : "TBD");
- printl("Module Reference Card", ddr3_reference_card($bytes->[62]));
+ printl("Module Reference Card", ddr3_reference_card($bytes->[62], $bytes->[60]));
}
if ($bytes->[3] == 1 || $bytes->[3] == 5) {