Kernel driver thmc50

Supported chips:

Author: Krzysztof Helt <krzysztof.h1@wp.pl>

This driver was derived from the 2.4 kernel thmc50.c source file.

Credits:

thmc50.c (2.4 kernel):

Module Parameters

  • adm1022_temp3: short array

    List of adapter,address pairs to force chips into ADM1022 mode withsecond remote temperature. This does not work for original THMC50 chips.

Description

The THMC50 implements: an internal temperature sensor, support for anexternal diode-type temperature sensor (compatible w/ the diode sensor insidemany processors), and a controllable fan/analog_out DAC. For the temperaturesensors, limits can be set through the appropriate Overtemperature Shutdownregister and Hysteresis register. Each value can be set and read to half-degreeaccuracy. An alarm is issued (usually to a connected LM78) when thetemperature gets higher then the Overtemperature Shutdown value; it stays onuntil the temperature falls below the Hysteresis value. All temperatures are indegrees Celsius, and are guaranteed within a range of -55 to +125 degrees.

The THMC50 only updates its values each 1.5 seconds; reading it more oftenwill do no harm, but will return ‘old’ values.

The THMC50 is usually used in combination with LM78-like chips, to measurethe temperature of the processor(s).

The ADM1022 works the same as THMC50 but it is faster (5 Hz instead of1 Hz for THMC50). It can be also put in a new mode to handle additionalremote temperature sensor. The driver use the mode set by BIOS by default.

In case the BIOS is broken and the mode is set incorrectly, you can forcethe mode with additional remote temperature with adm1022_temp3 parameter.A typical symptom of wrong setting is a fan forced to full speed.

Driver Features

The driver provides up to three temperatures:

temp1
  • internal

temp2
  • remote

temp3
  • 2nd remote only for ADM1022

pwm1
  • fan speed (0 = stop, 255 = full)

pwm1_mode
  • always 0 (DC mode)

The value of 0 for pwm1 also forces FAN_OFF signal from the chip,so it stops fans even if the value 0 into the ANALOG_OUT register does not.

The driver was tested on Compaq AP550 with two ADM1022 chips (one worksin the temp3 mode), five temperature readings and two fans.