Browse Source

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
tags/v3.1.0
Jean Delvare 15 years ago
parent
commit
1981d2ef40
  1. 2
      CHANGES
  2. 41
      eeprom/decode-dimms

2
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

41
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;

Loading…
Cancel
Save