• Chris Verges's avatar
    hwmon: (lm73} Detect and report i2c bus errors · 0602934f
    Chris Verges authored
    If an LM73 device does not exist on an I2C bus, attempts to communicate
    with the device result in an error code returned from the i2c read/write
    functions.  The current lm73 driver casts that return value from a s32
    type to a s16 type, then converts it to a temperature in celsius.
    Because negative temperatures are valid, it is difficult to distinguish
    between an error code printed to the response buffer and a negative
    temperature recorded by the sensor.
    
    The solution is to evaluate the return value from the i2c functions
    before performing any temperature calculations.  If the i2c function did
    not succeed, the error code should be passed back through the virtual
    file system layer instead of being printed into the response buffer.
    
    Before:
    
       $ cat /sys/class/hwmon/hwmon0/device/temp1_input
       -46
    
    After:
    
       $ cat /sys/class/hwmon/hwmon0/device/temp1_input
       cat: read error: No such device or address
    Signed-off-by: default avatarChris Verges <kg4ysn@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    0602934f
lm73.c 5.19 KB