| [1112] | 1 | Kernel driver `it87.o' |
|---|
| 2 | ====================== |
|---|
| 3 | |
|---|
| [2790] | 4 | Status: Complete, stable |
|---|
| [1112] | 5 | |
|---|
| 6 | Supported chips: |
|---|
| 7 | * IT8705F |
|---|
| [3007] | 8 | Prefix: 'it87' |
|---|
| [3153] | 9 | Addresses scanned: ISA autodetected |
|---|
| [1112] | 10 | Datasheet: Publicly available at the ITE website |
|---|
| [3007] | 11 | http://www.ite.com.tw/ |
|---|
| [2914] | 12 | * IT8712F |
|---|
| [3007] | 13 | Prefix: 'it8712' |
|---|
| 14 | Addresses scanned: I2C 0x28 - 0x2f, ISA autodetected |
|---|
| [1112] | 15 | Datasheet: Publicly available at the ITE website |
|---|
| [3007] | 16 | http://www.ite.com.tw/ |
|---|
| 17 | * SiS950 [clone of IT8705F] |
|---|
| 18 | Prefix: 'it87' |
|---|
| [3153] | 19 | Addresses scanned: ISA autodetected |
|---|
| [2914] | 20 | Datasheet: No longer publicly available |
|---|
| [1112] | 21 | |
|---|
| [5042] | 22 | Author: Christophe Gauthron |
|---|
| [1112] | 23 | |
|---|
| 24 | |
|---|
| 25 | Module Parameters |
|---|
| 26 | ----------------- |
|---|
| 27 | |
|---|
| 28 | * force: short array (min = 1, max = 48) |
|---|
| 29 | List of adapter,address pairs to boldly assume to be present |
|---|
| 30 | * ignore: short array (min = 1, max = 48) |
|---|
| 31 | List of adapter,address pairs not to scan |
|---|
| 32 | * ignore_range: short array (min = 1, max = 48) |
|---|
| 33 | List of adapter,start-addr,end-addr triples not to scan |
|---|
| 34 | * probe: short array (min = 1, max = 48) |
|---|
| 35 | List of adapter,address pairs to scan additionally |
|---|
| 36 | * probe_range: short array (min = 1, max = 48) |
|---|
| 37 | List of adapter,start-addr,end-addr triples to scan additionally |
|---|
| [1146] | 38 | * update_vbat: integer 0 if vbat should report power on value, 1 if |
|---|
| 39 | vbat should be updated after each read. Default is 0. |
|---|
| 40 | On some boards the battery voltage is provided by either the battery or |
|---|
| 41 | the onboard power supply. Only the first reading at power on will be |
|---|
| 42 | the actual battery voltage (which the chip does automatically). On other |
|---|
| 43 | boards the battery voltage is always fed to the chip so can be read at |
|---|
| 44 | any time. Excessive reading may decrease battery life but no information |
|---|
| 45 | is given in the datasheet. |
|---|
| [2320] | 46 | * reset: integer 1 if the registers of the chip should be reset at |
|---|
| [2033] | 47 | module load time, 0 to not reset the registers. Default is 0. |
|---|
| [1112] | 48 | |
|---|
| [2790] | 49 | |
|---|
| [1112] | 50 | Description |
|---|
| 51 | ----------- |
|---|
| 52 | |
|---|
| [2914] | 53 | This driver implements support for the IT8705F, IT8712F and SiS950 chips. |
|---|
| [1112] | 54 | |
|---|
| 55 | These chips are 'Super I/O chips', supporting floppy disks, infrared ports, |
|---|
| 56 | joysticks and other miscellaneous stuff. For hardware monitoring, |
|---|
| 57 | they include an 'environmnent controller' with 3 temperature sensors, |
|---|
| [2790] | 58 | 3 fan rotation speed sensors, 8 voltage sensors, and associated alarms. |
|---|
| [2914] | 59 | The IT8712F additionally features VID inputs. |
|---|
| [1112] | 60 | |
|---|
| [3000] | 61 | Temperatures are measured in degrees Celsius. An alarm is triggered once |
|---|
| [3007] | 62 | when the Overtemperature Shutdown limit is crossed. |
|---|
| [1112] | 63 | |
|---|
| [2790] | 64 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is |
|---|
| 65 | triggered if the rotation speed has dropped below a programmable limit. Fan |
|---|
| [1112] | 66 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give |
|---|
| [3007] | 67 | the readings more range or accuracy. Not all RPM values can accurately be |
|---|
| 68 | represented, so some rounding is done. With a divider of 2, the lowest |
|---|
| 69 | representable value is around 2600 RPM. |
|---|
| [1112] | 70 | |
|---|
| 71 | Voltage sensors (also known as IN sensors) report their values in volts. |
|---|
| 72 | An alarm is triggered if the voltage has crossed a programmable minimum |
|---|
| 73 | or maximum limit. Note that minimum in this case always means 'closest to |
|---|
| 74 | zero'; this is important for negative voltage measurements. All voltage |
|---|
| 75 | inputs can measure voltages between 0 and 4.08 volts, with a resolution |
|---|
| [1146] | 76 | of 0.016 volt. The battery voltage in8 does not have limit registers. |
|---|
| [1112] | 77 | |
|---|
| 78 | The VID lines (IT8712F only) encode the core voltage value: the voltage level |
|---|
| 79 | your processor should work with. This is hardcoded by the mainboard and/or |
|---|
| 80 | processor itself. It is a value in volts. |
|---|
| 81 | |
|---|
| 82 | If an alarm triggers, it will remain triggered until the hardware register |
|---|
| 83 | is read at least once. This means that the cause for the alarm may |
|---|
| 84 | already have disappeared! Note that in the current implementation, all |
|---|
| 85 | hardware registers are read whenever any data is read (unless it is less |
|---|
| 86 | than 1.5 seconds since the last update). This means that you can easily |
|---|
| 87 | miss once-only alarms. |
|---|
| 88 | |
|---|
| 89 | The IT87xx only updates its values each 1.5 seconds; reading it more often |
|---|
| 90 | will do no harm, but will return 'old' values. |
|---|
| 91 | |
|---|
| [2053] | 92 | The sensor type can be set at runtime as of release 2.8.2. |
|---|
| [2307] | 93 | To change sensor N to a thermistor, 'echo 2 > sensorN' |
|---|
| 94 | where N is 1, 2, or 3. |
|---|
| 95 | To change sensor N to a thermal diode, 'echo 3 > sensorN'. |
|---|
| 96 | Give 0 for unused sensor. Any other value is invalid. |
|---|
| [2201] | 97 | To configure this at startup, put the following lines in the it87 section |
|---|
| 98 | of /etc/sensors.conf. |
|---|
| [2790] | 99 | (2 = thermistor; 3 = thermal diode; 0 = unused) |
|---|
| 100 | set sensor1 3 |
|---|
| 101 | set sensor2 3 |
|---|
| 102 | set sensor3 3 |
|---|
| 103 | |
|---|
| [2307] | 104 | If you set a sensor to 0, you'll also want to ignore its value: |
|---|
| [2790] | 105 | ignore tempN |
|---|
| [2053] | 106 | |
|---|
| [2033] | 107 | The fan speed control features can be enabled by setting the bits 0-2 of |
|---|
| 108 | the fan_ctl register to 1. (Note: bits 6-4 of this register must be set to |
|---|
| 109 | 1 to enable the fan monitoring). |
|---|
| [2790] | 110 | 0x40 : enable fan speed monitoring for fan3 |
|---|
| 111 | 0x20 : enable fan speed monitoring for fan2 |
|---|
| 112 | 0x10 : enable fan speed monitoring for fan1 |
|---|
| 113 | 0x04 : enable fan smart guardian mode for fan3 |
|---|
| 114 | 0x02 : enable fan smart guardian mode for fan2 |
|---|
| 115 | 0x01 : enable fan smart guardian mode for fan1 |
|---|
| 116 | |
|---|
| 117 | If a fan's smart guardian bit is not set this fan is in on-off mode. |
|---|
| 118 | It can be switched on or off by setting/clearing the corresponding bit 0-2 |
|---|
| [2033] | 119 | of the second fan control register fan_on_off. This register has no effect if |
|---|
| 120 | a fan is in smart guardian mode. |
|---|
| [2790] | 121 | 0x04 : fan3 is on |
|---|
| 122 | 0x02 : fan2 is on |
|---|
| 123 | 0x01 : fan1 is on |
|---|
| 124 | |
|---|
| 125 | Bit 7 of the pwm[1-3] registers enables/disables the chip's automatic |
|---|
| [2033] | 126 | temperature control mode for the specified fan. If Bit 7 is set the bits |
|---|
| 127 | 1 and 0 encode the number of the temperature sensor used for this feature. |
|---|
| 128 | Possible register values are: |
|---|
| [2790] | 129 | 0x00-0x7f direct power control for the fan speed |
|---|
| 130 | 0x80 automatic smart guardian mode use temperature sensor 1 |
|---|
| 131 | 0x81 automatic smart guardian mode use temperature sensor 2 |
|---|
| 132 | 0x82 automatic smart guardian mode use temperature sensor 3 |
|---|
| 133 | |
|---|
| [2033] | 134 | In automatic smart guardian mode pwm values for low, medium and high speed |
|---|
| 135 | can be set in sg_pwm[1-3]. The temperature limits for fan off, low, medium, |
|---|
| [2790] | 136 | hi speed and over temperature are set in sg_tl[1-3]. While the sensor's |
|---|
| [2033] | 137 | temperature is between the low and medium speed value the fan will run in |
|---|
| [2790] | 138 | low speed. When the sensor's temperature is between the medium and high speed |
|---|
| 139 | value the fan spins in medium speed. When the sensor's temperature is between |
|---|
| [2033] | 140 | the high speed and over temperature value the fan spins in high speed. |
|---|
| [2790] | 141 | If the sensor's temperature is higher than the over temperature limit the |
|---|
| [2033] | 142 | fan will spin with the highest possible speed. |
|---|
| [2790] | 143 | |
|---|
| [2033] | 144 | Example: |
|---|
| 145 | The preconfigured (BIOS set) values of the Shuttle XPC SN41G2 Barebone. |
|---|
| 146 | The MB uses temp2 to monitor the CPU temperature and fan3 as the fan for their |
|---|
| 147 | special ICE heatpipe cooling system. |
|---|
| [2790] | 148 | $ cat fan_ctl |
|---|
| 149 | 116 |
|---|
| 150 | $ cat tan_on_off |
|---|
| 151 | 215 |
|---|
| 152 | $ cat pwm3 |
|---|
| 153 | 129 |
|---|
| 154 | $ cat sg_tl3 |
|---|
| 155 | 16.0 16.0 48.0 54.0 58.0 |
|---|
| 156 | $ cat sg_pwm3 |
|---|
| 157 | 3 4 9 |
|---|
| 158 | |
|---|
| [2033] | 159 | Explanation: |
|---|
| [2790] | 160 | fan_ctl -> 116 = 0x74 = 01110100 : fan monitoring on for all fans, |
|---|
| 161 | and fan3 is in smart guardian mode. |
|---|
| 162 | fan_on_off -> 215 = 0xd7 =11010111 : all fans are on this setting is |
|---|
| 163 | ignored for fan3 which is in smart guardian mode |
|---|
| 164 | pwm3 -> 129 = 0x81 = 10000001 : fan3 is in automatic mode and uses |
|---|
| 165 | temp2 for speed control |
|---|
| 166 | sg_tl3 -> 16.0 16.0 48.0 54.0 58.0 : off, low, med, high, and |
|---|
| 167 | over temperature limits of fan3 |
|---|
| 168 | sg_pwm3 -> 3 4 9 : pwm values for low, medium and high fan speed of fan3. |
|---|
| [1112] | 169 | |
|---|
| [2790] | 170 | |
|---|
| 171 | |
|---|
| [1112] | 172 | Chip features |
|---|
| 173 | ------------- |
|---|
| 174 | |
|---|
| 175 | Chip `it87` |
|---|
| 176 | LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE |
|---|
| 177 | in0 NONE NONE R 2 |
|---|
| 178 | in1 NONE NONE R 2 |
|---|
| 179 | in2 NONE NONE R 2 |
|---|
| 180 | in3 NONE NONE R 2 |
|---|
| 181 | in4 NONE NONE R 2 |
|---|
| 182 | in5 NONE NONE R 2 |
|---|
| 183 | in6 NONE NONE R 2 |
|---|
| 184 | in7 NONE NONE R 2 |
|---|
| [1146] | 185 | in8 NONE NONE R 2 |
|---|
| [1112] | 186 | in0_min in0 in0 RW 2 |
|---|
| 187 | in1_min in1 in1 RW 2 |
|---|
| 188 | in2_min in2 in2 RW 2 |
|---|
| 189 | in3_min in3 in3 RW 2 |
|---|
| 190 | in4_min in4 in4 RW 2 |
|---|
| 191 | in5_min in5 in5 RW 2 |
|---|
| 192 | in6_min in6 in6 RW 2 |
|---|
| 193 | in7_min in6 in6 RW 2 |
|---|
| 194 | in0_max in0 in0 RW 2 |
|---|
| 195 | in1_max in1 in1 RW 2 |
|---|
| 196 | in2_max in2 in2 RW 2 |
|---|
| 197 | in3_max in3 in3 RW 2 |
|---|
| 198 | in4_max in4 in4 RW 2 |
|---|
| 199 | in5_max in5 in5 RW 2 |
|---|
| 200 | in6_max in6 in6 RW 2 |
|---|
| 201 | in7_max in6 in6 RW 2 |
|---|
| 202 | fan1 NONE NONE R 0 |
|---|
| 203 | fan2 NONE NONE R 0 |
|---|
| 204 | fan3 NONE NONE R 0 |
|---|
| 205 | fan1_min fan1 fan1 RW 0 |
|---|
| 206 | fan2_min fan2 fan2 RW 0 |
|---|
| 207 | fan3_min fan3 fan3 RW 0 |
|---|
| 208 | temp1 NONE NONE R 1 |
|---|
| 209 | temp2 NONE NONE R 1 |
|---|
| 210 | temp3 NONE NONE R 1 |
|---|
| [2230] | 211 | temp1_low temp temp RW 1 |
|---|
| 212 | temp1_over temp temp RW 1 |
|---|
| 213 | temp2_low temp temp RW 1 |
|---|
| 214 | temp2_over temp temp RW 1 |
|---|
| 215 | temp3_low temp temp RW 1 |
|---|
| 216 | temp3_over temp temp RW 1 |
|---|
| [1112] | 217 | vid NONE NONE R 2 |
|---|
| 218 | fan1_div fan1 NONE RW 0 |
|---|
| 219 | fan2_div fan2 NONE RW 0 |
|---|
| 220 | fan3_div fan3 NONE R 0 |
|---|
| 221 | alarms_vin NONE NONE R 0 |
|---|
| 222 | alarms_fan NONE NONE R 0 |
|---|
| 223 | alarms_temp NONE NONE R 0 |
|---|
| 224 | |
|---|
| 225 | LABEL FEATURE SYMBOL SYSCTL FILE:OFFSET |
|---|
| 226 | in0 SENSORS_IT87_IN0 in0:3 |
|---|
| 227 | in1 SENSORS_IT87_IN1 in1:3 |
|---|
| 228 | in2 SENSORS_IT87_IN2 in2:3 |
|---|
| 229 | in3 SENSORS_IT87_IN3 in3:3 |
|---|
| 230 | in4 SENSORS_IT87_IN4 in4:3 |
|---|
| 231 | in5 SENSORS_IT87_IN5 in5:3 |
|---|
| 232 | in6 SENSORS_IT87_IN6 in6:3 |
|---|
| 233 | in7 SENSORS_IT87_IN7 in7:3 |
|---|
| 234 | in0_min SENSORS_IT87_IN0_MIN in0:1 |
|---|
| 235 | in1_min SENSORS_IT87_IN1_MIN in1:1 |
|---|
| 236 | in2_min SENSORS_IT87_IN2_MIN in2:1 |
|---|
| 237 | in3_min SENSORS_IT87_IN3_MIN in3:1 |
|---|
| 238 | in4_min SENSORS_IT87_IN4_MIN in4:1 |
|---|
| 239 | in5_min SENSORS_IT87_IN5_MIN in5:1 |
|---|
| 240 | in6_min SENSORS_IT87_IN6_MIN in6:1 |
|---|
| 241 | in7_min SENSORS_IT87_IN7_MIN in7:1 |
|---|
| 242 | in0_max SENSORS_IT87_IN0_MAX in0:2 |
|---|
| 243 | in1_max SENSORS_IT87_IN1_MAX in1:2 |
|---|
| 244 | in2_max SENSORS_IT87_IN2_MAX in2:2 |
|---|
| 245 | in3_max SENSORS_IT87_IN3_MAX in3:2 |
|---|
| 246 | in4_max SENSORS_IT87_IN4_MAX in4:2 |
|---|
| 247 | in5_max SENSORS_IT87_IN5_MAX in5:2 |
|---|
| 248 | in6_max SENSORS_IT87_IN6_MAX in6:2 |
|---|
| 249 | in7_max SENSORS_IT87_IN7_MAX in7:2 |
|---|
| 250 | fan1 SENSORS_IT87_FAN1 fan1:2 |
|---|
| 251 | fan2 SENSORS_IT87_FAN2 fan2:2 |
|---|
| 252 | fan3 SENSORS_IT87_FAN3 fan3:2 |
|---|
| 253 | fan1_min SENSORS_IT87_FAN1_MIN fan1:1 |
|---|
| 254 | fan2_min SENSORS_IT87_FAN2_MIN fan2:1 |
|---|
| 255 | fan3_min SENSORS_IT87_FAN3_MIN fan3:1 |
|---|
| [2230] | 256 | temp1 SENSORS_IT87_TEMP1 temp1:3 |
|---|
| 257 | temp2 SENSORS_IT87_TEMP2 temp2:3 |
|---|
| 258 | temp3 SENSORS_IT87_TEMP3 temp3:3 |
|---|
| 259 | temp1_low SENSORS_IT87_TEMP1_LOW temp1:2 |
|---|
| 260 | temp1_over SENSORS_IT87_TEMP1_HIGH temp1:1 |
|---|
| 261 | temp2_low SENSORS_IT87_TEMP2_LOW temp2:2 |
|---|
| 262 | temp2_over SENSORS_IT87_TEMP2_HIGH temp2:1 |
|---|
| 263 | temp3_low SENSORS_IT87_TEMP3_LOW temp3:2 |
|---|
| 264 | temp3_over SENSORS_IT87_TEMP3_HIGH temp3:1 |
|---|
| [1112] | 265 | vid SENSORS_IT87_VID vid:1 |
|---|
| 266 | fan1_div SENSORS_IT87_FAN1_DIV fan_div:1 |
|---|
| 267 | fan2_div SENSORS_IT87_FAN2_DIV fan_div:2 |
|---|
| 268 | fan3_div SENSORS_IT87_FAN3_DIV fan_div:3 |
|---|
| 269 | alarms_fan SENSORS_IT87_ALARMS_FAN alarms_fan:1 |
|---|
| 270 | alarms_vin SENSORS_IT87_ALARMS_VIN alarms_vin:1 |
|---|
| 271 | alarms_temp SENSORS_IT87_ALARMS_TEMP alarms_temp:1 |
|---|
| 272 | |
|---|
| 273 | |
|---|