v2: Fixed per review feedback. Tested code with LM95231 and LM95245. --- Index: prog/detect/sensors-detect =================================================================== --- prog/detect/sensors-detect (revision 5983) +++ prog/detect/sensors-detect (working copy) @@ -1008,6 +1008,11 @@ i2c_addrs => [0x2b, 0x19, 0x2a], i2c_detect => sub { lm95231_detect(@_, 1); }, }, { + name => "National Semiconductor LM95245", + driver => "lm95245", + i2c_addrs => [0x18, 0x19, 0x29, 0x4c, 0x4d], + i2c_detect => sub { lm95231_detect(@_, 2); }, + }, { name => "National Semiconductor LM63", driver => "lm63", i2c_addrs => [0x4c], @@ -4540,12 +4545,14 @@ return 5; } -# Chip to detect: 0 = LM95231, 1 = LM95241 +# Chip to detect: 0 = LM95231, 1 = LM95241, 2 = LM95245 # Registers used: # 0x02: Status (3 unused bits) # 0x03: Configuration (3 unused bits) -# 0x06: Remote diode filter control (6 unused bits) -# 0x30: Remote diode model type select (6 unused bits) +# 0x06: Remote diode filter control (6 unused bits, LM95231 and LM95241) +# 0x30: Remote diode model type select (6 unused bits, LM95231 and LM95241) +# 0x30: Local Temperature LSB (5 unused bits, LM95245) +# 0x33: Status register 2 (6 unused bits, LM95245) # 0xfe: Manufacturer ID # 0xff: Revision ID sub lm95231_detect @@ -4555,13 +4562,21 @@ my $cid = i2c_smbus_read_byte_data($file, 0xff); return if $mid != 0x01; # National Semiconductor - return if $chip == 0 && $cid != 0xa1; # LM95231 - return if $chip == 1 && $cid != 0xa4; # LM95241 - return if i2c_smbus_read_byte_data($file, 0x02) & 0x70; - return if i2c_smbus_read_byte_data($file, 0x03) & 0x89; - return if i2c_smbus_read_byte_data($file, 0x06) & 0xfa; - return if i2c_smbus_read_byte_data($file, 0x30) & 0xfa; + if ($chip == 0 || $chip == 1) { + return if $chip == 0 && $cid != 0xa1; # LM95231 + return if $chip == 1 && $cid != 0xa4; # LM95241 + return if i2c_smbus_read_byte_data($file, 0x02) & 0x70; + return if i2c_smbus_read_byte_data($file, 0x03) & 0x89; + return if i2c_smbus_read_byte_data($file, 0x06) & 0xfa; + return if i2c_smbus_read_byte_data($file, 0x30) & 0xfa; + } elsif ($chip == 2) { + return if $cid != 0xb3; # LM95245 + return if i2c_smbus_read_byte_data($file, 0x02) & 0x68; + return if i2c_smbus_read_byte_data($file, 0x03) & 0xa1; + return if i2c_smbus_read_byte_data($file, 0x30) & 0x1a; + return if i2c_smbus_read_byte_data($file, 0x33) & 0x3f; + } return 6; } Index: CHANGES =================================================================== --- CHANGES (revision 5983) +++ CHANGES (working copy) @@ -17,6 +17,7 @@ Add detection of ITE IT8772E Don't advertise the ipmisensors driver Add detection of SA56004 + Add detection of LM95245 3.3.0 (2011-03-28) Makefile: Check for bison and flex _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors