Show
Ignore:
Timestamp:
09/12/10 18:18:02 (4 years ago)
Author:
groeck
Message:

Update sensors-detect to support max6695/96

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/prog/detect/sensors-detect

    r5853 r5858  
    922922                driver => "lm90", 
    923923                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
    924                 i2c_detect => sub { lm90_detect(@_, 7); }, 
     924                i2c_detect => sub { max6680_95_detect(@_, 0); }, 
     925        }, { 
     926                name => "Maxim MAX6695/MAX6696", 
     927                driver => "lm90", 
     928                i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e], 
     929                i2c_detect => sub { max6680_95_detect(@_, 1); }, 
    925930        }, { 
    926931                name => "Winbond W83L771W/G", 
     
    40524057} 
    40534058 
     4059# Chip to detect: 0 = MAX6680/81, 1 = MAX6695/96 
     4060# Registers used: 
     4061#   0x03: Configuration 
     4062#   0x04: Conversion rate 
     4063#   0x12: Status2 
     4064#   0x16: Overtemperature 2 
     4065#   0xfe: Manufacturer ID 
     4066#   0xff: Chip ID / die revision 
     4067sub max6680_95_detect 
     4068{ 
     4069        my ($file, $addr, $chip) = @_; 
     4070        my $cid = i2c_smbus_read_byte_data($file, 0xff); 
     4071        my $conf = i2c_smbus_read_byte_data($file, 0x03); 
     4072        my $mid = i2c_smbus_read_byte_data($file, 0xfe, NO_CACHE); 
     4073        my $emerg = i2c_smbus_read_byte_data($file, 0x16, NO_CACHE); 
     4074        my $rate = i2c_smbus_read_byte_data($file, 0x04, NO_CACHE); 
     4075        my $emerg2 = i2c_smbus_read_byte_data($file, 0x16, NO_CACHE); 
     4076 
     4077        # Check common conditions 
     4078        return if $rate > 0x07; 
     4079        return if $mid != 0x4d;         # Not Maxim 
     4080        return if $cid != 0x01;         # None of the chips we are looking for 
     4081 
     4082        if ($chip == 0) { 
     4083                return if ($conf & 0x03) != 0; 
     4084                return 8 if $emerg != $emerg2;  # MAX6680/MAX6681 
     4085        } 
     4086        if ($chip == 1) { 
     4087                my $status2 = i2c_smbus_read_byte_data($file, 0x12); 
     4088 
     4089                return if ($conf & 0x10) != 0; 
     4090                return if ($status2 & 0x01) != 0; 
     4091                return 8 if $emerg == $emerg2;  # MAX6695/MAX6696 
     4092        } 
     4093        return; 
     4094} 
     4095 
    40544096# Chip to detect: 0 = LM90, 1 = LM89/LM99, 2 = LM86, 3 = ADM1032, 
    40554097#                 4 = MAX6654, 5 = ADT7461, 
    40564098#                 6 = MAX6646/MAX6647/MAX6648/MAX6649/MAX6692, 
    4057 #                 7 = MAX6680/MAX6681, 8 = W83L771W/G, 9 = TMP401, 10 = TMP411, 
     4099#                 8 = W83L771W/G, 9 = TMP401, 10 = TMP411, 
    40584100#                 11 = W83L771AWG/ASG, 12 = MAX6690 
    40594101# Registers used: 
     
    41154157                return if $mid != 0x4d;         # Maxim 
    41164158                return 8 if $cid == 0x59;       # MAX6648/MAX6692 
    4117         } 
    4118         if ($chip == 7) { 
    4119                 return if ($conf & 0x03) != 0; 
    4120                 return if $rate > 0x07; 
    4121                 return if $mid != 0x4d;         # Maxim 
    4122                 return 8 if $cid == 0x01;       # MAX6680/MAX6681 
    41234159        } 
    41244160        if ($chip == 8) {