diff options
author | khali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0> | 2011-02-16 12:18:52 +0000 |
---|---|---|
committer | khali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0> | 2011-02-16 12:18:52 +0000 |
commit | ac551d85dedf42bb5b17158285634f4b4ba997e3 (patch) | |
tree | e6ccc10f44db09c57d9e05cb10664345ee73f9cc | |
parent | 6f316106951b9a1e22be5b06c3dc70ef76e9274a (diff) | |
download | i2c-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-- | CHANGES | 2 | ||||
-rwxr-xr-x | eeprom/decode-dimms | 41 |
2 files changed, 24 insertions, 19 deletions
@@ -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; |