50bf46509f
Updating the hysteresis value when updating the critical temperature limit was following the rule of 'least surprise'. However, it had the undesirable side effect of changing the hysteresis for all other attributes, which defeats the purpose of least surprise. In addition, it could result in invalid hysteresis values if the resulting hysteresis was too large. In such cases the resulting hysteresis ended up changed anyway, which again defeats the purpose. So drop that code and document the new behavior. Reviewed-by: Jean Delvare <jdelvare@suse.de> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
39 lines
1.6 KiB
Plaintext
39 lines
1.6 KiB
Plaintext
Kernel driver lm77
|
|
==================
|
|
|
|
Supported chips:
|
|
* National Semiconductor LM77
|
|
Prefix: 'lm77'
|
|
Addresses scanned: I2C 0x48 - 0x4b
|
|
Datasheet: Publicly available at the National Semiconductor website
|
|
http://www.national.com/
|
|
|
|
Author: Andras BALI <drewie@freemail.hu>
|
|
|
|
Description
|
|
-----------
|
|
|
|
The LM77 implements one temperature sensor. The temperature
|
|
sensor incorporates a band-gap type temperature sensor,
|
|
10-bit ADC, and a digital comparator with user-programmable upper
|
|
and lower limit values.
|
|
|
|
The LM77 implements 3 limits: low (temp1_min), high (temp1_max) and
|
|
critical (temp1_crit.) It also implements an hysteresis mechanism which
|
|
applies to all 3 limits. The relative difference is stored in a single
|
|
register on the chip, which means that the relative difference between
|
|
the limit and its hysteresis is always the same for all 3 limits.
|
|
|
|
This implementation detail implies the following:
|
|
* When setting a limit, its hysteresis will automatically follow, the
|
|
difference staying unchanged. For example, if the old critical limit
|
|
was 80 degrees C, and the hysteresis was 75 degrees C, and you change
|
|
the critical limit to 90 degrees C, then the hysteresis will
|
|
automatically change to 85 degrees C.
|
|
* All 3 hysteresis can't be set independently. We decided to make
|
|
temp1_crit_hyst writable, while temp1_min_hyst and temp1_max_hyst are
|
|
read-only. Setting temp1_crit_hyst writes the difference between
|
|
temp1_crit_hyst and temp1_crit into the chip, and the same relative
|
|
hysteresis applies automatically to the low and high limits.
|
|
* The limits should be set before the hysteresis.
|