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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user