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