123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- 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 <frodol@dds.nl>,
- Philip Edelbrock <phil@netroedge.com>,
- Michiel Rook <michiel@grendelproject.nl>,
- Grant Coady <gcoady.lk@gmail.com> with guidance
- from Jean Delvare <jdelvare@suse.de>
- 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.
|