mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
6.9 KiB
201 lines
6.9 KiB
Kernel driver adm9240 |
|
===================== |
|
|
|
Supported chips: |
|
|
|
* Analog Devices ADM9240 |
|
|
|
Prefix: 'adm9240' |
|
|
|
Addresses scanned: I2C 0x2c - 0x2f |
|
|
|
Datasheet: Publicly available at the Analog Devices website |
|
|
|
http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf |
|
|
|
* Dallas Semiconductor DS1780 |
|
|
|
Prefix: 'ds1780' |
|
|
|
Addresses scanned: I2C 0x2c - 0x2f |
|
|
|
Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website |
|
|
|
http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf |
|
|
|
* National Semiconductor LM81 |
|
|
|
Prefix: 'lm81' |
|
|
|
Addresses scanned: I2C 0x2c - 0x2f |
|
|
|
Datasheet: Publicly available at the National Semiconductor website |
|
|
|
http://www.national.com/ds.cgi/LM/LM81.pdf |
|
|
|
Authors: |
|
- Frodo Looijaard <[email protected]>, |
|
- Philip Edelbrock <[email protected]>, |
|
- Michiel Rook <[email protected]>, |
|
- Grant Coady <[email protected]> with guidance |
|
from Jean Delvare <[email protected]> |
|
|
|
Interface |
|
--------- |
|
The I2C addresses listed above assume BIOS has not changed the |
|
chip MSB 5-bit address. Each chip reports a unique manufacturer |
|
identification code as well as the chip revision/stepping level. |
|
|
|
Description |
|
----------- |
|
[From ADM9240] The ADM9240 is a complete system hardware monitor for |
|
microprocessor-based systems, providing measurement and limit comparison |
|
of up to four power supplies and two processor core voltages, plus |
|
temperature, two fan speeds and chassis intrusion. Measured values can |
|
be read out via an I2C-compatible serial System Management Bus, and values |
|
for limit comparisons can be programmed in over the same serial bus. The |
|
high speed successive approximation ADC allows frequent sampling of all |
|
analog channels to ensure a fast interrupt response to any out-of-limit |
|
measurement. |
|
|
|
The ADM9240, DS1780 and LM81 are register compatible, the following |
|
details are common to the three chips. Chip differences are described |
|
after this section. |
|
|
|
|
|
Measurements |
|
------------ |
|
The measurement cycle |
|
|
|
The adm9240 driver will take a measurement reading no faster than once |
|
each two seconds. User-space may read sysfs interface faster than the |
|
measurement update rate and will receive cached data from the most |
|
recent measurement. |
|
|
|
ADM9240 has a very fast 320us temperature and voltage measurement cycle |
|
with independent fan speed measurement cycles counting alternating rising |
|
edges of the fan tacho inputs. |
|
|
|
DS1780 measurement cycle is about once per second including fan speed. |
|
|
|
LM81 measurement cycle is about once per 400ms including fan speed. |
|
The LM81 12-bit extended temperature measurement mode is not supported. |
|
|
|
Temperature |
|
----------- |
|
On chip temperature is reported as degrees Celsius as 9-bit signed data |
|
with resolution of 0.5 degrees Celsius. High and low temperature limits |
|
are 8-bit signed data with resolution of one degree Celsius. |
|
|
|
Temperature alarm is asserted once the temperature exceeds the high limit, |
|
and is cleared when the temperature falls below the temp1_max_hyst value. |
|
|
|
Fan Speed |
|
--------- |
|
Two fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz |
|
clock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by: |
|
|
|
rpm = (22500 * 60) / (count * divider) |
|
|
|
Automatic fan clock divider |
|
|
|
* User sets 0 to fan_min limit |
|
|
|
- low speed alarm is disabled |
|
- fan clock divider not changed |
|
- auto fan clock adjuster enabled for valid fan speed reading |
|
|
|
* User sets fan_min limit too low |
|
|
|
- low speed alarm is enabled |
|
- fan clock divider set to max |
|
- fan_min set to register value 254 which corresponds |
|
to 664 rpm on adm9240 |
|
- low speed alarm will be asserted if fan speed is |
|
less than minimum measurable speed |
|
- auto fan clock adjuster disabled |
|
|
|
* User sets reasonable fan speed |
|
|
|
- low speed alarm is enabled |
|
- fan clock divider set to suit fan_min |
|
- auto fan clock adjuster enabled: adjusts fan_min |
|
|
|
* User sets unreasonably high low fan speed limit |
|
|
|
- resolution of the low speed limit may be reduced |
|
- alarm will be asserted |
|
- auto fan clock adjuster enabled: adjusts fan_min |
|
|
|
* fan speed may be displayed as zero until the auto fan clock divider |
|
adjuster brings fan speed clock divider back into chip measurement |
|
range, this will occur within a few measurement cycles. |
|
|
|
Analog Output |
|
------------- |
|
An analog output provides a 0 to 1.25 volt signal intended for an external |
|
fan speed amplifier circuit. The analog output is set to maximum value on |
|
power up or reset. This doesn't do much on the test Intel SE440BX-2. |
|
|
|
Voltage Monitor |
|
|
|
^^^^^^^^^^^^^^^ |
|
|
|
Voltage (IN) measurement is internally scaled: |
|
|
|
=== =========== =========== ========= ========== |
|
nr label nominal maximum resolution |
|
mV mV mV |
|
=== =========== =========== ========= ========== |
|
0 +2.5V 2500 3320 13.0 |
|
1 Vccp1 2700 3600 14.1 |
|
2 +3.3V 3300 4380 17.2 |
|
3 +5V 5000 6640 26.0 |
|
4 +12V 12000 15940 62.5 |
|
5 Vccp2 2700 3600 14.1 |
|
=== =========== =========== ========= ========== |
|
|
|
The reading is an unsigned 8-bit value, nominal voltage measurement is |
|
represented by a reading of 192, being 3/4 of the measurement range. |
|
|
|
An alarm is asserted for any voltage going below or above the set limits. |
|
|
|
The driver reports and accepts voltage limits scaled to the above table. |
|
|
|
VID Monitor |
|
----------- |
|
The chip has five inputs to read the 5-bit VID and reports the mV value |
|
based on detected CPU type. |
|
|
|
Chassis Intrusion |
|
----------------- |
|
An alarm is asserted when the CI pin goes active high. The ADM9240 |
|
Datasheet has an example of an external temperature sensor driving |
|
this pin. On an Intel SE440BX-2 the Chassis Intrusion header is |
|
connected to a normally open switch. |
|
|
|
The ADM9240 provides an internal open drain on this line, and may output |
|
a 20 ms active low pulse to reset an external Chassis Intrusion latch. |
|
|
|
Clear the CI latch by writing value 0 to the sysfs intrusion0_alarm file. |
|
|
|
Alarm flags reported as 16-bit word |
|
|
|
=== ============= ========================== |
|
bit label comment |
|
=== ============= ========================== |
|
0 +2.5 V_Error high or low limit exceeded |
|
1 VCCP_Error high or low limit exceeded |
|
2 +3.3 V_Error high or low limit exceeded |
|
3 +5 V_Error high or low limit exceeded |
|
4 Temp_Error temperature error |
|
6 FAN1_Error fan low limit exceeded |
|
7 FAN2_Error fan low limit exceeded |
|
8 +12 V_Error high or low limit exceeded |
|
9 VCCP2_Error high or low limit exceeded |
|
12 Chassis_Error CI pin went high |
|
=== ============= ========================== |
|
|
|
Remaining bits are reserved and thus undefined. It is important to note |
|
that alarm bits may be cleared on read, user-space may latch alarms and |
|
provide the end-user with a method to clear alarm memory.
|
|
|