 0de2b24480
			
		
	
	
	0de2b24480
	
	
	
		
			
			We have a standard intrusion detection interface now, drivers should implement it. I've left the old interface in place for the time being, with a deprecation warning, it will be removed later. Signed-off-by: Jean Delvare <khali@linux-fr.org> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
		
			
				
	
	
		
			177 lines
		
	
	
	
		
			6.6 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
	
		
			6.6 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 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 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.
 |