2
0
mirror of https://github.com/lm-sensors/lm-sensors synced 2025-08-31 06:15:15 +00:00

Update sensors-detect to support max6695/96

git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@5858 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Guenter Roeck
2010-09-12 16:18:02 +00:00
parent fffbe666c4
commit cae4d27236

View File

@@ -921,7 +921,12 @@ use vars qw(@i2c_adapter_names);
name => "Maxim MAX6680/MAX6681",
driver => "lm90",
i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e],
i2c_detect => sub { lm90_detect(@_, 7); },
i2c_detect => sub { max6680_95_detect(@_, 0); },
}, {
name => "Maxim MAX6695/MAX6696",
driver => "lm90",
i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e],
i2c_detect => sub { max6680_95_detect(@_, 1); },
}, {
name => "Winbond W83L771W/G",
driver => "to-be-written",
@@ -4051,10 +4056,47 @@ sub lm83_detect
return $confidence;
}
# Chip to detect: 0 = MAX6680/81, 1 = MAX6695/96
# Registers used:
# 0x03: Configuration
# 0x04: Conversion rate
# 0x12: Status2
# 0x16: Overtemperature 2
# 0xfe: Manufacturer ID
# 0xff: Chip ID / die revision
sub max6680_95_detect
{
my ($file, $addr, $chip) = @_;
my $cid = i2c_smbus_read_byte_data($file, 0xff);
my $conf = i2c_smbus_read_byte_data($file, 0x03);
my $mid = i2c_smbus_read_byte_data($file, 0xfe, NO_CACHE);
my $emerg = i2c_smbus_read_byte_data($file, 0x16, NO_CACHE);
my $rate = i2c_smbus_read_byte_data($file, 0x04, NO_CACHE);
my $emerg2 = i2c_smbus_read_byte_data($file, 0x16, NO_CACHE);
# Check common conditions
return if $rate > 0x07;
return if $mid != 0x4d; # Not Maxim
return if $cid != 0x01; # None of the chips we are looking for
if ($chip == 0) {
return if ($conf & 0x03) != 0;
return 8 if $emerg != $emerg2; # MAX6680/MAX6681
}
if ($chip == 1) {
my $status2 = i2c_smbus_read_byte_data($file, 0x12);
return if ($conf & 0x10) != 0;
return if ($status2 & 0x01) != 0;
return 8 if $emerg == $emerg2; # MAX6695/MAX6696
}
return;
}
# Chip to detect: 0 = LM90, 1 = LM89/LM99, 2 = LM86, 3 = ADM1032,
# 4 = MAX6654, 5 = ADT7461,
# 6 = MAX6646/MAX6647/MAX6648/MAX6649/MAX6692,
# 7 = MAX6680/MAX6681, 8 = W83L771W/G, 9 = TMP401, 10 = TMP411,
# 8 = W83L771W/G, 9 = TMP401, 10 = TMP411,
# 11 = W83L771AWG/ASG, 12 = MAX6690
# Registers used:
# 0x03: Configuration
@@ -4115,12 +4157,6 @@ sub lm90_detect
return if $mid != 0x4d; # Maxim
return 8 if $cid == 0x59; # MAX6648/MAX6692
}
if ($chip == 7) {
return if ($conf & 0x03) != 0;
return if $rate > 0x07;
return if $mid != 0x4d; # Maxim
return 8 if $cid == 0x01; # MAX6680/MAX6681
}
if ($chip == 8) {
return if ($conf & 0x2a) != 0;
return if $rate > 0x09;