summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0>2011-02-16 12:18:52 +0000
committerkhali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0>2011-02-16 12:18:52 +0000
commitac551d85dedf42bb5b17158285634f4b4ba997e3 (patch)
treee6ccc10f44db09c57d9e05cb10664345ee73f9cc
parent6f316106951b9a1e22be5b06c3dc70ef76e9274a (diff)
downloadi2c-tools-ac551d85dedf42bb5b17158285634f4b4ba997e3.tar.gz
Decode module configuration type and refresh rate of DDR SDRAM.
git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@5928 7894878c-1315-0410-8ee3-d5d059ff63e0
-rw-r--r--CHANGES2
-rwxr-xr-xeeprom/decode-dimms41
2 files changed, 24 insertions, 19 deletions
diff --git a/CHANGES b/CHANGES
index 1be0748..1f7e767 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,8 @@ i2c-tools CHANGES
-----------------
SVN
+ decode-dimms: Decode module configuration type of DDR SDRAM
+ Decode refresh rate of DDR SDRAM
i2c-dev.h: Make value arrays const for block write functions
i2cset: Add support for SMBus and I2C block writes
Removed obsolete method to specify value mask
diff --git a/eeprom/decode-dimms b/eeprom/decode-dimms
index fc764d2..2ba393a 100755
--- a/eeprom/decode-dimms
+++ b/eeprom/decode-dimms
@@ -525,6 +525,18 @@ sub sdram_voltage_interface_level($)
return ($_[0] < @levels) ? $levels[$_[0]] : "Undefined!";
}
+# Common to SDR and DDR SDRAM
+sub sdram_module_configuration_type($)
+{
+ my @types = (
+ "No Parity", # 0
+ "Parity", # 1
+ "ECC", # 2
+ );
+
+ return ($_[0] < @types) ? $types[$_[0]] : "Undefined!";
+}
+
# Parameter: EEPROM bytes 0-127 (using 3-62)
sub decode_sdr_sdram($)
{
@@ -596,25 +608,10 @@ sub decode_sdr_sdram($)
printl("Voltage Interface Level",
sdram_voltage_interface_level($bytes->[8]));
- if ($bytes->[11] == 0) { $temp = "No Parity"; }
- elsif ($bytes->[11] == 1) { $temp = "Parity"; }
- elsif ($bytes->[11] == 2) { $temp = "ECC"; }
- else { $temp = "Undefined!"; }
- printl("Module Configuration Type", $temp);
-
- if ($bytes->[12] & 0x80) { $temp = "Self Refreshing"; }
- else { $temp = "Not Self Refreshing"; }
- printl("Refresh Type", $temp);
-
- $temp = $bytes->[12] & 0x7f;
- if ($temp == 0) { $temp = "Normal (15.625 us)"; }
- elsif ($temp == 1) { $temp = "Reduced (3.9 us)"; }
- elsif ($temp == 2) { $temp = "Reduced (7.8 us)"; }
- elsif ($temp == 3) { $temp = "Extended (31.3 us)"; }
- elsif ($temp == 4) { $temp = "Extended (62.5 us)"; }
- elsif ($temp == 5) { $temp = "Extended (125 us)"; }
- else { $temp = "Undefined!"; }
- printl("Refresh Rate", $temp);
+ printl("Module Configuration Type",
+ sdram_module_configuration_type($bytes->[11]));
+
+ printl("Refresh Rate", ddr2_refresh_rate($bytes->[12]));
if ($bytes->[13] & 0x80) { $temp = "Bank2 = 2 x Bank1"; }
else { $temp = "No Bank2 OR Bank2 = Bank1 width"; }
@@ -821,6 +818,11 @@ sub decode_ddr_sdram($)
printl("Voltage Interface Level",
sdram_voltage_interface_level($bytes->[8]));
+ printl("Module Configuration Type",
+ sdram_module_configuration_type($bytes->[11]));
+
+ printl("Refresh Rate", ddr2_refresh_rate($bytes->[12]));
+
my $highestCAS = 0;
my %cas;
for ($ii = 0; $ii < 7; $ii++) {
@@ -949,6 +951,7 @@ sub ddr2_module_types($)
return @suptypes;
}
+# Common to SDR, DDR and DDR2 SDRAM
sub ddr2_refresh_rate($)
{
my $byte = shift;