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