Back to home page

OSCL-LXR

 
 

    


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.