2
0
mirror of https://github.com/lm-sensors/lm-sensors synced 2025-09-01 06:45:24 +00:00

Add support to detect EMC1002, EMC1033, EMC1046, EMC1047,

EMC1072, EMC1073, EMC1074, EMC1402, and EMC1424 to sensors-detect.



git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@5915 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Guenter Roeck
2011-02-09 17:12:53 +00:00
parent af638ee3a2
commit e04aa3207b
2 changed files with 82 additions and 6 deletions

View File

@@ -20,8 +20,10 @@ SVN HEAD
Add detection of the ITE IT8728F
Implement universal detection for coretemp (#2381)
Add detection of Maxim MAX6639
Add detection of EMC1023, EMC1043, EMC1053, and EMC1063
Add detection of SMSC EMC1023, EMC1043, EMC1053, and EMC1063
Add detection of Nuvoton NCT5571D, NCT5577D and NCT6776F
Add detection of SMSC EMC1002, EMC1033, EMC1046, EMC1047,
EMC1072, EMC1073, EMC1074, EMC1402, and EMC1424
3.2.0 (2010-10-10)
libsensors: Increase MAX_SENSORS_PER_TYPE to 24

View File

@@ -1194,16 +1194,36 @@ use vars qw(@i2c_adapter_names);
driver => "to-be-written",
i2c_addrs => [0x2f],
i2c_detect => sub { fintek_detect(@_, 7); },
}, {
name => "SMSC EMC1002",
driver => "to-be-written",
i2c_addrs => [0x4c, 0x4d], # 0x3c, 0x3d not probed
i2c_detect => sub { emc1403_detect(@_, 4); },
}, {
name => "SMSC EMC1023",
driver => "to-be-written", # emc1023
i2c_addrs => [0x48, 0x49, 0x4c, 0x4d],
i2c_detect => sub { emc1023_detect(@_, 0); },
}, {
name => "SMSC EMC1033",
driver => "to-be-written",
i2c_addrs => [0x4c, 0x4d], # 0x3c, 0x3d not probed
i2c_detect => sub { emc1403_detect(@_, 5); },
}, {
name => "SMSC EMC1043",
driver => "to-be-written", # emc1023
i2c_addrs => [0x48, 0x49, 0x4c, 0x4d],
i2c_detect => sub { emc1023_detect(@_, 1); },
}, {
name => "SMSC EMC1046",
driver => "to-be-written",
i2c_addrs => [0x4c, 0x4d],
i2c_detect => sub { emc1403_detect(@_, 6); },
}, {
name => "SMSC EMC1047",
driver => "to-be-written",
i2c_addrs => [0x18], # 0x10 not probed
i2c_detect => sub { emc1403_detect(@_, 7); },
}, {
name => "SMSC EMC1053",
driver => "to-be-written", # emc1023
@@ -1214,6 +1234,26 @@ use vars qw(@i2c_adapter_names);
driver => "to-be-written", # emc1023
i2c_addrs => [0x48, 0x49, 0x4c, 0x4d],
i2c_detect => sub { emc1023_detect(@_, 3); },
}, {
name => "SMSC EMC1072",
driver => "to-be-written",
i2c_addrs => [0x1c, 0x4c, 0x5c], # 0x2c, 0x3c, 0x6c, 0x7c not probed
i2c_detect => sub { emc1403_detect(@_, 8); },
}, {
name => "SMSC EMC1073",
driver => "to-be-written",
i2c_addrs => [0x1c, 0x4c, 0x5c], # 0x2c, 0x3c, 0x6c, 0x7c not probed
i2c_detect => sub { emc1403_detect(@_, 9); },
}, {
name => "SMSC EMC1074",
driver => "to-be-written",
i2c_addrs => [0x1c, 0x4c, 0x5c], # 0x2c, 0x3c, 0x6c, 0x7c not probed
i2c_detect => sub { emc1403_detect(@_, 10); },
}, {
name => "SMSC EMC1402",
driver => "to-be-written",
i2c_addrs => [0x18, 0x29, 0x4c, 0x4d],
i2c_detect => sub { emc1403_detect(@_, 11); },
}, {
name => "SMSC EMC1403",
driver => "emc1403",
@@ -1229,6 +1269,11 @@ use vars qw(@i2c_adapter_names);
driver => "emc1403",
i2c_addrs => [0x18, 0x2a, 0x4c, 0x4d],
i2c_detect => sub { emc1403_detect(@_, 3); },
}, {
name => "SMSC EMC1424",
driver => "to-be-written",
i2c_addrs => [0x4c],
i2c_detect => sub { emc1403_detect(@_, 12); },
}, {
name => "ST STTS424",
driver => "jc42",
@@ -5446,7 +5491,9 @@ sub emc1023_detect
return 7;
}
# Chip to detect: 0 = EMC1403, 1 = EMC1404, 2 = EMC2103, 3 = EMC1423
# Chip to detect: 0 = EMC1403, 1 = EMC1404, 2 = EMC2103, 3 = EMC1423,
# 4 = EMC1002, 5 = EMC1033, 6 = EMC1046, 7 = EMC1047, 8 = EMC1072,
# 9 = EMC1073, 10 = EMC1074, 11 = EMC1402, 12 = EMC1424
# Registers used:
# 0xfd: Device ID register
# 0xfe: Vendor ID register
@@ -5460,18 +5507,45 @@ sub emc1403_detect
return unless $man_id == 0x5d; # SMSC
if ($chip == 0) {
if ($chip == 0) { # EMC1403
return unless $dev_id == 0x21;
return unless $rev == 0x01;
} elsif ($chip == 1) {
} elsif ($chip == 1) { # EMC1404
return unless $dev_id == 0x25;
return unless $rev == 0x01;
} elsif ($chip == 2) {
} elsif ($chip == 2) { # EMC2103
return unless ($dev_id == 0x24) || ($dev_id == 0x26);
return unless $rev == 0x01;
} elsif ($chip == 3) {
} elsif ($chip == 3) { # EMC1423
return unless $dev_id == 0x23;
return unless $rev == 0x01;
} elsif ($chip == 4) { # EMC1002
return unless ($dev_id == 0x02) || ($dev_id == 0x03);
return unless $rev == 0x01;
} elsif ($chip == 5) { # EMC1033
return unless ($dev_id == 0x0a) || ($dev_id == 0x0b);
return unless $rev == 0x01;
} elsif ($chip == 6) { # EMC1046
return unless $dev_id == 0x1a;
return unless $rev == 0x01;
} elsif ($chip == 7) { # EMC1047
return unless $dev_id == 0x1c;
return unless $rev == 0x01;
} elsif ($chip == 8) { # EMC1072
return unless $dev_id == 0x20;
return unless $rev == 0x03;
} elsif ($chip == 9) { # EMC1073
return unless $dev_id == 0x21;
return unless $rev == 0x03;
} elsif ($chip == 10) { # EMC1074
return unless $dev_id == 0x25;
return unless $rev == 0x03;
} elsif ($chip == 11) { # EMC1402
return unless $dev_id == 0x20;
return unless $rev == 0x01;
} elsif ($chip == 12) { # EMC1424
return unless $dev_id == 0x27;
return unless $rev == 0x01;
}
return 6;