diff --git a/CHANGES b/CHANGES index 7a70a235..0d41f6b6 100644 --- a/CHANGES +++ b/CHANGES @@ -78,6 +78,7 @@ SVN-HEAD Fix detection of older DS1621 Add nNidia nForce MCP67, MCP73, MCP79 SMBus support Exclude auto-loaded PCI and USB drivers from list (#2368) + Special case probing i2c address 0x73 (to not crash FSC ICs) sensors-detect-stat.pl: Delete (functionality merged into sensors-detect) sysconfig-lm_sensors-convert: Sample config file conversion script (#2246) diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect index 6f82b6b5..1c39e498 100755 --- a/prog/detect/sensors-detect +++ b/prog/detect/sensors-detect @@ -2516,6 +2516,7 @@ use constant SMBUS_WORD_DATA => 3; use constant I2C_FUNC_SMBUS_QUICK => 0x00010000; use constant I2C_FUNC_SMBUS_READ_BYTE => 0x00020000; +use constant I2C_FUNC_SMBUS_READ_BYTE_DATA => 0x00080000; # Get the i2c adapter's functionalities # $_[0]: Reference to an opened filehandle @@ -2639,6 +2640,13 @@ sub i2c_probe # protection address. return 0 unless ($funcs & I2C_FUNC_SMBUS_READ_BYTE); return i2c_smbus_access($file, SMBUS_READ, 0, SMBUS_BYTE, []); + } elsif ($addr == 0x73) { + # Special case for FSC chips, as at least the Syleus locks + # up with our regular probe code. Note that to our current + # knowledge only FSC chips live on this address, and for them + # this probe method is safe. + return 0 unless ($funcs & I2C_FUNC_SMBUS_READ_BYTE_DATA); + return i2c_smbus_access($file, SMBUS_READ, 0, SMBUS_BYTE_DATA, []); } else { return 0 unless ($funcs & I2C_FUNC_SMBUS_QUICK); return i2c_smbus_access($file, SMBUS_WRITE, 0, SMBUS_QUICK, []);