[lm-sensors] [PATCH] hwmon: (it87) Add support for IT8781F, IT8782F, IT8783E/F
oss at extracloud.de
Mon Mar 26 18:08:35 CEST 2012
Am 24.03.2012 um 19:07 schrieb Guenter Roeck:
> On Sat, Mar 24, 2012 at 12:23:13PM -0400, Guenter Roeck wrote:
>> Hi Bjoern,
>> At 01:11 AM 3/24/2012, Björn Gerhart wrote:
>> [ ... ]
>>> label temp3 "CPU T."
>>> compute temp3 100+@,-1*(100-@)
>> Is it possible that this is due to a bad sensor type configuration ?
>> Thermal diodes have a "current mode" and a
>> "voltage mode", and if misconfigured (or
>> miswired) the reported temperature difference is
>> just about in that range. Difference in wiring,
>> if I understand it correctly, is that the + pin
>> is pulled high with a resistor in voltage mode,
>> which is not the case in current mode.
As I have learned this morning from our hardware developers, neither "current" nor "voltage" mode is used with temp3, but digital "PECI" mode. In this case, temp3's value describes the _difference_ between the actual temperature and the CPU's maximum temperature (where the CPU will begin to throttle).
So actually, I think the static sensors.conf is the wrong place to specify this value, because different CPU models have different maximum temperatures. Therefore, dealing with 100 in our own sensors.conf (as implemented by now) is just a very rough inexact value.
Afaik, only temp3 at IT8783 can be used in PECI mode, and in general other ITE sensor chip models can be driven in PECI mode also.
So, how could the PECI mode be handled on the driver side?
Detecting if it8783 is in PECI mode:
- Index register 0x2C, bit 6: set to 1 (Enable PECI)
- temp3 value is negative until CPU is not throttling
Where to get current CPU's maximum temperature from:
- MSR 0x1A2, bit23...bit 16
If actually it is the job of the module to do such calculations, I would offer to create an it87 patch for IT8783 fixing this - analog to an existing module with a similar behavior (if you know one).
>> Problem with the wrong reading is that it affects
>> the sensor's dynamic range. You don't have much
>> dynamic range left if the reading is off by 100 degrees.
> Hi again,
> you might want to check registers 0x56, 0x57, and 0x59.
> It might be better to adjust temperature values with those registers
> than with sensors.conf, to retain the sensor's dynamic range.
Thanks for your attentive review.
More information about the lm-sensors