178 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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 <khali@linux-fr.org>
 | 
						|
 | 
						|
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 1 to the sysfs chassis_clear 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.
 |