Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[wrt350n-kernel.git] / Documentation / hwmon / lm93
blobac711f357fafb0793d10c3cb31d2cd882647f767
1 Kernel driver lm93
2 ==================
4 Supported 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
10 Authors:
11         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>
14         Modified for mainline integration by Hans J. Koch <hjk@linutronix.de>
16 Module Parameters
17 -----------------
19 * 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".
40 Hardware Description
41 --------------------
43 (from the datasheet)
45 The LM93 hardware monitor has a two wire digital interface compatible with
46 SMBus 2.0. Using an 8-bit ADC, the LM93 measures the temperature of two remote
47 diode connected transistors as well as its own die and 16 power supply
48 voltages. To set fan speed, the LM93 has two PWM outputs that are each
49 controlled by up to four temperature zones. The fancontrol algorithm is lookup
50 table based. The LM93 includes a digital filter that can be invoked to smooth
51 temperature readings for better control of fan speed. The LM93 has four
52 tachometer inputs to measure fan speed. Limit and status registers for all
53 measured values are included. The LM93 builds upon the functionality of
54 previous motherboard management ASICs and uses some of the LM85's features
55 (i.e. smart tachometer mode). It also adds measurement and control support
56 for dynamic Vccp monitoring and PROCHOT. It is designed to monitor a dual
57 processor Xeon class motherboard with a minimum of external components.
60 User Interface
61 --------------
63 #PROCHOT:
65 The LM93 can monitor two #PROCHOT signals.  The results are found in the
66 sysfs files prochot1, prochot2, prochot1_avg, prochot2_avg, prochot1_max,
67 and prochot2_max.  prochot1_max and prochot2_max contain the user limits
68 for #PROCHOT1 and #PROCHOT2, respectively.  prochot1 and prochot2 contain
69 the current readings for the most recent complete time interval.  The
70 value of prochot1_avg and prochot2_avg is something like a 2 period
71 exponential moving average (but not quite - check the datasheet). Note
72 that this third value is calculated by the chip itself.  All values range
73 from 0-255 where 0 indicates no throttling, and 255 indicates > 99.6%.
75 The monitoring intervals for the two #PROCHOT signals is also configurable.
76 These intervals can be found in the sysfs files prochot1_interval and
77 prochot2_interval.  The values in these files specify the intervals for
78 #P1_PROCHOT and #P2_PROCHOT, respectively.  Selecting a value not in this
79 list will cause the driver to use the next largest interval.  The available
80 intervals are (in seconds):
82 #PROCHOT intervals: 0.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372
84 It is possible to configure the LM93 to logically short the two #PROCHOT
85 signals.  I.e. when #P1_PROCHOT is asserted, the LM93 will automatically
86 assert #P2_PROCHOT, and vice-versa.  This mode is enabled by writing a
87 non-zero integer to the sysfs file prochot_short.
89 The LM93 can also override the #PROCHOT pins by driving a PWM signal onto
90 one or both of them.  When overridden, the signal has a period of 3.56 ms,
91 a minimum pulse width of 5 clocks (at 22.5kHz => 6.25% duty cycle), and
92 a maximum pulse width of 80 clocks (at 22.5kHz => 99.88% duty cycle).
94 The sysfs files prochot1_override and prochot2_override contain boolean
95 integers which enable or disable the override function for #P1_PROCHOT and
96 #P2_PROCHOT, respectively.  The sysfs file prochot_override_duty_cycle
97 contains a value controlling the duty cycle for the PWM signal used when
98 the override function is enabled.  This value ranges from 0 to 15, with 0
99 indicating minimum duty cycle and 15 indicating maximum.
101 #VRD_HOT:
103 The LM93 can monitor two #VRD_HOT signals. The results are found in the
104 sysfs files vrdhot1 and vrdhot2. There is one value per file: a boolean for
105 which 1 indicates #VRD_HOT is asserted and 0 indicates it is negated. These
106 files are read-only.
108 Smart Tach Mode:
110 (from the datasheet)
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.
118 Smart tach mode is enabled by the driver by writing 1 or 2 (associating the
119 the fan tachometer with a pwm) to the sysfs file fan<n>_smart_tach.  A zero
120 will disable the function for that fan.  Note that Smart tach mode cannot be
121 enabled if the PWM output frequency is 22500 Hz (see below).
123 Manual PWM:
125 The LM93 has a fixed or override mode for the two PWM outputs (although, there
126 are still some conditions that will override even this mode - see section
127 15.10.6 of the datasheet for details.)  The sysfs files pwm1_override
128 and pwm2_override are used to enable this mode; each is a boolean integer
129 where 0 disables and 1 enables the manual control mode.  The sysfs files pwm1
130 and pwm2 are used to set the manual duty cycle; each is an integer (0-255)
131 where 0 is 0% duty cycle, and 255 is 100%.  Note that the duty cycle values
132 are constrained by the hardware. Selecting a value which is not available
133 will cause the driver to use the next largest value.  Also note: when manual
134 PWM mode is disabled, the value of pwm1 and pwm2 indicates the current duty
135 cycle chosen by the h/w.
137 PWM Output Frequency:
139 The LM93 supports several different frequencies for the PWM output channels.
140 The sysfs files pwm1_freq and pwm2_freq are used to select the frequency. The
141 frequency values are constrained by the hardware.  Selecting a value which is
142 not available will cause the driver to use the next largest value.  Also note
143 that this parameter has implications for the Smart Tach Mode (see above).
145 PWM Output Frequencies (in Hz): 12, 36, 48, 60, 72, 84, 96, 22500 (default)
147 Automatic PWM:
149 The LM93 is capable of complex automatic fan control, with many different
150 points of configuration.  To start, each PWM output can be bound to any
151 combination of eight control sources.  The final PWM is the largest of all
152 individual control sources to which the PWM output is bound.
154 The 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
156 in the sysfs files pwm<n>_auto_channels, where a "1" enables the binding, and
157 a "0" disables it. The h/w default is 0x0f (all temperatures bound).
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
168 The function y = f(x) takes a source temperature x to a PWM output y.  This
169 function of the LM93 is derived from a base temperature and a table of 12
170 temperature offsets.  The base temperature is expressed in degrees C in the
171 sysfs files temp<n>_auto_base.  The offsets are expressed in cumulative
172 degrees C, with the value of offset <i> for temperature value <n> being
173 contained in the file temp<n>_auto_offset<i>.  E.g. if the base temperature
174 is 40C:
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%
191 Valid offsets are in the range 0C <= x <= 7.5C in 0.5C increments.
193 There is an independent base temperature for each temperature channel. Note,
194 however, there are only two tables of offsets: one each for temp[12] and
195 temp[34].  Therefore, any change to e.g. temp1_auto_offset<i> will also
196 affect temp2_auto_offset<i>.
198 The LM93 can also apply hysteresis to the offset table, to prevent unwanted
199 oscillation between two steps in the offsets table.  These values are found in
200 the sysfs files temp<n>_auto_offset_hyst.  The value in this file has the
201 same representation as in temp<n>_auto_offset<i>.
203 If a temperature reading falls below the base value for that channel, the LM93
204 will use the minimum PWM value.  These values are found in the sysfs files
205 temp<n>_auto_pwm_min.  Note, there are only two minimums: one each for temp[12]
206 and temp[34].  Therefore, any change to e.g. temp1_auto_pwm_min will also
207 affect temp2_auto_pwm_min.
209 PWM Spin-Up Cycle:
211 A spin-up cycle occurs when a PWM output is commanded from 0% duty cycle to
212 some value > 0%.  The LM93 supports a minimum duty cycle during spin-up.  These
213 values are found in the sysfs files pwm<n>_auto_spinup_min. The value in this
214 file has the same representation as other PWM duty cycle values. The
215 duration of the spin-up cycle is also configurable.  These values are found in
216 the sysfs files pwm<n>_auto_spinup_time. The value in this file is
217 the spin-up time in seconds.  The available spin-up times are constrained by
218 the hardware.  Selecting a value which is not available will cause the driver
219 to use the next largest value.
221 Spin-up Durations: 0 (disabled, h/w default), 0.1, 0.25, 0.4, 0.7, 1.0,
222                    2.0, 4.0
224 #PROCHOT and #VRDHOT PWM Ramping:
226 If the #PROCHOT or #VRDHOT signals are asserted while bound to a PWM output
227 channel, the LM93 will ramp the PWM output up to 100% duty cycle in discrete
228 steps. The duration of each step is configurable. There are two files, with
229 one value each in seconds: pwm_auto_prochot_ramp and pwm_auto_vrdhot_ramp.
230 The available ramp times are constrained by the hardware.  Selecting a value
231 which is not available will cause the driver to use the next largest value.
233 Ramp Times: 0 (disabled, h/w default) to 0.75 in 0.05 second intervals
235 Fan Boost:
237 For each temperature channel, there is a boost temperature: if the channel
238 exceeds this limit, the LM93 will immediately drive both PWM outputs to 100%.
239 This limit is expressed in degrees C in the sysfs files temp<n>_auto_boost.
240 There is also a hysteresis temperature for this function: after the boost
241 limit is reached, the temperature channel must drop below this value before
242 the boost function is disabled.  This temperature is also expressed in degrees
243 C in the sysfs files temp<n>_auto_boost_hyst.
245 GPIO Pins:
247 The LM93 can monitor the logic level of four dedicated GPIO pins as well as the
248 four tach input pins.  GPIO0-GPIO3 correspond to (fan) tach 1-4, respectively.
249 All eight GPIOs are read by reading the bitmask in the sysfs file gpio.  The
250 LSB is GPIO0, and the MSB is GPIO7.
253 LM93 Unique sysfs Files
254 -----------------------
256         file                    description
257         -------------------------------------------------------------
259         prochot<n>              current #PROCHOT %
261         prochot<n>_avg          moving average #PROCHOT %
263         prochot<n>_max          limit #PROCHOT %
265         prochot_short           enable or disable logical #PROCHOT pin short
267         prochot<n>_override     force #PROCHOT assertion as PWM
269         prochot_override_duty_cycle
270                                 duty cycle for the PWM signal used when
271                                 #PROCHOT is overridden
273         prochot<n>_interval     #PROCHOT PWM sampling interval
275         vrdhot<n>               0 means negated, 1 means asserted
277         fan<n>_smart_tach       enable or disable smart tach mode
279         pwm<n>_auto_channels    select control sources for PWM outputs
281         pwm<n>_auto_spinup_min  minimum duty cycle during spin-up
283         pwm<n>_auto_spinup_time duration of spin-up
285         pwm_auto_prochot_ramp   ramp time per step when #PROCHOT asserted
287         pwm_auto_vrdhot_ramp    ramp time per step when #VRDHOT asserted
289         temp<n>_auto_base       temperature channel base
291         temp<n>_auto_offset[1-12]
292                                 temperature channel offsets
294         temp<n>_auto_offset_hyst
295                                 temperature channel offset hysteresis
297         temp<n>_auto_boost      temperature channel boost (PWMs to 100%) limit
299         temp<n>_auto_boost_hyst temperature channel boost hysteresis
301         gpio                    input state of 8 GPIO pins; read-only