arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / Documentation / hwmon / nct6775.rst
1 Kernel driver NCT6775
2 =====================
3
4 .. note::
5
6     This driver supersedes the NCT6775F and NCT6776F support in the W83627EHF
7     driver.
8
9 Supported 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
91 Authors:
92
93         Guenter Roeck <linux@roeck-us.net>
94
95 Description
96 -----------
97
98 This driver implements support for the Nuvoton NCT6775F, NCT6776F, and NCT6779D
99 and compatible super I/O chips.
100
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).
109
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.
112
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.
118
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.
128
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.
132
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.
137
138 The mode works for fan1-fan5.
139
140 sysfs attributes
141 ----------------
142
143 pwm[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
148 pwm[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
158 pwm[1-7]_mode
159     - controls if output is PWM or DC level
160
161         * 0 DC output
162         * 1 PWM output
163
164 Common fan control attributes
165 -----------------------------
166
167 pwm[1-7]_temp_sel
168                         Temperature source. Value is temperature sensor index.
169                         For example, select '1' for temp1_input.
170
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.
175
176 If secondary temperature functionality is enabled, it is controlled with the
177 following attributes.
178
179 pwm[1-7]_weight_duty_step
180                         Duty step size.
181
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.
186
187 pwm[1-7]_weight_temp_step_base
188                         Temperature at which secondary temperature control kicks
189                         in.
190
191 pwm[1-7]_weight_temp_step_tol
192                         Temperature step tolerance.
193
194 Thermal Cruise mode (2)
195 -----------------------
196
197 If the temperature is in the range defined by:
198
199 pwm[1-7]_target_temp
200                         Target temperature, unit millidegree Celsius
201                         (range 0 - 127000)
202
203 pwm[1-7]_temp_tolerance
204                         Target temperature tolerance, unit millidegree Celsius
205
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.
210
211 pwm[1-7]_start
212                         fan pwm start value (range 1 - 255), to start fan
213                         when the temperature is above defined range.
214
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.
219
220 pwm[1-7]_step_up_time
221                         milliseconds before fan speed is increased
222
223 pwm[1-7]_step_down_time
224                         milliseconds before fan speed is decreased
225
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).
230
231 Speed Cruise mode (3)
232 ---------------------
233
234 This modes tries to keep the fan speed constant.
235
236 fan[1-7]_target
237                         Target fan speed
238
239 fan[1-7]_tolerance
240                         Target speed tolerance
241
242
243 Untested; use at your own risk.
244
245 Smart Fan IV mode (5)
246 ---------------------
247
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.
255
256 pwm[1-7]_auto_point[1-7]_pwm
257                         pwm value to be set if temperature reaches matching
258                         temperature range.
259
260 pwm[1-7]_auto_point[1-7]_temp
261                         Temperature over which the matching pwm is enabled.
262
263 pwm[1-7]_temp_tolerance
264                         Temperature tolerance, unit millidegree Celsius
265
266 pwm[1-7]_crit_temp_tolerance
267                         Temperature tolerance for critical temperature,
268                         unit millidegree Celsius
269
270 pwm[1-7]_step_up_time
271                         milliseconds before fan speed is increased
272
273 pwm[1-7]_step_down_time
274                         milliseconds before fan speed is decreased
275
276 Usage Notes
277 -----------
278
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.
287
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.