xref: /openbmc/linux/Documentation/hwmon/adm9240.rst (revision c39f2d9db0fd81ea20bb5cce9b3f082ca63753e2)
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