1Kernel driver asc7621 2================== 3 4Supported chips: 5 Andigilog aSC7621 and aSC7621a 6 Prefix: 'asc7621' 7 Addresses scanned: I2C 0x2c, 0x2d, 0x2e 8 Datasheet: http://www.fairview5.com/linux/asc7621/asc7621.pdf 9 10Author: 11 George Joseph 12 13Description provided by Dave Pivin @ Andigilog: 14 15Andigilog has both the PECI and pre-PECI versions of the Heceta-6, as 16Intel calls them. Heceta-6e has high frequency PWM and Heceta-6p has 17added PECI and a 4th thermal zone. The Andigilog aSC7611 is the 18Heceta-6e part and aSC7621 is the Heceta-6p part. They are both in 19volume production, shipping to Intel and their subs. 20 21We have enhanced both parts relative to the governing Intel 22specification. First enhancement is temperature reading resolution. We 23have used registers below 20h for vendor-specific functions in addition 24to those in the Intel-specified vendor range. 25 26Our conversion process produces a result that is reported as two bytes. 27The fan speed control uses this finer value to produce a "step-less" fan 28PWM output. These two bytes are "read-locked" to guarantee that once a 29high or low byte is read, the other byte is locked-in until after the 30next read of any register. So to get an atomic reading, read high or low 31byte, then the very next read should be the opposite byte. Our data 32sheet says 10-bits of resolution, although you may find the lower bits 33are active, they are not necessarily reliable or useful externally. We 34chose not to mask them. 35 36We employ significant filtering that is user tunable as described in the 37data sheet. Our temperature reports and fan PWM outputs are very smooth 38when compared to the competition, in addition to the higher resolution 39temperature reports. The smoother PWM output does not require user 40intervention. 41 42We offer GPIO features on the former VID pins. These are open-drain 43outputs or inputs and may be used as general purpose I/O or as alarm 44outputs that are based on temperature limits. These are in 19h and 1Ah. 45 46We offer flexible mapping of temperature readings to thermal zones. Any 47temperature may be mapped to any zone, which has a default assignment 48that follows Intel's specs. 49 50Since there is a fan to zone assignment that allows for the "hotter" of 51a set of zones to control the PWM of an individual fan, but there is no 52indication to the user, we have added an indicator that shows which zone 53is currently controlling the PWM for a given fan. This is in register 5400h. 55 56Both remote diode temperature readings may be given an offset value such 57that the reported reading as well as the temperature used to determine 58PWM may be offset for system calibration purposes. 59 60PECI Extended configuration allows for having more than two domains per 61PECI address and also provides an enabling function for each PECI 62address. One could use our flexible zone assignment to have a zone 63assigned to up to 4 PECI addresses. This is not possible in the default 64Intel configuration. This would be useful in multi-CPU systems with 65individual fans on each that would benefit from individual fan control. 66This is in register 0Eh. 67 68The tachometer measurement system is flexible and able to adapt to many 69fan types. We can also support pulse-stretched PWM so that 3-wire fans 70may be used. These characteristics are in registers 04h to 07h. 71 72Finally, we have added a tach disable function that turns off the tach 73measurement system for individual tachs in order to save power. That is 74in register 75h. 75 76-- 77aSC7621 Product Description 78 79The aSC7621 has a two wire digital interface compatible with SMBus 2.0. 80Using a 10-bit ADC, the aSC7621 measures the temperature of two remote diode 81connected transistors as well as its own die. Support for Platform 82Environmental Control Interface (PECI) is included. 83 84Using temperature information from these four zones, an automatic fan speed 85control algorithm is employed to minimize acoustic impact while achieving 86recommended CPU temperature under varying operational loads. 87 88To set fan speed, the aSC7621 has three independent pulse width modulation 89(PWM) outputs that are controlled by one, or a combination of three, 90temperature zones. Both high- and low-frequency PWM ranges are supported. 91 92The aSC7621 also includes a digital filter that can be invoked to smooth 93temperature readings for better control of fan speed and minimum acoustic 94impact. 95 96The aSC7621 has tachometer inputs to measure fan speed on up to four fans. 97Limit and status registers for all measured values are included to alert 98the system host that any measurements are outside of programmed limits 99via status registers. 100 101System voltages of VCCP, 2.5V, 3.3V, 5.0V, and 12V motherboard power are 102monitored efficiently with internal scaling resistors. 103 104Features 105- Supports PECI interface and monitors internal and remote thermal diodes 106- 2-wire, SMBus 2.0 compliant, serial interface 107- 10-bit ADC 108- Monitors VCCP, 2.5V, 3.3V, 5.0V, and 12V motherboard/processor supplies 109- Programmable autonomous fan control based on temperature readings 110- Noise filtering of temperature reading for fan speed control 111- 0.25C digital temperature sensor resolution 112- 3 PWM fan speed control outputs for 2-, 3- or 4-wire fans and up to 4 fan 113 tachometer inputs 114- Enhanced measured temperature to Temperature Zone assignment. 115- Provides high and low PWM frequency ranges 116- 3 GPIO pins for custom use 117- 24-Lead QSOP package 118 119Configuration Notes 120=================== 121 122Except where noted below, the sysfs entries created by this driver follow 123the standards defined in "sysfs-interface". 124 125temp1_source 126 0 (default) peci_legacy = 0, Remote 1 Temperature 127 peci_legacy = 1, PECI Processor Temperature 0 128 1 Remote 1 Temperature 129 2 Remote 2 Temperature 130 3 Internal Temperature 131 4 PECI Processor Temperature 0 132 5 PECI Processor Temperature 1 133 6 PECI Processor Temperature 2 134 7 PECI Processor Temperature 3 135 136temp2_source 137 0 (default) Internal Temperature 138 1 Remote 1 Temperature 139 2 Remote 2 Temperature 140 3 Internal Temperature 141 4 PECI Processor Temperature 0 142 5 PECI Processor Temperature 1 143 6 PECI Processor Temperature 2 144 7 PECI Processor Temperature 3 145 146temp3_source 147 0 (default) Remote 2 Temperature 148 1 Remote 1 Temperature 149 2 Remote 2 Temperature 150 3 Internal Temperature 151 4 PECI Processor Temperature 0 152 5 PECI Processor Temperature 1 153 6 PECI Processor Temperature 2 154 7 PECI Processor Temperature 3 155 156temp4_source 157 0 (default) peci_legacy = 0, PECI Processor Temperature 0 158 peci_legacy = 1, Remote 1 Temperature 159 1 Remote 1 Temperature 160 2 Remote 2 Temperature 161 3 Internal Temperature 162 4 PECI Processor Temperature 0 163 5 PECI Processor Temperature 1 164 6 PECI Processor Temperature 2 165 7 PECI Processor Temperature 3 166 167temp[1-4]_smoothing_enable 168temp[1-4]_smoothing_time 169 Smooths spikes in temp readings caused by noise. 170 Valid values in milliseconds are: 171 35000 172 17600 173 11800 174 7000 175 4400 176 3000 177 1600 178 800 179 180temp[1-4]_crit 181 When the corresponding zone temperature reaches this value, 182 ALL pwm outputs will got to 100%. 183 184temp[5-8]_input 185temp[5-8]_enable 186 The aSC7621 can also read temperatures provided by the processor 187 via the PECI bus. Usually these are "core" temps and are relative 188 to the point where the automatic thermal control circuit starts 189 throttling. This means that these are usually negative numbers. 190 191pwm[1-3]_enable 192 0 Fan off. 193 1 Fan on manual control. 194 2 Fan on automatic control and will run at the minimum pwm 195 if the temperature for the zone is below the minimum. 196 3 Fan on automatic control but will be off if the temperature 197 for the zone is below the minimum. 198 4-254 Ignored. 199 255 Fan on full. 200 201pwm[1-3]_auto_channels 202 Bitmap as described in sysctl-interface with the following 203 exceptions... 204 Only the following combination of zones (and their corresponding masks) 205 are valid: 206 1 207 2 208 3 209 2,3 210 1,2,3 211 4 212 1,2,3,4 213 214 Special values: 215 0 Disabled. 216 16 Fan on manual control. 217 31 Fan on full. 218 219 220pwm[1-3]_invert 221 When set, inverts the meaning of pwm[1-3]. 222 i.e. when pwm = 0, the fan will be on full and 223 when pwm = 255 the fan will be off. 224 225pwm[1-3]_freq 226 PWM frequency in Hz 227 Valid values in Hz are: 228 229 10 230 15 231 23 232 30 (default) 233 38 234 47 235 62 236 94 237 23000 238 24000 239 25000 240 26000 241 27000 242 28000 243 29000 244 30000 245 246 Setting any other value will be ignored. 247 248peci_enable 249 Enables or disables PECI 250 251peci_avg 252 Input filter average time. 253 254 0 0 Sec. (no Smoothing) (default) 255 1 0.25 Sec. 256 2 0.5 Sec. 257 3 1.0 Sec. 258 4 2.0 Sec. 259 5 4.0 Sec. 260 6 8.0 Sec. 261 7 0.0 Sec. 262 263peci_legacy 264 265 0 Standard Mode (default) 266 Remote Diode 1 reading is associated with 267 Temperature Zone 1, PECI is associated with 268 Zone 4 269 270 1 Legacy Mode 271 PECI is associated with Temperature Zone 1, 272 Remote Diode 1 is associated with Zone 4 273 274peci_diode 275 Diode filter 276 277 0 0.25 Sec. 278 1 1.1 Sec. 279 2 2.4 Sec. (default) 280 3 3.4 Sec. 281 4 5.0 Sec. 282 5 6.8 Sec. 283 6 10.2 Sec. 284 7 16.4 Sec. 285 286peci_4domain 287 Four domain enable 288 289 0 1 or 2 Domains for enabled processors (default) 290 1 3 or 4 Domains for enabled processors 291 292peci_domain 293 Domain 294 295 0 Processor contains a single domain (0) (default) 296 1 Processor contains two domains (0,1) 297