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