mirror of
https://github.com/lm-sensors/lm-sensors
synced 2025-09-01 06:45:24 +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",
|
name => "Maxim MAX6680/MAX6681",
|
||||||
driver => "lm90",
|
driver => "lm90",
|
||||||
i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e],
|
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",
|
name => "Winbond W83L771W/G",
|
||||||
driver => "to-be-written",
|
driver => "to-be-written",
|
||||||
@@ -4051,10 +4056,47 @@ sub lm83_detect
|
|||||||
return $confidence;
|
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,
|
# Chip to detect: 0 = LM90, 1 = LM89/LM99, 2 = LM86, 3 = ADM1032,
|
||||||
# 4 = MAX6654, 5 = ADT7461,
|
# 4 = MAX6654, 5 = ADT7461,
|
||||||
# 6 = MAX6646/MAX6647/MAX6648/MAX6649/MAX6692,
|
# 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
|
# 11 = W83L771AWG/ASG, 12 = MAX6690
|
||||||
# Registers used:
|
# Registers used:
|
||||||
# 0x03: Configuration
|
# 0x03: Configuration
|
||||||
@@ -4115,12 +4157,6 @@ sub lm90_detect
|
|||||||
return if $mid != 0x4d; # Maxim
|
return if $mid != 0x4d; # Maxim
|
||||||
return 8 if $cid == 0x59; # MAX6648/MAX6692
|
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) {
|
if ($chip == 8) {
|
||||||
return if ($conf & 0x2a) != 0;
|
return if ($conf & 0x2a) != 0;
|
||||||
return if $rate > 0x09;
|
return if $rate > 0x09;
|
||||||
|
Reference in New Issue
Block a user