summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0>2013-04-15 09:15:44 +0000
committerkhali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0>2013-04-15 09:15:44 +0000
commit95f3ed61030a9242da3bd43f473d19ae8d52a420 (patch)
treedb7ee87c1dd5b23880a4fdb4a691a73f9dd1360e
parentfac3793e964ff1ea7ed9979d4b5071b973c018b7 (diff)
downloadi2c-tools-95f3ed61030a9242da3bd43f473d19ae8d52a420.tar.gz
DDR3: Decode the register revision byte as suggested by Jedec
documentation. git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@6144 7894878c-1315-0410-8ee3-d5d059ff63e0
-rwxr-xr-xeeprom/decode-dimms14
1 files changed, 13 insertions, 1 deletions
diff --git a/eeprom/decode-dimms b/eeprom/decode-dimms
index 45971aa..20122b8 100755
--- a/eeprom/decode-dimms
+++ b/eeprom/decode-dimms
@@ -1366,6 +1366,17 @@ sub ddr3_reference_card($$)
return "$ref_card revision $revision";
}
+sub ddr3_revision_number($)
+{
+ my $h = $_[0] >> 4;
+ my $l = $_[0] & 0x0f;
+
+ # Decode as suggested by JEDEC Standard 21-C
+ return sprintf("%d", $l) if $h == 0;
+ return sprintf("%d.%d", $h, $l) if $h < 0xa;
+ return sprintf("%c%d", ord('A') + $h - 0xa, $l);
+}
+
use constant DDR3_UNBUFFERED => 1;
use constant DDR3_REGISTERED => 2;
use constant DDR3_CLOCKED => 3;
@@ -1580,7 +1591,8 @@ sub decode_ddr3_sdram($)
printl("Register device type",
(($bytes->[68] & 7) == 0) ? "SSTE32882" :
"Undefined");
- printl("Register revision", sprintf("0x%.2X", $bytes->[67]));
+ printl_cond($bytes->[67] != 0xff,
+ "Register revision", ddr3_revision_number($bytes->[67]));
printl("Heat spreader characteristics",
($bytes->[64] < 128) ? "Not incorporated" :
sprintf("%.2X", ($bytes->[64] & 127)));