Hi Guenter, On Wed, 8 Sep 2010 13:03:57 -0700, Guenter Roeck wrote: > This patch adds support for max6695/96 to sensors-detect. > --- > v2: > Fix and improve max6680/81 vs. max6695/96 detection code > Remove chip==7 code from lm90_detect > > --- > Index: prog/detect/sensors-detect > =================================================================== > --- prog/detect/sensors-detect (revision 5857) > +++ prog/detect/sensors-detect (working copy) > @@ -921,8 +921,13 @@ > name => "Maxim MAX6680/MAX6681", > driver => "lm90", > 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", > driver => "to-be-written", > i2c_addrs => [0x4c], > @@ -4051,10 +4056,47 @@ > 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, > # 4 = MAX6654, 5 = ADT7461, > # 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 > # Registers used: > # 0x03: Configuration > @@ -4115,12 +4157,6 @@ > return if $mid != 0x4d; # Maxim > 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) { > return if ($conf & 0x2a) != 0; > return if $rate > 0x09; Looks good, please commit! -- Jean Delvare _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors