17ebd8b66SMauro Carvalho ChehabKernel driver adm9240
27ebd8b66SMauro Carvalho Chehab=====================
37ebd8b66SMauro Carvalho Chehab
47ebd8b66SMauro Carvalho ChehabSupported chips:
57ebd8b66SMauro Carvalho Chehab
67ebd8b66SMauro Carvalho Chehab  * Analog Devices ADM9240
77ebd8b66SMauro Carvalho Chehab
87ebd8b66SMauro Carvalho Chehab    Prefix: 'adm9240'
97ebd8b66SMauro Carvalho Chehab
107ebd8b66SMauro Carvalho Chehab    Addresses scanned: I2C 0x2c - 0x2f
117ebd8b66SMauro Carvalho Chehab
127ebd8b66SMauro Carvalho Chehab    Datasheet: Publicly available at the Analog Devices website
137ebd8b66SMauro Carvalho Chehab
147ebd8b66SMauro Carvalho Chehab	http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf
157ebd8b66SMauro Carvalho Chehab
167ebd8b66SMauro Carvalho Chehab  * Dallas Semiconductor DS1780
177ebd8b66SMauro Carvalho Chehab
187ebd8b66SMauro Carvalho Chehab    Prefix: 'ds1780'
197ebd8b66SMauro Carvalho Chehab
207ebd8b66SMauro Carvalho Chehab    Addresses scanned: I2C 0x2c - 0x2f
217ebd8b66SMauro Carvalho Chehab
227ebd8b66SMauro Carvalho Chehab    Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website
237ebd8b66SMauro Carvalho Chehab
247ebd8b66SMauro Carvalho Chehab	http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf
257ebd8b66SMauro Carvalho Chehab
267ebd8b66SMauro Carvalho Chehab  * National Semiconductor LM81
277ebd8b66SMauro Carvalho Chehab
287ebd8b66SMauro Carvalho Chehab    Prefix: 'lm81'
297ebd8b66SMauro Carvalho Chehab
307ebd8b66SMauro Carvalho Chehab    Addresses scanned: I2C 0x2c - 0x2f
317ebd8b66SMauro Carvalho Chehab
327ebd8b66SMauro Carvalho Chehab    Datasheet: Publicly available at the National Semiconductor website
337ebd8b66SMauro Carvalho Chehab
347ebd8b66SMauro Carvalho Chehab	http://www.national.com/ds.cgi/LM/LM81.pdf
357ebd8b66SMauro Carvalho Chehab
367ebd8b66SMauro Carvalho ChehabAuthors:
377ebd8b66SMauro Carvalho Chehab    - Frodo Looijaard <frodol@dds.nl>,
387ebd8b66SMauro Carvalho Chehab    - Philip Edelbrock <phil@netroedge.com>,
397ebd8b66SMauro Carvalho Chehab    - Michiel Rook <michiel@grendelproject.nl>,
407ebd8b66SMauro Carvalho Chehab    - Grant Coady <gcoady.lk@gmail.com> with guidance
417ebd8b66SMauro Carvalho Chehab      from Jean Delvare <jdelvare@suse.de>
427ebd8b66SMauro Carvalho Chehab
437ebd8b66SMauro Carvalho ChehabInterface
447ebd8b66SMauro Carvalho Chehab---------
457ebd8b66SMauro Carvalho ChehabThe I2C addresses listed above assume BIOS has not changed the
467ebd8b66SMauro Carvalho Chehabchip MSB 5-bit address. Each chip reports a unique manufacturer
477ebd8b66SMauro Carvalho Chehabidentification code as well as the chip revision/stepping level.
487ebd8b66SMauro Carvalho Chehab
497ebd8b66SMauro Carvalho ChehabDescription
507ebd8b66SMauro Carvalho Chehab-----------
517ebd8b66SMauro Carvalho Chehab[From ADM9240] The ADM9240 is a complete system hardware monitor for
527ebd8b66SMauro Carvalho Chehabmicroprocessor-based systems, providing measurement and limit comparison
537ebd8b66SMauro Carvalho Chehabof up to four power supplies and two processor core voltages, plus
547ebd8b66SMauro Carvalho Chehabtemperature, two fan speeds and chassis intrusion. Measured values can
557ebd8b66SMauro Carvalho Chehabbe read out via an I2C-compatible serial System Management Bus, and values
567ebd8b66SMauro Carvalho Chehabfor limit comparisons can be programmed in over the same serial bus. The
577ebd8b66SMauro Carvalho Chehabhigh speed successive approximation ADC allows frequent sampling of all
587ebd8b66SMauro Carvalho Chehabanalog channels to ensure a fast interrupt response to any out-of-limit
597ebd8b66SMauro Carvalho Chehabmeasurement.
607ebd8b66SMauro Carvalho Chehab
617ebd8b66SMauro Carvalho ChehabThe ADM9240, DS1780 and LM81 are register compatible, the following
627ebd8b66SMauro Carvalho Chehabdetails are common to the three chips. Chip differences are described
637ebd8b66SMauro Carvalho Chehabafter this section.
647ebd8b66SMauro Carvalho Chehab
657ebd8b66SMauro Carvalho Chehab
667ebd8b66SMauro Carvalho ChehabMeasurements
677ebd8b66SMauro Carvalho Chehab------------
687ebd8b66SMauro Carvalho ChehabThe measurement cycle
697ebd8b66SMauro Carvalho Chehab
707ebd8b66SMauro Carvalho ChehabThe adm9240 driver will take a measurement reading no faster than once
717ebd8b66SMauro Carvalho Chehabeach two seconds. User-space may read sysfs interface faster than the
727ebd8b66SMauro Carvalho Chehabmeasurement update rate and will receive cached data from the most
737ebd8b66SMauro Carvalho Chehabrecent measurement.
747ebd8b66SMauro Carvalho Chehab
757ebd8b66SMauro Carvalho ChehabADM9240 has a very fast 320us temperature and voltage measurement cycle
767ebd8b66SMauro Carvalho Chehabwith independent fan speed measurement cycles counting alternating rising
777ebd8b66SMauro Carvalho Chehabedges of the fan tacho inputs.
787ebd8b66SMauro Carvalho Chehab
797ebd8b66SMauro Carvalho ChehabDS1780 measurement cycle is about once per second including fan speed.
807ebd8b66SMauro Carvalho Chehab
817ebd8b66SMauro Carvalho ChehabLM81 measurement cycle is about once per 400ms including fan speed.
827ebd8b66SMauro Carvalho ChehabThe LM81 12-bit extended temperature measurement mode is not supported.
837ebd8b66SMauro Carvalho Chehab
847ebd8b66SMauro Carvalho ChehabTemperature
857ebd8b66SMauro Carvalho Chehab-----------
867ebd8b66SMauro Carvalho ChehabOn chip temperature is reported as degrees Celsius as 9-bit signed data
877ebd8b66SMauro Carvalho Chehabwith resolution of 0.5 degrees Celsius. High and low temperature limits
887ebd8b66SMauro Carvalho Chehabare 8-bit signed data with resolution of one degree Celsius.
897ebd8b66SMauro Carvalho Chehab
907ebd8b66SMauro Carvalho ChehabTemperature alarm is asserted once the temperature exceeds the high limit,
917ebd8b66SMauro Carvalho Chehaband is cleared when the temperature falls below the temp1_max_hyst value.
927ebd8b66SMauro Carvalho Chehab
937ebd8b66SMauro Carvalho ChehabFan Speed
947ebd8b66SMauro Carvalho Chehab---------
957ebd8b66SMauro Carvalho ChehabTwo fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz
967ebd8b66SMauro Carvalho Chehabclock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by:
977ebd8b66SMauro Carvalho Chehab
987ebd8b66SMauro Carvalho Chehabrpm = (22500 * 60) / (count * divider)
997ebd8b66SMauro Carvalho Chehab
1007ebd8b66SMauro Carvalho ChehabAutomatic fan clock divider
1017ebd8b66SMauro Carvalho Chehab
1027ebd8b66SMauro Carvalho Chehab  * User sets 0 to fan_min limit
1037ebd8b66SMauro Carvalho Chehab
1047ebd8b66SMauro Carvalho Chehab    - low speed alarm is disabled
1057ebd8b66SMauro Carvalho Chehab    - fan clock divider not changed
1067ebd8b66SMauro Carvalho Chehab    - auto fan clock adjuster enabled for valid fan speed reading
1077ebd8b66SMauro Carvalho Chehab
1087ebd8b66SMauro Carvalho Chehab  * User sets fan_min limit too low
1097ebd8b66SMauro Carvalho Chehab
1107ebd8b66SMauro Carvalho Chehab    - low speed alarm is enabled
1117ebd8b66SMauro Carvalho Chehab    - fan clock divider set to max
1127ebd8b66SMauro Carvalho Chehab    - fan_min set to register value 254 which corresponds
1137ebd8b66SMauro Carvalho Chehab      to 664 rpm on adm9240
1147ebd8b66SMauro Carvalho Chehab    - low speed alarm will be asserted if fan speed is
1157ebd8b66SMauro Carvalho Chehab      less than minimum measurable speed
1167ebd8b66SMauro Carvalho Chehab    - auto fan clock adjuster disabled
1177ebd8b66SMauro Carvalho Chehab
1187ebd8b66SMauro Carvalho Chehab  * User sets reasonable fan speed
1197ebd8b66SMauro Carvalho Chehab
1207ebd8b66SMauro Carvalho Chehab    - low speed alarm is enabled
1217ebd8b66SMauro Carvalho Chehab    - fan clock divider set to suit fan_min
1227ebd8b66SMauro Carvalho Chehab    - auto fan clock adjuster enabled: adjusts fan_min
1237ebd8b66SMauro Carvalho Chehab
1247ebd8b66SMauro Carvalho Chehab  * User sets unreasonably high low fan speed limit
1257ebd8b66SMauro Carvalho Chehab
1267ebd8b66SMauro Carvalho Chehab    - resolution of the low speed limit may be reduced
1277ebd8b66SMauro Carvalho Chehab    - alarm will be asserted
1287ebd8b66SMauro Carvalho Chehab    - auto fan clock adjuster enabled: adjusts fan_min
1297ebd8b66SMauro Carvalho Chehab
1307ebd8b66SMauro Carvalho Chehab  * fan speed may be displayed as zero until the auto fan clock divider
1317ebd8b66SMauro Carvalho Chehab    adjuster brings fan speed clock divider back into chip measurement
1327ebd8b66SMauro Carvalho Chehab    range, this will occur within a few measurement cycles.
1337ebd8b66SMauro Carvalho Chehab
1347ebd8b66SMauro Carvalho ChehabAnalog Output
1357ebd8b66SMauro Carvalho Chehab-------------
1367ebd8b66SMauro Carvalho ChehabAn analog output provides a 0 to 1.25 volt signal intended for an external
1377ebd8b66SMauro Carvalho Chehabfan speed amplifier circuit. The analog output is set to maximum value on
1387ebd8b66SMauro Carvalho Chehabpower up or reset. This doesn't do much on the test Intel SE440BX-2.
1397ebd8b66SMauro Carvalho Chehab
1407ebd8b66SMauro Carvalho ChehabVoltage Monitor
1417ebd8b66SMauro Carvalho Chehab
1427ebd8b66SMauro Carvalho Chehab^^^^^^^^^^^^^^^
1437ebd8b66SMauro Carvalho Chehab
1447ebd8b66SMauro Carvalho ChehabVoltage (IN) measurement is internally scaled:
1457ebd8b66SMauro Carvalho Chehab
1467ebd8b66SMauro Carvalho Chehab    === =========== =========== ========= ==========
1477ebd8b66SMauro Carvalho Chehab    nr  label       nominal     maximum   resolution
1487ebd8b66SMauro Carvalho Chehab		      mV          mV         mV
1497ebd8b66SMauro Carvalho Chehab    === =========== =========== ========= ==========
1507ebd8b66SMauro Carvalho Chehab    0   +2.5V        2500        3320       13.0
1517ebd8b66SMauro Carvalho Chehab    1   Vccp1        2700        3600       14.1
1527ebd8b66SMauro Carvalho Chehab    2   +3.3V        3300        4380       17.2
1537ebd8b66SMauro Carvalho Chehab    3     +5V        5000        6640       26.0
1547ebd8b66SMauro Carvalho Chehab    4    +12V       12000       15940       62.5
1557ebd8b66SMauro Carvalho Chehab    5   Vccp2        2700        3600       14.1
1567ebd8b66SMauro Carvalho Chehab    === =========== =========== ========= ==========
1577ebd8b66SMauro Carvalho Chehab
1587ebd8b66SMauro Carvalho ChehabThe reading is an unsigned 8-bit value, nominal voltage measurement is
1597ebd8b66SMauro Carvalho Chehabrepresented by a reading of 192, being 3/4 of the measurement range.
1607ebd8b66SMauro Carvalho Chehab
1617ebd8b66SMauro Carvalho ChehabAn alarm is asserted for any voltage going below or above the set limits.
1627ebd8b66SMauro Carvalho Chehab
1637ebd8b66SMauro Carvalho ChehabThe driver reports and accepts voltage limits scaled to the above table.
1647ebd8b66SMauro Carvalho Chehab
1657ebd8b66SMauro Carvalho ChehabVID Monitor
1667ebd8b66SMauro Carvalho Chehab-----------
1677ebd8b66SMauro Carvalho ChehabThe chip has five inputs to read the 5-bit VID and reports the mV value
1687ebd8b66SMauro Carvalho Chehabbased on detected CPU type.
1697ebd8b66SMauro Carvalho Chehab
1707ebd8b66SMauro Carvalho ChehabChassis Intrusion
1717ebd8b66SMauro Carvalho Chehab-----------------
1727ebd8b66SMauro Carvalho ChehabAn alarm is asserted when the CI pin goes active high. The ADM9240
1737ebd8b66SMauro Carvalho ChehabDatasheet has an example of an external temperature sensor driving
1747ebd8b66SMauro Carvalho Chehabthis pin. On an Intel SE440BX-2 the Chassis Intrusion header is
1757ebd8b66SMauro Carvalho Chehabconnected to a normally open switch.
1767ebd8b66SMauro Carvalho Chehab
1777ebd8b66SMauro Carvalho ChehabThe ADM9240 provides an internal open drain on this line, and may output
1787ebd8b66SMauro Carvalho Chehaba 20 ms active low pulse to reset an external Chassis Intrusion latch.
1797ebd8b66SMauro Carvalho Chehab
1807ebd8b66SMauro Carvalho ChehabClear the CI latch by writing value 0 to the sysfs intrusion0_alarm file.
1817ebd8b66SMauro Carvalho Chehab
1827ebd8b66SMauro Carvalho ChehabAlarm flags reported as 16-bit word
1837ebd8b66SMauro Carvalho Chehab
1847ebd8b66SMauro Carvalho Chehab    ===     =============       ==========================
1857ebd8b66SMauro Carvalho Chehab    bit     label               comment
1867ebd8b66SMauro Carvalho Chehab    ===     =============       ==========================
1877ebd8b66SMauro Carvalho Chehab     0      +2.5 V_Error        high or low limit exceeded
1887ebd8b66SMauro Carvalho Chehab     1      VCCP_Error          high or low limit exceeded
1897ebd8b66SMauro Carvalho Chehab     2      +3.3 V_Error        high or low limit exceeded
1907ebd8b66SMauro Carvalho Chehab     3      +5 V_Error          high or low limit exceeded
1917ebd8b66SMauro Carvalho Chehab     4      Temp_Error          temperature error
1927ebd8b66SMauro Carvalho Chehab     6      FAN1_Error          fan low limit exceeded
1937ebd8b66SMauro Carvalho Chehab     7      FAN2_Error          fan low limit exceeded
1947ebd8b66SMauro Carvalho Chehab     8      +12 V_Error         high or low limit exceeded
1957ebd8b66SMauro Carvalho Chehab     9      VCCP2_Error         high or low limit exceeded
1967ebd8b66SMauro Carvalho Chehab    12      Chassis_Error       CI pin went high
1977ebd8b66SMauro Carvalho Chehab    ===     =============       ==========================
1987ebd8b66SMauro Carvalho Chehab
1997ebd8b66SMauro Carvalho ChehabRemaining bits are reserved and thus undefined. It is important to note
2007ebd8b66SMauro Carvalho Chehabthat alarm bits may be cleared on read, user-space may latch alarms and
2017ebd8b66SMauro Carvalho Chehabprovide the end-user with a method to clear alarm memory.
202