blob: 7a10616d0b441c473e82d8c2c31489d7dd5e80c2 [file] [log] [blame]
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +02001Kernel driver lm93
2==================
3
4Supported chips:
5 * National Semiconductor LM93
6 Prefix 'lm93'
7 Addresses scanned: I2C 0x2c-0x2e
8 Datasheet: http://www.national.com/ds.cgi/LM/LM93.pdf
9
Jean Delvare471c6062007-08-16 14:48:49 +020010Authors:
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020011 Mark M. Hoffman <mhoffman@lightlink.com>
12 Ported to 2.6 by Eric J. Bowersox <ericb@aspsys.com>
13 Adapted to 2.6.20 by Carsten Emde <ce@osadl.org>
Hans J. Kochf99e0e92010-11-18 12:27:34 -080014 Modified for mainline integration by Hans J. Koch <hjk@hansjkoch.de>
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020015
16Module Parameters
17-----------------
18
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020019* init: integer
20 Set to non-zero to force some initializations (default is 0).
21* disable_block: integer
22 A "0" allows SMBus block data transactions if the host supports them. A "1"
23 disables SMBus block data transactions. The default is 0.
24* vccp_limit_type: integer array (2)
25 Configures in7 and in8 limit type, where 0 means absolute and non-zero
26 means relative. "Relative" here refers to "Dynamic Vccp Monitoring using
27 VID" from the datasheet. It greatly simplifies the interface to allow
28 only one set of limits (absolute or relative) to be in operation at a
29 time (even though the hardware is capable of enabling both). There's
30 not a compelling use case for enabling both at once, anyway. The default
31 is "0,0".
32* vid_agtl: integer
33 A "0" configures the VID pins for V(ih) = 2.1V min, V(il) = 0.8V max.
34 A "1" configures the VID pins for V(ih) = 0.8V min, V(il) = 0.4V max.
35 (The latter setting is referred to as AGTL+ Compatible in the datasheet.)
36 I.e. this parameter controls the VID pin input thresholds; if your VID
37 inputs are not working, try changing this. The default value is "0".
38
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020039
40Hardware Description
41--------------------
42
43(from the datasheet)
44
Jean Delvare471c6062007-08-16 14:48:49 +020045The LM93 hardware monitor has a two wire digital interface compatible with
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020046SMBus 2.0. Using an 8-bit ADC, the LM93 measures the temperature of two remote
47diode connected transistors as well as its own die and 16 power supply
48voltages. To set fan speed, the LM93 has two PWM outputs that are each
49controlled by up to four temperature zones. The fancontrol algorithm is lookup
50table based. The LM93 includes a digital filter that can be invoked to smooth
51temperature readings for better control of fan speed. The LM93 has four
52tachometer inputs to measure fan speed. Limit and status registers for all
53measured values are included. The LM93 builds upon the functionality of
Jean Delvare471c6062007-08-16 14:48:49 +020054previous motherboard management ASICs and uses some of the LM85's features
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020055(i.e. smart tachometer mode). It also adds measurement and control support
56for dynamic Vccp monitoring and PROCHOT. It is designed to monitor a dual
57processor Xeon class motherboard with a minimum of external components.
58
59
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020060User Interface
61--------------
62
63#PROCHOT:
64
65The LM93 can monitor two #PROCHOT signals. The results are found in the
66sysfs files prochot1, prochot2, prochot1_avg, prochot2_avg, prochot1_max,
67and prochot2_max. prochot1_max and prochot2_max contain the user limits
68for #PROCHOT1 and #PROCHOT2, respectively. prochot1 and prochot2 contain
69the current readings for the most recent complete time interval. The
70value of prochot1_avg and prochot2_avg is something like a 2 period
71exponential moving average (but not quite - check the datasheet). Note
72that this third value is calculated by the chip itself. All values range
73from 0-255 where 0 indicates no throttling, and 255 indicates > 99.6%.
74
75The monitoring intervals for the two #PROCHOT signals is also configurable.
76These intervals can be found in the sysfs files prochot1_interval and
77prochot2_interval. The values in these files specify the intervals for
78#P1_PROCHOT and #P2_PROCHOT, respectively. Selecting a value not in this
79list will cause the driver to use the next largest interval. The available
Jean Delvare471c6062007-08-16 14:48:49 +020080intervals are (in seconds):
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020081
82#PROCHOT intervals: 0.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372
83
84It is possible to configure the LM93 to logically short the two #PROCHOT
85signals. I.e. when #P1_PROCHOT is asserted, the LM93 will automatically
86assert #P2_PROCHOT, and vice-versa. This mode is enabled by writing a
87non-zero integer to the sysfs file prochot_short.
88
89The LM93 can also override the #PROCHOT pins by driving a PWM signal onto
Jean Delvare471c6062007-08-16 14:48:49 +020090one or both of them. When overridden, the signal has a period of 3.56 ms,
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020091a minimum pulse width of 5 clocks (at 22.5kHz => 6.25% duty cycle), and
92a maximum pulse width of 80 clocks (at 22.5kHz => 99.88% duty cycle).
93
94The sysfs files prochot1_override and prochot2_override contain boolean
Jean Delvare471c6062007-08-16 14:48:49 +020095integers which enable or disable the override function for #P1_PROCHOT and
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +020096#P2_PROCHOT, respectively. The sysfs file prochot_override_duty_cycle
97contains a value controlling the duty cycle for the PWM signal used when
98the override function is enabled. This value ranges from 0 to 15, with 0
99indicating minimum duty cycle and 15 indicating maximum.
100
101#VRD_HOT:
102
103The LM93 can monitor two #VRD_HOT signals. The results are found in the
104sysfs files vrdhot1 and vrdhot2. There is one value per file: a boolean for
105which 1 indicates #VRD_HOT is asserted and 0 indicates it is negated. These
106files are read-only.
107
108Smart Tach Mode:
109
110(from the datasheet)
111
112 If a fan is driven using a low-side drive PWM, the tachometer
113 output of the fan is corrupted. The LM93 includes smart tachometer
114 circuitry that allows an accurate tachometer reading to be
115 achieved despite the signal corruption. In smart tach mode all
116 four signals are measured within 4 seconds.
117
118Smart tach mode is enabled by the driver by writing 1 or 2 (associating the
119the fan tachometer with a pwm) to the sysfs file fan<n>_smart_tach. A zero
120will disable the function for that fan. Note that Smart tach mode cannot be
121enabled if the PWM output frequency is 22500 Hz (see below).
122
123Manual PWM:
124
125The LM93 has a fixed or override mode for the two PWM outputs (although, there
126are still some conditions that will override even this mode - see section
12715.10.6 of the datasheet for details.) The sysfs files pwm1_override
128and pwm2_override are used to enable this mode; each is a boolean integer
129where 0 disables and 1 enables the manual control mode. The sysfs files pwm1
130and pwm2 are used to set the manual duty cycle; each is an integer (0-255)
131where 0 is 0% duty cycle, and 255 is 100%. Note that the duty cycle values
132are constrained by the hardware. Selecting a value which is not available
133will cause the driver to use the next largest value. Also note: when manual
134PWM mode is disabled, the value of pwm1 and pwm2 indicates the current duty
135cycle chosen by the h/w.
136
137PWM Output Frequency:
138
139The LM93 supports several different frequencies for the PWM output channels.
140The sysfs files pwm1_freq and pwm2_freq are used to select the frequency. The
141frequency values are constrained by the hardware. Selecting a value which is
142not available will cause the driver to use the next largest value. Also note
143that this parameter has implications for the Smart Tach Mode (see above).
144
Jean Delvare471c6062007-08-16 14:48:49 +0200145PWM Output Frequencies (in Hz): 12, 36, 48, 60, 72, 84, 96, 22500 (default)
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +0200146
147Automatic PWM:
148
149The LM93 is capable of complex automatic fan control, with many different
150points of configuration. To start, each PWM output can be bound to any
151combination of eight control sources. The final PWM is the largest of all
152individual control sources to which the PWM output is bound.
153
154The eight control sources are: temp1-temp4 (aka "zones" in the datasheet),
155#PROCHOT 1 & 2, and #VRDHOT 1 & 2. The bindings are expressed as a bitmask
156in the sysfs files pwm<n>_auto_channels, where a "1" enables the binding, and
Jean Delvare471c6062007-08-16 14:48:49 +0200157a "0" disables it. The h/w default is 0x0f (all temperatures bound).
Hans-Jürgen Koche46957e2007-07-05 17:58:29 +0200158
159 0x01 - Temp 1
160 0x02 - Temp 2
161 0x04 - Temp 3
162 0x08 - Temp 4
163 0x10 - #PROCHOT 1
164 0x20 - #PROCHOT 2
165 0x40 - #VRDHOT 1
166 0x80 - #VRDHOT 2
167
168The function y = f(x) takes a source temperature x to a PWM output y. This
169function of the LM93 is derived from a base temperature and a table of 12
170temperature offsets. The base temperature is expressed in degrees C in the
171sysfs files temp<n>_auto_base. The offsets are expressed in cumulative
172degrees C, with the value of offset <i> for temperature value <n> being
173contained in the file temp<n>_auto_offset<i>. E.g. if the base temperature
174is 40C:
175
176 offset # temp<n>_auto_offset<i> range pwm
177 1 0 - 25.00%
178 2 0 - 28.57%
179 3 1 40C - 41C 32.14%
180 4 1 41C - 42C 35.71%
181 5 2 42C - 44C 39.29%
182 6 2 44C - 46C 42.86%
183 7 2 48C - 50C 46.43%
184 8 2 50C - 52C 50.00%
185 9 2 52C - 54C 53.57%
186 10 2 54C - 56C 57.14%
187 11 2 56C - 58C 71.43%
188 12 2 58C - 60C 85.71%
189 > 60C 100.00%
190
191Valid offsets are in the range 0C <= x <= 7.5C in 0.5C increments.
192
193There is an independent base temperature for each temperature channel. Note,
194however, there are only two tables of offsets: one each for temp[12] and
195temp[34]. Therefore, any change to e.g. temp1_auto_offset<i> will also
196affect temp2_auto_offset<i>.
197
198The LM93 can also apply hysteresis to the offset table, to prevent unwanted
199oscillation between two steps in the offsets table. These values are found in
200the sysfs files temp<n>_auto_offset_hyst. The value in this file has the
201same representation as in temp<n>_auto_offset<i>.
202
203If a temperature reading falls below the base value for that channel, the LM93
204will use the minimum PWM value. These values are found in the sysfs files
205temp<n>_auto_pwm_min. Note, there are only two minimums: one each for temp[12]
206and temp[34]. Therefore, any change to e.g. temp1_auto_pwm_min will also
207affect temp2_auto_pwm_min.
208
209PWM Spin-Up Cycle:
210
211A spin-up cycle occurs when a PWM output is commanded from 0% duty cycle to
212some value > 0%. The LM93 supports a minimum duty cycle during spin-up. These
213values are found in the sysfs files pwm<n>_auto_spinup_min. The value in this
214file has the same representation as other PWM duty cycle values. The
215duration of the spin-up cycle is also configurable. These values are found in
216the sysfs files pwm<n>_auto_spinup_time. The value in this file is
217the spin-up time in seconds. The available spin-up times are constrained by
218the hardware. Selecting a value which is not available will cause the driver
219to use the next largest value.
220
221Spin-up Durations: 0 (disabled, h/w default), 0.1, 0.25, 0.4, 0.7, 1.0,
222 2.0, 4.0
223
224#PROCHOT and #VRDHOT PWM Ramping:
225
226If the #PROCHOT or #VRDHOT signals are asserted while bound to a PWM output
227channel, the LM93 will ramp the PWM output up to 100% duty cycle in discrete
228steps. The duration of each step is configurable. There are two files, with
229one value each in seconds: pwm_auto_prochot_ramp and pwm_auto_vrdhot_ramp.
230The available ramp times are constrained by the hardware. Selecting a value
231which is not available will cause the driver to use the next largest value.
232
233Ramp Times: 0 (disabled, h/w default) to 0.75 in 0.05 second intervals
234
235Fan Boost:
236
237For each temperature channel, there is a boost temperature: if the channel
238exceeds this limit, the LM93 will immediately drive both PWM outputs to 100%.
239This limit is expressed in degrees C in the sysfs files temp<n>_auto_boost.
240There is also a hysteresis temperature for this function: after the boost
241limit is reached, the temperature channel must drop below this value before
242the boost function is disabled. This temperature is also expressed in degrees
243C in the sysfs files temp<n>_auto_boost_hyst.
244
245GPIO Pins:
246
247The LM93 can monitor the logic level of four dedicated GPIO pins as well as the
248four tach input pins. GPIO0-GPIO3 correspond to (fan) tach 1-4, respectively.
249All eight GPIOs are read by reading the bitmask in the sysfs file gpio. The
250LSB is GPIO0, and the MSB is GPIO7.
251
252
253LM93 Unique sysfs Files
254-----------------------
255
256 file description
257 -------------------------------------------------------------
258
259 prochot<n> current #PROCHOT %
260
261 prochot<n>_avg moving average #PROCHOT %
262
263 prochot<n>_max limit #PROCHOT %
264
265 prochot_short enable or disable logical #PROCHOT pin short
266
267 prochot<n>_override force #PROCHOT assertion as PWM
268
269 prochot_override_duty_cycle
270 duty cycle for the PWM signal used when
271 #PROCHOT is overridden
272
273 prochot<n>_interval #PROCHOT PWM sampling interval
274
275 vrdhot<n> 0 means negated, 1 means asserted
276
277 fan<n>_smart_tach enable or disable smart tach mode
278
279 pwm<n>_auto_channels select control sources for PWM outputs
280
281 pwm<n>_auto_spinup_min minimum duty cycle during spin-up
282
283 pwm<n>_auto_spinup_time duration of spin-up
284
285 pwm_auto_prochot_ramp ramp time per step when #PROCHOT asserted
286
287 pwm_auto_vrdhot_ramp ramp time per step when #VRDHOT asserted
288
289 temp<n>_auto_base temperature channel base
290
291 temp<n>_auto_offset[1-12]
292 temperature channel offsets
293
294 temp<n>_auto_offset_hyst
295 temperature channel offset hysteresis
296
297 temp<n>_auto_boost temperature channel boost (PWMs to 100%) limit
298
299 temp<n>_auto_boost_hyst temperature channel boost hysteresis
300
301 gpio input state of 8 GPIO pins; read-only
302