1Kernel driver adm9240 2===================== 3 4Supported chips: 5 * Analog Devices ADM9240 6 Prefix: 'adm9240' 7 Addresses scanned: I2C 0x2c - 0x2f 8 Datasheet: Publicly available at the Analog Devices website 9 http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf 10 11 * Dallas Semiconductor DS1780 12 Prefix: 'ds1780' 13 Addresses scanned: I2C 0x2c - 0x2f 14 Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website 15 http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf 16 17 * National Semiconductor LM81 18 Prefix: 'lm81' 19 Addresses scanned: I2C 0x2c - 0x2f 20 Datasheet: Publicly available at the National Semiconductor website 21 http://www.national.com/ds.cgi/LM/LM81.pdf 22 23Authors: 24 Frodo Looijaard <frodol@dds.nl>, 25 Philip Edelbrock <phil@netroedge.com>, 26 Michiel Rook <michiel@grendelproject.nl>, 27 Grant Coady <gcoady.lk@gmail.com> with guidance 28 from Jean Delvare <jdelvare@suse.de> 29 30Interface 31--------- 32The I2C addresses listed above assume BIOS has not changed the 33chip MSB 5-bit address. Each chip reports a unique manufacturer 34identification code as well as the chip revision/stepping level. 35 36Description 37----------- 38[From ADM9240] The ADM9240 is a complete system hardware monitor for 39microprocessor-based systems, providing measurement and limit comparison 40of up to four power supplies and two processor core voltages, plus 41temperature, two fan speeds and chassis intrusion. Measured values can 42be read out via an I2C-compatible serial System Management Bus, and values 43for limit comparisons can be programmed in over the same serial bus. The 44high speed successive approximation ADC allows frequent sampling of all 45analog channels to ensure a fast interrupt response to any out-of-limit 46measurement. 47 48The ADM9240, DS1780 and LM81 are register compatible, the following 49details are common to the three chips. Chip differences are described 50after this section. 51 52 53Measurements 54------------ 55The measurement cycle 56 57The adm9240 driver will take a measurement reading no faster than once 58each two seconds. User-space may read sysfs interface faster than the 59measurement update rate and will receive cached data from the most 60recent measurement. 61 62ADM9240 has a very fast 320us temperature and voltage measurement cycle 63with independent fan speed measurement cycles counting alternating rising 64edges of the fan tacho inputs. 65 66DS1780 measurement cycle is about once per second including fan speed. 67 68LM81 measurement cycle is about once per 400ms including fan speed. 69The LM81 12-bit extended temperature measurement mode is not supported. 70 71Temperature 72----------- 73On chip temperature is reported as degrees Celsius as 9-bit signed data 74with resolution of 0.5 degrees Celsius. High and low temperature limits 75are 8-bit signed data with resolution of one degree Celsius. 76 77Temperature alarm is asserted once the temperature exceeds the high limit, 78and is cleared when the temperature falls below the temp1_max_hyst value. 79 80Fan Speed 81--------- 82Two fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz 83clock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by: 84 85rpm = (22500 * 60) / (count * divider) 86 87Automatic fan clock divider 88 89 * User sets 0 to fan_min limit 90 - low speed alarm is disabled 91 - fan clock divider not changed 92 - auto fan clock adjuster enabled for valid fan speed reading 93 94 * User sets fan_min limit too low 95 - low speed alarm is enabled 96 - fan clock divider set to max 97 - fan_min set to register value 254 which corresponds 98 to 664 rpm on adm9240 99 - low speed alarm will be asserted if fan speed is 100 less than minimum measurable speed 101 - auto fan clock adjuster disabled 102 103 * User sets reasonable fan speed 104 - low speed alarm is enabled 105 - fan clock divider set to suit fan_min 106 - auto fan clock adjuster enabled: adjusts fan_min 107 108 * User sets unreasonably high low fan speed limit 109 - resolution of the low speed limit may be reduced 110 - alarm will be asserted 111 - auto fan clock adjuster enabled: adjusts fan_min 112 113 * fan speed may be displayed as zero until the auto fan clock divider 114 adjuster brings fan speed clock divider back into chip measurement 115 range, this will occur within a few measurement cycles. 116 117Analog Output 118------------- 119An analog output provides a 0 to 1.25 volt signal intended for an external 120fan speed amplifier circuit. The analog output is set to maximum value on 121power up or reset. This doesn't do much on the test Intel SE440BX-2. 122 123Voltage Monitor 124 125Voltage (IN) measurement is internally scaled: 126 127 nr label nominal maximum resolution 128 mV mV mV 129 0 +2.5V 2500 3320 13.0 130 1 Vccp1 2700 3600 14.1 131 2 +3.3V 3300 4380 17.2 132 3 +5V 5000 6640 26.0 133 4 +12V 12000 15940 62.5 134 5 Vccp2 2700 3600 14.1 135 136The reading is an unsigned 8-bit value, nominal voltage measurement is 137represented by a reading of 192, being 3/4 of the measurement range. 138 139An alarm is asserted for any voltage going below or above the set limits. 140 141The driver reports and accepts voltage limits scaled to the above table. 142 143VID Monitor 144----------- 145The chip has five inputs to read the 5-bit VID and reports the mV value 146based on detected CPU type. 147 148Chassis Intrusion 149----------------- 150An alarm is asserted when the CI pin goes active high. The ADM9240 151Datasheet has an example of an external temperature sensor driving 152this pin. On an Intel SE440BX-2 the Chassis Intrusion header is 153connected to a normally open switch. 154 155The ADM9240 provides an internal open drain on this line, and may output 156a 20 ms active low pulse to reset an external Chassis Intrusion latch. 157 158Clear the CI latch by writing value 0 to the sysfs intrusion0_alarm file. 159 160Alarm flags reported as 16-bit word 161 162 bit label comment 163 --- ------------- -------------------------- 164 0 +2.5 V_Error high or low limit exceeded 165 1 VCCP_Error high or low limit exceeded 166 2 +3.3 V_Error high or low limit exceeded 167 3 +5 V_Error high or low limit exceeded 168 4 Temp_Error temperature error 169 6 FAN1_Error fan low limit exceeded 170 7 FAN2_Error fan low limit exceeded 171 8 +12 V_Error high or low limit exceeded 172 9 VCCP2_Error high or low limit exceeded 173 12 Chassis_Error CI pin went high 174 175Remaining bits are reserved and thus undefined. It is important to note 176that alarm bits may be cleared on read, user-space may latch alarms and 177provide the end-user with a method to clear alarm memory. 178