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;