1*4882a593SmuzhiyunKernel driver it87 2*4882a593Smuzhiyun================== 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunSupported chips: 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun * IT8603E/IT8623E 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun Prefix: 'it8603' 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun Datasheet: Not publicly available 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun * IT8620E 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun Prefix: 'it8620' 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun * IT8628E 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun Prefix: 'it8628' 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun Datasheet: Not publicly available 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun * IT8705F 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun Prefix: 'it87' 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun Datasheet: Once publicly available at the ITE website, but no longer 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun * IT8712F 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun Prefix: 'it8712' 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun Datasheet: Once publicly available at the ITE website, but no longer 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun * IT8716F/IT8726F 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun Prefix: 'it8716' 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun Datasheet: Once publicly available at the ITE website, but no longer 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun * IT8718F 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun Prefix: 'it8718' 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun Datasheet: Once publicly available at the ITE website, but no longer 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun * IT8720F 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun Prefix: 'it8720' 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun Datasheet: Not publicly available 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun * IT8721F/IT8758E 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun Prefix: 'it8721' 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun Datasheet: Not publicly available 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun * IT8728F 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun Prefix: 'it8728' 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun Datasheet: Not publicly available 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun * IT8732F 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun Prefix: 'it8732' 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun Datasheet: Not publicly available 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun * IT8771E 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun Prefix: 'it8771' 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun Datasheet: Not publicly available 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun * IT8772E 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun Prefix: 'it8772' 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun Datasheet: Not publicly available 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun * IT8781F 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun Prefix: 'it8781' 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun Datasheet: Not publicly available 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun * IT8782F 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun Prefix: 'it8782' 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun Datasheet: Not publicly available 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun * IT8783E/F 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun Prefix: 'it8783' 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun Datasheet: Not publicly available 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun * IT8786E 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun Prefix: 'it8786' 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun Datasheet: Not publicly available 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun * IT8790E 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun Prefix: 'it8790' 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun Datasheet: Not publicly available 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun * SiS950 [clone of IT8705F] 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun Prefix: 'it87' 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun Addresses scanned: from Super I/O config space (8 I/O ports) 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun Datasheet: No longer be available 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun 157*4882a593SmuzhiyunAuthors: 158*4882a593Smuzhiyun - Christophe Gauthron 159*4882a593Smuzhiyun - Jean Delvare <jdelvare@suse.de> 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun 162*4882a593SmuzhiyunModule Parameters 163*4882a593Smuzhiyun----------------- 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun* update_vbat: int 166*4882a593Smuzhiyun 0 if vbat should report power on value, 1 if vbat should be updated after 167*4882a593Smuzhiyun each read. Default is 0. On some boards the battery voltage is provided 168*4882a593Smuzhiyun by either the battery or the onboard power supply. Only the first reading 169*4882a593Smuzhiyun at power on will be the actual battery voltage (which the chip does 170*4882a593Smuzhiyun automatically). On other boards the battery voltage is always fed to 171*4882a593Smuzhiyun the chip so can be read at any time. Excessive reading may decrease 172*4882a593Smuzhiyun battery life but no information is given in the datasheet. 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun* fix_pwm_polarity int 175*4882a593Smuzhiyun Force PWM polarity to active high (DANGEROUS). Some chips are 176*4882a593Smuzhiyun misconfigured by BIOS - PWM values would be inverted. This option tries 177*4882a593Smuzhiyun to fix this. Please contact your BIOS manufacturer and ask him for fix. 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun 180*4882a593SmuzhiyunHardware Interfaces 181*4882a593Smuzhiyun------------------- 182*4882a593Smuzhiyun 183*4882a593SmuzhiyunAll the chips supported by this driver are LPC Super-I/O chips, accessed 184*4882a593Smuzhiyunthrough the LPC bus (ISA-like I/O ports). The IT8712F additionally has an 185*4882a593SmuzhiyunSMBus interface to the hardware monitoring functions. This driver no 186*4882a593Smuzhiyunlonger supports this interface though, as it is slower and less reliable 187*4882a593Smuzhiyunthan the ISA access, and was only available on a small number of 188*4882a593Smuzhiyunmotherboard models. 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun 191*4882a593SmuzhiyunDescription 192*4882a593Smuzhiyun----------- 193*4882a593Smuzhiyun 194*4882a593SmuzhiyunThis driver implements support for the IT8603E, IT8620E, IT8623E, IT8628E, 195*4882a593SmuzhiyunIT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F, 196*4882a593SmuzhiyunIT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and 197*4882a593SmuzhiyunSiS950 chips. 198*4882a593Smuzhiyun 199*4882a593SmuzhiyunThese chips are 'Super I/O chips', supporting floppy disks, infrared ports, 200*4882a593Smuzhiyunjoysticks and other miscellaneous stuff. For hardware monitoring, they 201*4882a593Smuzhiyuninclude an 'environment controller' with 3 temperature sensors, 3 fan 202*4882a593Smuzhiyunrotation speed sensors, 8 voltage sensors, associated alarms, and chassis 203*4882a593Smuzhiyunintrusion detection. 204*4882a593Smuzhiyun 205*4882a593SmuzhiyunThe IT8712F and IT8716F additionally feature VID inputs, used to report 206*4882a593Smuzhiyunthe Vcore voltage of the processor. The early IT8712F have 5 VID pins, 207*4882a593Smuzhiyunthe IT8716F and late IT8712F have 6. They are shared with other functions 208*4882a593Smuzhiyunthough, so the functionality may not be available on a given system. 209*4882a593Smuzhiyun 210*4882a593SmuzhiyunThe IT8718F and IT8720F also features VID inputs (up to 8 pins) but the value 211*4882a593Smuzhiyunis stored in the Super-I/O configuration space. Due to technical limitations, 212*4882a593Smuzhiyunthis value can currently only be read once at initialization time, so 213*4882a593Smuzhiyunthe driver won't notice and report changes in the VID value. The two 214*4882a593Smuzhiyunupper VID bits share their pins with voltage inputs (in5 and in6) so you 215*4882a593Smuzhiyuncan't have both on a given board. 216*4882a593Smuzhiyun 217*4882a593SmuzhiyunThe IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions 218*4882a593Smuzhiyunhave support for 2 additional fans. The additional fans are supported by the 219*4882a593Smuzhiyundriver. 220*4882a593Smuzhiyun 221*4882a593SmuzhiyunThe IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F, 222*4882a593SmuzhiyunIT8783E/F, and late IT8712F and IT8705F also have optional 16-bit tachometer 223*4882a593Smuzhiyuncounters for fans 1 to 3. This is better (no more fan clock divider mess) but 224*4882a593Smuzhiyunnot compatible with the older chips and revisions. The 16-bit tachometer mode 225*4882a593Smuzhiyunis enabled by the driver when one of the above chips is detected. 226*4882a593Smuzhiyun 227*4882a593SmuzhiyunThe IT8726F is just bit enhanced IT8716F with additional hardware 228*4882a593Smuzhiyunfor AMD power sequencing. Therefore the chip will appear as IT8716F 229*4882a593Smuzhiyunto userspace applications. 230*4882a593Smuzhiyun 231*4882a593SmuzhiyunThe IT8728F, IT8771E, and IT8772E are considered compatible with the IT8721F, 232*4882a593Smuzhiyununtil a datasheet becomes available (hopefully.) 233*4882a593Smuzhiyun 234*4882a593SmuzhiyunThe IT8603E/IT8623E is a custom design, hardware monitoring part is similar to 235*4882a593SmuzhiyunIT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode 236*4882a593Smuzhiyunof the fan is not supported (value 0 of pwmX_enable). 237*4882a593Smuzhiyun 238*4882a593SmuzhiyunThe IT8620E and IT8628E are custom designs, hardware monitoring part is similar 239*4882a593Smuzhiyunto IT8728F. It only supports 16-bit fan mode. Both chips support up to 6 fans. 240*4882a593Smuzhiyun 241*4882a593SmuzhiyunThe IT8790E supports up to 3 fans. 16-bit fan mode is always enabled. 242*4882a593Smuzhiyun 243*4882a593SmuzhiyunThe IT8732F supports a closed-loop mode for fan control, but this is not 244*4882a593Smuzhiyuncurrently implemented by the driver. 245*4882a593Smuzhiyun 246*4882a593SmuzhiyunTemperatures are measured in degrees Celsius. An alarm is triggered once 247*4882a593Smuzhiyunwhen the Overtemperature Shutdown limit is crossed. 248*4882a593Smuzhiyun 249*4882a593SmuzhiyunFan rotation speeds are reported in RPM (rotations per minute). An alarm is 250*4882a593Smuzhiyuntriggered if the rotation speed has dropped below a programmable limit. When 251*4882a593Smuzhiyun16-bit tachometer counters aren't used, fan readings can be divided by 252*4882a593Smuzhiyuna programmable divider (1, 2, 4 or 8) to give the readings more range or 253*4882a593Smuzhiyunaccuracy. With a divider of 2, the lowest representable value is around 254*4882a593Smuzhiyun2600 RPM. Not all RPM values can accurately be represented, so some rounding 255*4882a593Smuzhiyunis done. 256*4882a593Smuzhiyun 257*4882a593SmuzhiyunVoltage sensors (also known as IN sensors) report their values in volts. An 258*4882a593Smuzhiyunalarm is triggered if the voltage has crossed a programmable minimum or 259*4882a593Smuzhiyunmaximum limit. Note that minimum in this case always means 'closest to 260*4882a593Smuzhiyunzero'; this is important for negative voltage measurements. On most chips, all 261*4882a593Smuzhiyunvoltage inputs can measure voltages between 0 and 4.08 volts, with a resolution 262*4882a593Smuzhiyunof 0.016 volt. IT8603E, IT8721F/IT8758E and IT8728F can measure between 0 and 263*4882a593Smuzhiyun3.06 volts, with a resolution of 0.012 volt. IT8732F can measure between 0 and 264*4882a593Smuzhiyun2.8 volts with a resolution of 0.0109 volt. The battery voltage in8 does not 265*4882a593Smuzhiyunhave limit registers. 266*4882a593Smuzhiyun 267*4882a593SmuzhiyunOn the IT8603E, IT8620E, IT8628E, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F, 268*4882a593Smuzhiyunand IT8783E/F, some voltage inputs are internal and scaled inside the chip: 269*4882a593Smuzhiyun* in3 (optional) 270*4882a593Smuzhiyun* in7 (optional for IT8781F, IT8782F, and IT8783E/F) 271*4882a593Smuzhiyun* in8 (always) 272*4882a593Smuzhiyun* in9 (relevant for IT8603E only) 273*4882a593SmuzhiyunThe driver handles this transparently so user-space doesn't have to care. 274*4882a593Smuzhiyun 275*4882a593SmuzhiyunThe VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value: 276*4882a593Smuzhiyunthe voltage level your processor should work with. This is hardcoded by 277*4882a593Smuzhiyunthe mainboard and/or processor itself. It is a value in volts. 278*4882a593Smuzhiyun 279*4882a593SmuzhiyunIf an alarm triggers, it will remain triggered until the hardware register 280*4882a593Smuzhiyunis read at least once. This means that the cause for the alarm may already 281*4882a593Smuzhiyunhave disappeared! Note that in the current implementation, all hardware 282*4882a593Smuzhiyunregisters are read whenever any data is read (unless it is less than 1.5 283*4882a593Smuzhiyunseconds since the last update). This means that you can easily miss 284*4882a593Smuzhiyunonce-only alarms. 285*4882a593Smuzhiyun 286*4882a593SmuzhiyunOut-of-limit readings can also result in beeping, if the chip is properly 287*4882a593Smuzhiyunwired and configured. Beeping can be enabled or disabled per sensor type 288*4882a593Smuzhiyun(temperatures, voltages and fans.) 289*4882a593Smuzhiyun 290*4882a593SmuzhiyunThe IT87xx only updates its values each 1.5 seconds; reading it more often 291*4882a593Smuzhiyunwill do no harm, but will return 'old' values. 292*4882a593Smuzhiyun 293*4882a593SmuzhiyunTo change sensor N to a thermistor, 'echo 4 > tempN_type' where N is 1, 2, 294*4882a593Smuzhiyunor 3. To change sensor N to a thermal diode, 'echo 3 > tempN_type'. 295*4882a593SmuzhiyunGive 0 for unused sensor. Any other value is invalid. To configure this at 296*4882a593Smuzhiyunstartup, consult lm_sensors's /etc/sensors.conf. (4 = thermistor; 297*4882a593Smuzhiyun3 = thermal diode) 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun 300*4882a593SmuzhiyunFan speed control 301*4882a593Smuzhiyun----------------- 302*4882a593Smuzhiyun 303*4882a593SmuzhiyunThe fan speed control features are limited to manual PWM mode. Automatic 304*4882a593Smuzhiyun"Smart Guardian" mode control handling is only implemented for older chips 305*4882a593Smuzhiyun(see below.) However if you want to go for "manual mode" just write 1 to 306*4882a593SmuzhiyunpwmN_enable. 307*4882a593Smuzhiyun 308*4882a593SmuzhiyunIf you are only able to control the fan speed with very small PWM values, 309*4882a593Smuzhiyuntry lowering the PWM base frequency (pwm1_freq). Depending on the fan, 310*4882a593Smuzhiyunit may give you a somewhat greater control range. The same frequency is 311*4882a593Smuzhiyunused to drive all fan outputs, which is why pwm2_freq and pwm3_freq are 312*4882a593Smuzhiyunread-only. 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun 315*4882a593SmuzhiyunAutomatic fan speed control (old interface) 316*4882a593Smuzhiyun------------------------------------------- 317*4882a593Smuzhiyun 318*4882a593SmuzhiyunThe driver supports the old interface to automatic fan speed control 319*4882a593Smuzhiyunwhich is implemented by IT8705F chips up to revision F and IT8712F 320*4882a593Smuzhiyunchips up to revision G. 321*4882a593Smuzhiyun 322*4882a593SmuzhiyunThis interface implements 4 temperature vs. PWM output trip points. 323*4882a593SmuzhiyunThe PWM output of trip point 4 is always the maximum value (fan running 324*4882a593Smuzhiyunat full speed) while the PWM output of the other 3 trip points can be 325*4882a593Smuzhiyunfreely chosen. The temperature of all 4 trip points can be freely chosen. 326*4882a593SmuzhiyunAdditionally, trip point 1 has an hysteresis temperature attached, to 327*4882a593Smuzhiyunprevent fast switching between fan on and off. 328*4882a593Smuzhiyun 329*4882a593SmuzhiyunThe chip automatically computes the PWM output value based on the input 330*4882a593Smuzhiyuntemperature, based on this simple rule: if the temperature value is 331*4882a593Smuzhiyunbetween trip point N and trip point N+1 then the PWM output value is 332*4882a593Smuzhiyunthe one of trip point N. The automatic control mode is less flexible 333*4882a593Smuzhiyunthan the manual control mode, but it reacts faster, is more robust and 334*4882a593Smuzhiyundoesn't use CPU cycles. 335*4882a593Smuzhiyun 336*4882a593SmuzhiyunTrip points must be set properly before switching to automatic fan speed 337*4882a593Smuzhiyuncontrol mode. The driver will perform basic integrity checks before 338*4882a593Smuzhiyunactually switching to automatic control mode. 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun 341*4882a593SmuzhiyunTemperature offset attributes 342*4882a593Smuzhiyun----------------------------- 343*4882a593Smuzhiyun 344*4882a593SmuzhiyunThe driver supports temp[1-3]_offset sysfs attributes to adjust the reported 345*4882a593Smuzhiyuntemperature for thermal diodes or diode-connected thermal transistors. 346*4882a593SmuzhiyunIf a temperature sensor is configured for thermistors, the attribute values 347*4882a593Smuzhiyunare ignored. If the thermal sensor type is Intel PECI, the temperature offset 348*4882a593Smuzhiyunmust be programmed to the critical CPU temperature. 349