0001 Kernel driver NCT6775
0002 =====================
0003
0004 .. note::
0005
0006 This driver supersedes the NCT6775F and NCT6776F support in the W83627EHF
0007 driver.
0008
0009 Supported chips:
0010
0011 * Nuvoton NCT6102D/NCT6104D/NCT6106D
0012
0013 Prefix: 'nct6106'
0014
0015 Addresses scanned: ISA address retrieved from Super I/O registers
0016
0017 Datasheet: Available from the Nuvoton web site
0018
0019 * Nuvoton NCT5572D/NCT6771F/NCT6772F/NCT6775F/W83677HG-I
0020
0021 Prefix: 'nct6775'
0022
0023 Addresses scanned: ISA address retrieved from Super I/O registers
0024
0025 Datasheet: Available from Nuvoton upon request
0026
0027 * Nuvoton NCT5573D/NCT5577D/NCT6776D/NCT6776F
0028
0029 Prefix: 'nct6776'
0030
0031 Addresses scanned: ISA address retrieved from Super I/O registers
0032
0033 Datasheet: Available from Nuvoton upon request
0034
0035 * Nuvoton NCT5532D/NCT6779D
0036
0037 Prefix: 'nct6779'
0038
0039 Addresses scanned: ISA address retrieved from Super I/O registers
0040
0041 Datasheet: Available from Nuvoton upon request
0042
0043 * Nuvoton NCT6791D
0044
0045 Prefix: 'nct6791'
0046
0047 Addresses scanned: ISA address retrieved from Super I/O registers
0048
0049 Datasheet: Available from Nuvoton upon request
0050
0051 * Nuvoton NCT6792D
0052
0053 Prefix: 'nct6792'
0054
0055 Addresses scanned: ISA address retrieved from Super I/O registers
0056
0057 Datasheet: Available from Nuvoton upon request
0058
0059 * Nuvoton NCT6793D
0060
0061 Prefix: 'nct6793'
0062
0063 Addresses scanned: ISA address retrieved from Super I/O registers
0064
0065 Datasheet: Available from Nuvoton upon request
0066
0067 * Nuvoton NCT6795D
0068
0069 Prefix: 'nct6795'
0070
0071 Addresses scanned: ISA address retrieved from Super I/O registers
0072
0073 Datasheet: Available from Nuvoton upon request
0074
0075 * Nuvoton NCT6796D
0076
0077 Prefix: 'nct6796'
0078
0079 Addresses scanned: ISA address retrieved from Super I/O registers
0080
0081 Datasheet: Available from Nuvoton upon request
0082
0083
0084
0085 Authors:
0086
0087 Guenter Roeck <linux@roeck-us.net>
0088
0089 Description
0090 -----------
0091
0092 This driver implements support for the Nuvoton NCT6775F, NCT6776F, and NCT6779D
0093 and compatible super I/O chips.
0094
0095 The chips support up to 25 temperature monitoring sources. Up to 6 of those are
0096 direct temperature sensor inputs, the others are special sources such as PECI,
0097 PCH, and SMBUS. Depending on the chip type, 2 to 6 of the temperature sources
0098 can be monitored and compared against minimum, maximum, and critical
0099 temperatures. The driver reports up to 10 of the temperatures to the user.
0100 There are 4 to 5 fan rotation speed sensors, 8 to 15 analog voltage sensors,
0101 one VID, alarms with beep warnings (control unimplemented), and some automatic
0102 fan regulation strategies (plus manual fan control mode).
0103
0104 The temperature sensor sources on all chips are configurable. The configured
0105 source for each of the temperature sensors is provided in tempX_label.
0106
0107 Temperatures are measured in degrees Celsius and measurement resolution is
0108 either 1 degC or 0.5 degC, depending on the temperature source and
0109 configuration. An alarm is triggered when the temperature gets higher than
0110 the high limit; it stays on until the temperature falls below the hysteresis
0111 value. Alarms are only supported for temp1 to temp6, depending on the chip type.
0112
0113 Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
0114 triggered if the rotation speed has dropped below a programmable limit. On
0115 NCT6775F, fan readings can be divided by a programmable divider (1, 2, 4, 8,
0116 16, 32, 64 or 128) to give the readings more range or accuracy; the other chips
0117 do not have a fan speed divider. The driver sets the most suitable fan divisor
0118 itself; specifically, it increases the divider value each time a fan speed
0119 reading returns an invalid value, and it reduces it if the fan speed reading
0120 is lower than optimal. Some fans might not be present because they share pins
0121 with other functions.
0122
0123 Voltage sensors (also known as IN sensors) report their values in millivolts.
0124 An alarm is triggered if the voltage has crossed a programmable minimum
0125 or maximum limit.
0126
0127 The driver supports automatic fan control mode known as Thermal Cruise.
0128 In this mode, the chip attempts to keep the measured temperature in a
0129 predefined temperature range. If the temperature goes out of range, fan
0130 is driven slower/faster to reach the predefined range again.
0131
0132 The mode works for fan1-fan5.
0133
0134 sysfs attributes
0135 ----------------
0136
0137 pwm[1-7]
0138 - this file stores PWM duty cycle or DC value (fan speed) in range:
0139
0140 0 (lowest speed) to 255 (full)
0141
0142 pwm[1-7]_enable
0143 - this file controls mode of fan/temperature control:
0144
0145 * 0 Fan control disabled (fans set to maximum speed)
0146 * 1 Manual mode, write to pwm[0-5] any value 0-255
0147 * 2 "Thermal Cruise" mode
0148 * 3 "Fan Speed Cruise" mode
0149 * 4 "Smart Fan III" mode (NCT6775F only)
0150 * 5 "Smart Fan IV" mode
0151
0152 pwm[1-7]_mode
0153 - controls if output is PWM or DC level
0154
0155 * 0 DC output
0156 * 1 PWM output
0157
0158 Common fan control attributes
0159 -----------------------------
0160
0161 pwm[1-7]_temp_sel
0162 Temperature source. Value is temperature sensor index.
0163 For example, select '1' for temp1_input.
0164
0165 pwm[1-7]_weight_temp_sel
0166 Secondary temperature source. Value is temperature
0167 sensor index. For example, select '1' for temp1_input.
0168 Set to 0 to disable secondary temperature control.
0169
0170 If secondary temperature functionality is enabled, it is controlled with the
0171 following attributes.
0172
0173 pwm[1-7]_weight_duty_step
0174 Duty step size.
0175
0176 pwm[1-7]_weight_temp_step
0177 Temperature step size. With each step over
0178 temp_step_base, the value of weight_duty_step is added
0179 to the current pwm value.
0180
0181 pwm[1-7]_weight_temp_step_base
0182 Temperature at which secondary temperature control kicks
0183 in.
0184
0185 pwm[1-7]_weight_temp_step_tol
0186 Temperature step tolerance.
0187
0188 Thermal Cruise mode (2)
0189 -----------------------
0190
0191 If the temperature is in the range defined by:
0192
0193 pwm[1-7]_target_temp
0194 Target temperature, unit millidegree Celsius
0195 (range 0 - 127000)
0196
0197 pwm[1-7]_temp_tolerance
0198 Target temperature tolerance, unit millidegree Celsius
0199
0200 There are no changes to fan speed. Once the temperature leaves the interval, fan
0201 speed increases (if temperature is higher that desired) or decreases (if
0202 temperature is lower than desired), using the following limits and time
0203 intervals.
0204
0205 pwm[1-7]_start
0206 fan pwm start value (range 1 - 255), to start fan
0207 when the temperature is above defined range.
0208
0209 pwm[1-7]_floor
0210 lowest fan pwm (range 0 - 255) if temperature is below
0211 the defined range. If set to 0, the fan is expected to
0212 stop if the temperature is below the defined range.
0213
0214 pwm[1-7]_step_up_time
0215 milliseconds before fan speed is increased
0216
0217 pwm[1-7]_step_down_time
0218 milliseconds before fan speed is decreased
0219
0220 pwm[1-7]_stop_time
0221 how many milliseconds must elapse to switch
0222 corresponding fan off (when the temperature was below
0223 defined range).
0224
0225 Speed Cruise mode (3)
0226 ---------------------
0227
0228 This modes tries to keep the fan speed constant.
0229
0230 fan[1-7]_target
0231 Target fan speed
0232
0233 fan[1-7]_tolerance
0234 Target speed tolerance
0235
0236
0237 Untested; use at your own risk.
0238
0239 Smart Fan IV mode (5)
0240 ---------------------
0241
0242 This mode offers multiple slopes to control the fan speed. The slopes can be
0243 controlled by setting the pwm and temperature attributes. When the temperature
0244 rises, the chip will calculate the DC/PWM output based on the current slope.
0245 There are up to seven data points depending on the chip type. Subsequent data
0246 points should be set to higher temperatures and higher pwm values to achieve
0247 higher fan speeds with increasing temperature. The last data point reflects
0248 critical temperature mode, in which the fans should run at full speed.
0249
0250 pwm[1-7]_auto_point[1-7]_pwm
0251 pwm value to be set if temperature reaches matching
0252 temperature range.
0253
0254 pwm[1-7]_auto_point[1-7]_temp
0255 Temperature over which the matching pwm is enabled.
0256
0257 pwm[1-7]_temp_tolerance
0258 Temperature tolerance, unit millidegree Celsius
0259
0260 pwm[1-7]_crit_temp_tolerance
0261 Temperature tolerance for critical temperature,
0262 unit millidegree Celsius
0263
0264 pwm[1-7]_step_up_time
0265 milliseconds before fan speed is increased
0266
0267 pwm[1-7]_step_down_time
0268 milliseconds before fan speed is decreased
0269
0270 Usage Notes
0271 -----------
0272
0273 On various ASUS boards with NCT6776F, it appears that CPUTIN is not really
0274 connected to anything and floats, or that it is connected to some non-standard
0275 temperature measurement device. As a result, the temperature reported on CPUTIN
0276 will not reflect a usable value. It often reports unreasonably high
0277 temperatures, and in some cases the reported temperature declines if the actual
0278 temperature increases (similar to the raw PECI temperature value - see PECI
0279 specification for details). CPUTIN should therefore be ignored on ASUS
0280 boards. The CPU temperature on ASUS boards is reported from PECI 0.