drm/tests: hdmi: Fix memory leaks in drm_display_mode_from_cea_vic()
[drm/drm-misc.git] / Documentation / hwmon / nct6775.rst
blob9d7a10de61a7686d1a38d0464eb3fa53d914f092
1 Kernel driver NCT6775
2 =====================
4 .. note::
6     This driver supersedes the NCT6775F and NCT6776F support in the W83627EHF
7     driver.
9 Supported chips:
11   * Nuvoton NCT6102D/NCT6104D/NCT6106D
13     Prefix: 'nct6106'
15     Addresses scanned: ISA address retrieved from Super I/O registers
17     Datasheet: Available from the Nuvoton web site
19   * Nuvoton NCT5572D/NCT6771F/NCT6772F/NCT6775F/W83677HG-I
21     Prefix: 'nct6775'
23     Addresses scanned: ISA address retrieved from Super I/O registers
25     Datasheet: Available from Nuvoton upon request
27   * Nuvoton NCT5573D/NCT5577D/NCT6776D/NCT6776F
29     Prefix: 'nct6776'
31     Addresses scanned: ISA address retrieved from Super I/O registers
33     Datasheet: Available from Nuvoton upon request
35   * Nuvoton NCT5532D/NCT6779D
37     Prefix: 'nct6779'
39     Addresses scanned: ISA address retrieved from Super I/O registers
41     Datasheet: Available from Nuvoton upon request
43   * Nuvoton NCT6791D
45     Prefix: 'nct6791'
47     Addresses scanned: ISA address retrieved from Super I/O registers
49     Datasheet: Available from Nuvoton upon request
51   * Nuvoton NCT6792D
53     Prefix: 'nct6792'
55     Addresses scanned: ISA address retrieved from Super I/O registers
57     Datasheet: Available from Nuvoton upon request
59   * Nuvoton NCT6793D
61     Prefix: 'nct6793'
63     Addresses scanned: ISA address retrieved from Super I/O registers
65     Datasheet: Available from Nuvoton upon request
67   * Nuvoton NCT6795D
69     Prefix: 'nct6795'
71     Addresses scanned: ISA address retrieved from Super I/O registers
73     Datasheet: Available from Nuvoton upon request
75   * Nuvoton NCT6796D
77     Prefix: 'nct6796'
79     Addresses scanned: ISA address retrieved from Super I/O registers
81     Datasheet: Available from Nuvoton upon request
83   * Nuvoton NCT6796D-S/NCT6799D-R
85     Prefix: 'nct6799'
87     Addresses scanned: ISA address retrieved from Super I/O registers
89     Datasheet: Available from Nuvoton upon request
91 Authors:
93         Guenter Roeck <linux@roeck-us.net>
95 Description
96 -----------
98 This driver implements support for the Nuvoton NCT6775F, NCT6776F, and NCT6779D
99 and compatible super I/O chips.
101 The chips support up to 25 temperature monitoring sources. Up to 6 of those are
102 direct temperature sensor inputs, the others are special sources such as PECI,
103 PCH, and SMBUS. Depending on the chip type, 2 to 6 of the temperature sources
104 can be monitored and compared against minimum, maximum, and critical
105 temperatures. The driver reports up to 10 of the temperatures to the user.
106 There are 4 to 5 fan rotation speed sensors, 8 to 15 analog voltage sensors,
107 one VID, alarms with beep warnings (control unimplemented), and some automatic
108 fan regulation strategies (plus manual fan control mode).
110 The temperature sensor sources on all chips are configurable. The configured
111 source for each of the temperature sensors is provided in tempX_label.
113 Temperatures are measured in degrees Celsius and measurement resolution is
114 either 1 degC or 0.5 degC, depending on the temperature source and
115 configuration. An alarm is triggered when the temperature gets higher than
116 the high limit; it stays on until the temperature falls below the hysteresis
117 value. Alarms are only supported for temp1 to temp6, depending on the chip type.
119 Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
120 triggered if the rotation speed has dropped below a programmable limit. On
121 NCT6775F, fan readings can be divided by a programmable divider (1, 2, 4, 8,
122 16, 32, 64 or 128) to give the readings more range or accuracy; the other chips
123 do not have a fan speed divider. The driver sets the most suitable fan divisor
124 itself; specifically, it increases the divider value each time a fan speed
125 reading returns an invalid value, and it reduces it if the fan speed reading
126 is lower than optimal. Some fans might not be present because they share pins
127 with other functions.
129 Voltage sensors (also known as IN sensors) report their values in millivolts.
130 An alarm is triggered if the voltage has crossed a programmable minimum
131 or maximum limit.
133 The driver supports automatic fan control mode known as Thermal Cruise.
134 In this mode, the chip attempts to keep the measured temperature in a
135 predefined temperature range. If the temperature goes out of range, fan
136 is driven slower/faster to reach the predefined range again.
138 The mode works for fan1-fan5.
140 sysfs attributes
141 ----------------
143 pwm[1-7]
144     - this file stores PWM duty cycle or DC value (fan speed) in range:
146            0 (lowest speed) to 255 (full)
148 pwm[1-7]_enable
149     - this file controls mode of fan/temperature control:
151         * 0 Fan control disabled (fans set to maximum speed)
152         * 1 Manual mode, write to pwm[0-5] any value 0-255
153         * 2 "Thermal Cruise" mode
154         * 3 "Fan Speed Cruise" mode
155         * 4 "Smart Fan III" mode (NCT6775F only)
156         * 5 "Smart Fan IV" mode
158 pwm[1-7]_mode
159     - controls if output is PWM or DC level
161         * 0 DC output
162         * 1 PWM output
164 Common fan control attributes
165 -----------------------------
167 pwm[1-7]_temp_sel
168                         Temperature source. Value is temperature sensor index.
169                         For example, select '1' for temp1_input.
171 pwm[1-7]_weight_temp_sel
172                         Secondary temperature source. Value is temperature
173                         sensor index. For example, select '1' for temp1_input.
174                         Set to 0 to disable secondary temperature control.
176 If secondary temperature functionality is enabled, it is controlled with the
177 following attributes.
179 pwm[1-7]_weight_duty_step
180                         Duty step size.
182 pwm[1-7]_weight_temp_step
183                         Temperature step size. With each step over
184                         temp_step_base, the value of weight_duty_step is added
185                         to the current pwm value.
187 pwm[1-7]_weight_temp_step_base
188                         Temperature at which secondary temperature control kicks
189                         in.
191 pwm[1-7]_weight_temp_step_tol
192                         Temperature step tolerance.
194 Thermal Cruise mode (2)
195 -----------------------
197 If the temperature is in the range defined by:
199 pwm[1-7]_target_temp
200                         Target temperature, unit millidegree Celsius
201                         (range 0 - 127000)
203 pwm[1-7]_temp_tolerance
204                         Target temperature tolerance, unit millidegree Celsius
206 There are no changes to fan speed. Once the temperature leaves the interval, fan
207 speed increases (if temperature is higher that desired) or decreases (if
208 temperature is lower than desired), using the following limits and time
209 intervals.
211 pwm[1-7]_start
212                         fan pwm start value (range 1 - 255), to start fan
213                         when the temperature is above defined range.
215 pwm[1-7]_floor
216                         lowest fan pwm (range 0 - 255) if temperature is below
217                         the defined range. If set to 0, the fan is expected to
218                         stop if the temperature is below the defined range.
220 pwm[1-7]_step_up_time
221                         milliseconds before fan speed is increased
223 pwm[1-7]_step_down_time
224                         milliseconds before fan speed is decreased
226 pwm[1-7]_stop_time
227                         how many milliseconds must elapse to switch
228                         corresponding fan off (when the temperature was below
229                         defined range).
231 Speed Cruise mode (3)
232 ---------------------
234 This modes tries to keep the fan speed constant.
236 fan[1-7]_target
237                         Target fan speed
239 fan[1-7]_tolerance
240                         Target speed tolerance
243 Untested; use at your own risk.
245 Smart Fan IV mode (5)
246 ---------------------
248 This mode offers multiple slopes to control the fan speed. The slopes can be
249 controlled by setting the pwm and temperature attributes. When the temperature
250 rises, the chip will calculate the DC/PWM output based on the current slope.
251 There are up to seven data points depending on the chip type. Subsequent data
252 points should be set to higher temperatures and higher pwm values to achieve
253 higher fan speeds with increasing temperature. The last data point reflects
254 critical temperature mode, in which the fans should run at full speed.
256 pwm[1-7]_auto_point[1-7]_pwm
257                         pwm value to be set if temperature reaches matching
258                         temperature range.
260 pwm[1-7]_auto_point[1-7]_temp
261                         Temperature over which the matching pwm is enabled.
263 pwm[1-7]_temp_tolerance
264                         Temperature tolerance, unit millidegree Celsius
266 pwm[1-7]_crit_temp_tolerance
267                         Temperature tolerance for critical temperature,
268                         unit millidegree Celsius
270 pwm[1-7]_step_up_time
271                         milliseconds before fan speed is increased
273 pwm[1-7]_step_down_time
274                         milliseconds before fan speed is decreased
276 Usage Notes
277 -----------
279 On various ASUS boards with NCT6776F, it appears that CPUTIN is not really
280 connected to anything and floats, or that it is connected to some non-standard
281 temperature measurement device. As a result, the temperature reported on CPUTIN
282 will not reflect a usable value. It often reports unreasonably high
283 temperatures, and in some cases the reported temperature declines if the actual
284 temperature increases (similar to the raw PECI temperature value - see PECI
285 specification for details). CPUTIN should therefore be ignored on ASUS
286 boards. The CPU temperature on ASUS boards is reported from PECI 0 or TSI 0.
288 NCT6796D-S and NCT6799D-R chips are very similar and their chip_id indicates
289 they are different versions. This driver treats them the same way.