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