2
0
mirror of https://github.com/lm-sensors/lm-sensors synced 2025-09-05 00:35:35 +00:00

sensors-detect: Add Analog Devices ADM1033, ADM1034, ADT7462, ADT7466,

ADT7470, ADT7473 and ADT7475 detection.


git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@4116 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Jean Delvare
2006-08-27 19:51:38 +00:00
parent 844c76f217
commit e8f0bc718a
2 changed files with 129 additions and 1 deletions

View File

@@ -1055,12 +1055,44 @@ use vars qw(@pci_adapters_sis5595 @pci_adapters_sis645 @pci_adapters_sis96x);
i2c_addrs => [0x2c..0x2e],
i2c_detect => sub { lm85_detect(0x5c, @_); },
},
{
name => "Analog Devices ADT7462",
driver => "to-be-written",
# The datasheet says addresses 0x5C and 0x58, but I guess these are
# left-aligned values
i2c_addrs => [0x2c, 0x2e],
i2c_detect => sub { adt7467_detect(2, @_); },
},
{
name => "Analog Devices ADT7466",
driver => "to-be-written",
i2c_addrs => [0x4c],
i2c_detect => sub { adt7467_detect(3, @_); },
},
{
name => "Analog Devices ADT7467 or ADT7468",
driver => "to-be-written",
i2c_addrs => [0x2e],
i2c_detect => sub { adt7467_detect(0, @_); },
},
{
name => "Analog Devices ADT7470",
driver => "to-be-written",
i2c_addrs => [0x2c, 0x2e, 0x2f],
i2c_detect => sub { adt7467_detect(4, @_); },
},
{
name => "Analog Devices ADT7473",
driver => "to-be-written",
i2c_addrs => [0x2e],
i2c_detect => sub { adt7473_detect(0, @_); },
},
{
name => "Analog Devices ADT7475",
driver => "to-be-written",
i2c_addrs => [0x2e],
i2c_detect => sub { adt7473_detect(1, @_); },
},
{
name => "Analog Devices ADT7476",
driver => "to-be-written",
@@ -1430,6 +1462,18 @@ use vars qw(@pci_adapters_sis5595 @pci_adapters_sis645 @pci_adapters_sis96x);
i2c_addrs => [0x2c..0x2e],
i2c_detect => sub { adm1031_detect(1, @_); },
},
{
name => "Analog Devices ADM1033",
driver => "to-be-written",
i2c_addrs => [0x50..0x53],
i2c_detect => sub { adm1034_detect(0, @_); },
},
{
name => "Analog Devices ADM1034",
driver => "to-be-written",
i2c_addrs => [0x50..0x53],
i2c_detect => sub { adm1034_detect(1, @_); },
},
{
name => "Analog Devices ADM1022",
driver => "thmc50",
@@ -3709,7 +3753,41 @@ sub adm1031_detect
}
# $_[0]: Chip to detect
# (0 = ADT7467/ADT7468, 1 = ADT7674)
# (0 = ADM1033, 1 = ADM1034)
# $_[1]: A reference to the file descriptor to access this chip.
# $_[2]: Address (unused)
# Returns: undef if not detected, 4 or 6 if detected.
# Registers used:
# 0x3d: Chip ID
# 0x3e: Manufacturer ID
# 0x3f: Die revision
sub adm1034_detect
{
my ($chip, $file, $addr) = @_;
my $mid = i2c_smbus_read_byte_data($file, 0x3e);
my $cid = i2c_smbus_read_byte_data($file, 0x3d);
my $drev = i2c_smbus_read_byte_data($file, 0x3f);
if ($chip == 0) {
return if $mid != 0x41; # Analog Devices
return if $cid != 0x33; # ADM1033
return if ($drev & 0xf8) != 0x00;
return 6 if $drev == 0x02;
return 4;
}
if ($chip == 1) {
return if $mid != 0x41; # Analog Devices
return if $cid != 0x34; # ADM1034
return if ($drev & 0xf8) != 0x00;
return 6 if $drev == 0x02;
return 4;
}
return
}
# $_[0]: Chip to detect
# (0 = ADT7467/ADT7468, 1 = ADT7476, 2 = ADT7462, 3 = ADT7466,
# 4 = ADT7470)
# $_[1]: A reference to the file descriptor to access this chip.
# We may assume an i2c_set_slave_addr was already done.
# $_[2]: Address
@@ -3739,6 +3817,54 @@ sub adt7467_detect
return 7 if ($drev == 0x69);
return 5;
}
if ($chip == 2) {
return if $mid != 0x41; # Analog Devices
return if $cid != 0x62; # ADT7462
return if ($drev & 0xf0) != 0x00;
return 7 if ($drev == 0x04);
return 5;
}
if ($chip == 3) {
return if $mid != 0x41; # Analog Devices
return if $cid != 0x66; # ADT7466
return if ($drev & 0xf0) != 0x00;
return 7 if ($drev == 0x02);
return 5;
}
if ($chip == 4) {
return if $mid != 0x41; # Analog Devices
return if $cid != 0x70; # ADT7470
return if ($drev & 0xf0) != 0x00;
return 7 if ($drev == 0x00);
return 5;
}
return
}
# $_[0]: Chip to detect
# (0 = ADT7473, 1 = ADT7475)
# $_[1]: A reference to the file descriptor to access this chip.
# $_[2]: Address (unused)
# Returns: undef if not detected, 5 if detected.
# Registers used:
# 0x3d: Chip ID
# 0x3e: Manufacturer ID
sub adt7473_detect
{
my ($chip, $file, $addr) = @_;
my $mid = i2c_smbus_read_byte_data($file, 0x3e);
my $cid = i2c_smbus_read_byte_data($file, 0x3d);
if ($chip == 0) {
return if $mid != 0x41; # Analog Devices
return if $cid != 0x73; # ADT7473
return 5;
}
if ($chip == 1) {
return if $mid != 0x41; # Analog Devices
return if $cid != 0x75; # ADT7475
return 5;
}
return
}