| 1 | Kernel driver `lm78.o' |
|---|
| 2 | ====================== |
|---|
| 3 | |
|---|
| 4 | Status: Complete and well-tested |
|---|
| 5 | |
|---|
| 6 | Supported chips: |
|---|
| 7 | * National Semiconductors LM78 |
|---|
| 8 | Prefix `lm78' |
|---|
| 9 | Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) |
|---|
| 10 | Datasheet: Publicly available at the National Semiconductors website |
|---|
| 11 | * National Semiconductors LM78-J |
|---|
| 12 | Prefix `lm78-j' |
|---|
| 13 | Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) |
|---|
| 14 | Datasheet: Publicly available at the National Semiconductors website |
|---|
| 15 | * National Semiconductors LM79 |
|---|
| 16 | Prefix `lm79' |
|---|
| 17 | Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports) |
|---|
| 18 | Datasheet: Publicly available at the National Semiconductors website |
|---|
| 19 | |
|---|
| 20 | Author: Frodo Looijaard <frodol@dds.nl> |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | Module Parameters |
|---|
| 24 | ----------------- |
|---|
| 25 | |
|---|
| 26 | * force: short array (min = 1, max = 48) |
|---|
| 27 | List of adapter,address pairs to boldly assume to be present |
|---|
| 28 | * force_lm78: short array (min = 1, max = 48) |
|---|
| 29 | List of adapter,address pairs which are unquestionably assumed to contain |
|---|
| 30 | a `lm78' chip |
|---|
| 31 | * force_lm78j: short array (min = 1, max = 48) |
|---|
| 32 | List of adapter,address pairs which are unquestionably assumed to contain |
|---|
| 33 | a `lm78j' chip |
|---|
| 34 | * force_lm79: short array (min = 1, max = 48) |
|---|
| 35 | List of adapter,address pairs which are unquestionably assumed to contain |
|---|
| 36 | a `lm79' chip |
|---|
| 37 | * ignore: short array (min = 1, max = 48) |
|---|
| 38 | List of adapter,address pairs not to scan |
|---|
| 39 | * ignore_range: short array (min = 1, max = 48) |
|---|
| 40 | List of adapter,start-addr,end-addr triples not to scan |
|---|
| 41 | * probe: short array (min = 1, max = 48) |
|---|
| 42 | List of adapter,address pairs to scan additionally |
|---|
| 43 | * probe_range: short array (min = 1, max = 48) |
|---|
| 44 | List of adapter,start-addr,end-addr triples to scan additionally |
|---|
| 45 | |
|---|
| 46 | |
|---|
| 47 | Description |
|---|
| 48 | ----------- |
|---|
| 49 | |
|---|
| 50 | This driver implements support for the National Semiconductors LM78, LM78-J |
|---|
| 51 | and LM79. They are described as `Microprocessor System Hardware Monitors'. |
|---|
| 52 | |
|---|
| 53 | There is almost no difference between the three supported chips. Functionally, |
|---|
| 54 | the LM78 and LM78-J are exactly identical. The LM79 has one more VID line, |
|---|
| 55 | which is used to report the lower voltages newer Pentium processors use. |
|---|
| 56 | From here on, LM7* means either of these three types. |
|---|
| 57 | |
|---|
| 58 | The LM7* implements one temperature sensor, three FAN rotation speed sensors, |
|---|
| 59 | seven voltage sensors, VID lines, alarms, and some miscellaneous stuff. |
|---|
| 60 | |
|---|
| 61 | Temperatures are measured in degrees Celsius. An alarm is triggered once |
|---|
| 62 | when the Overtemperature Shutdown limit is crossed; it is triggered again |
|---|
| 63 | as soon as it drops below the Hysteresis value. A more useful behaviour |
|---|
| 64 | can be found by setting the Hysteresis value to +127 degrees Celsius; in |
|---|
| 65 | this case, alarms are issued during all the time when the actual temperature |
|---|
| 66 | is above the Overtemperature Shutdown value. Measurements are guaranteed |
|---|
| 67 | between -55 and +125 degrees, with a resolution of 1 degree. |
|---|
| 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. |
|---|
| 84 | |
|---|
| 85 | The VID lines encode the core voltage value: the voltage level your processor |
|---|
| 86 | should work with. This is hardcoded by the mainboard and/or processor itself. |
|---|
| 87 | It is a value in volts. When it is unconnected, you will often find the |
|---|
| 88 | value 3.50 V here. |
|---|
| 89 | |
|---|
| 90 | In addition to the alarms described above, there are a couple of additional |
|---|
| 91 | ones. There is a BTI alarm, which gets triggered when an external chip has |
|---|
| 92 | crossed its limits. Usually, this is connected to all LM75 chips; if at |
|---|
| 93 | least one crosses its limits, this bit gets set. The CHAS alarm triggers |
|---|
| 94 | if your computer case is open. The FIFO alarms should never trigger; it |
|---|
| 95 | indicates an internal error. The SMI_IN alarm indicates some other chip |
|---|
| 96 | has triggered an SMI interrupt. As we do not use SMI interrupts at all, |
|---|
| 97 | this condition usually indicates there is a problem with some other |
|---|
| 98 | device. |
|---|
| 99 | |
|---|
| 100 | If an alarm triggers, it will remain triggered until the hardware register |
|---|
| 101 | is read at least once. This means that the cause for the alarm may |
|---|
| 102 | already have disappeared! Note that in the current implementation, all |
|---|
| 103 | hardware registers are read whenever any data is read (unless it is less |
|---|
| 104 | than 1.5 seconds since the last update). This means that you can easily |
|---|
| 105 | miss once-only alarms. |
|---|
| 106 | |
|---|
| 107 | The LM7* only updates its values each 1.5 seconds; reading it more often |
|---|
| 108 | will do no harm, but will return 'old' values. |
|---|
| 109 | |
|---|
| 110 | |
|---|
| 111 | Chip features |
|---|
| 112 | ------------- |
|---|
| 113 | |
|---|
| 114 | Chip `lm78' |
|---|
| 115 | LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE |
|---|
| 116 | in0 NONE NONE R 2 |
|---|
| 117 | in1 NONE NONE R 2 |
|---|
| 118 | in2 NONE NONE R 2 |
|---|
| 119 | in3 NONE NONE R 2 |
|---|
| 120 | in4 NONE NONE R 2 |
|---|
| 121 | in5 NONE NONE R 2 |
|---|
| 122 | in6 NONE NONE R 2 |
|---|
| 123 | in0_min in0 in0 RW 2 |
|---|
| 124 | in1_min in1 in1 RW 2 |
|---|
| 125 | in2_min in2 in2 RW 2 |
|---|
| 126 | in3_min in3 in3 RW 2 |
|---|
| 127 | in4_min in4 in4 RW 2 |
|---|
| 128 | in5_min in5 in5 RW 2 |
|---|
| 129 | in6_min in6 in6 RW 2 |
|---|
| 130 | in0_max in0 in0 RW 2 |
|---|
| 131 | in1_max in1 in1 RW 2 |
|---|
| 132 | in2_max in2 in2 RW 2 |
|---|
| 133 | in3_max in3 in3 RW 2 |
|---|
| 134 | in4_max in4 in4 RW 2 |
|---|
| 135 | in5_max in5 in5 RW 2 |
|---|
| 136 | in6_max in6 in6 RW 2 |
|---|
| 137 | fan1 NONE NONE R 0 |
|---|
| 138 | fan2 NONE NONE R 0 |
|---|
| 139 | fan3 NONE NONE R 0 |
|---|
| 140 | fan1_min fan1 fan1 RW 0 |
|---|
| 141 | fan2_min fan2 fan2 RW 0 |
|---|
| 142 | fan3_min fan3 fan3 RW 0 |
|---|
| 143 | temp NONE NONE R 1 |
|---|
| 144 | temp_hyst temp temp RW 1 |
|---|
| 145 | temp_over temp temp RW 1 |
|---|
| 146 | vid NONE NONE R 2 |
|---|
| 147 | fan1_div fan1 NONE RW 0 |
|---|
| 148 | fan2_div fan2 NONE RW 0 |
|---|
| 149 | fan3_div fan3 NONE R 0 |
|---|
| 150 | alarms NONE NONE R 0 |
|---|
| 151 | |
|---|
| 152 | LABEL FEATURE SYMBOL SYSCTL FILE:OFFSET |
|---|
| 153 | in0 SENSORS_LM78_IN0 in0:3 |
|---|
| 154 | in1 SENSORS_LM78_IN1 in1:3 |
|---|
| 155 | in2 SENSORS_LM78_IN2 in2:3 |
|---|
| 156 | in3 SENSORS_LM78_IN3 in3:3 |
|---|
| 157 | in4 SENSORS_LM78_IN4 in4:3 |
|---|
| 158 | in5 SENSORS_LM78_IN5 in5:3 |
|---|
| 159 | in6 SENSORS_LM78_IN6 in6:3 |
|---|
| 160 | in0_min SENSORS_LM78_IN0_MIN in0:1 |
|---|
| 161 | in1_min SENSORS_LM78_IN1_MIN in1:1 |
|---|
| 162 | in2_min SENSORS_LM78_IN2_MIN in2:1 |
|---|
| 163 | in3_min SENSORS_LM78_IN3_MIN in3:1 |
|---|
| 164 | in4_min SENSORS_LM78_IN4_MIN in4:1 |
|---|
| 165 | in5_min SENSORS_LM78_IN5_MIN in5:1 |
|---|
| 166 | in6_min SENSORS_LM78_IN6_MIN in6:1 |
|---|
| 167 | in0_max SENSORS_LM78_IN0_MAX in0:2 |
|---|
| 168 | in1_max SENSORS_LM78_IN1_MAX in1:2 |
|---|
| 169 | in2_max SENSORS_LM78_IN2_MAX in2:2 |
|---|
| 170 | in3_max SENSORS_LM78_IN3_MAX in3:2 |
|---|
| 171 | in4_max SENSORS_LM78_IN4_MAX in4:2 |
|---|
| 172 | in5_max SENSORS_LM78_IN5_MAX in5:2 |
|---|
| 173 | in6_max SENSORS_LM78_IN6_MAX in6:2 |
|---|
| 174 | fan1 SENSORS_LM78_FAN1 fan1:2 |
|---|
| 175 | fan2 SENSORS_LM78_FAN2 fan2:2 |
|---|
| 176 | fan3 SENSORS_LM78_FAN3 fan3:2 |
|---|
| 177 | fan1_min SENSORS_LM78_FAN1_MIN fan1:1 |
|---|
| 178 | fan2_min SENSORS_LM78_FAN2_MIN fan2:1 |
|---|
| 179 | fan3_min SENSORS_LM78_FAN3_MIN fan3:1 |
|---|
| 180 | temp SENSORS_LM78_TEMP temp:3 |
|---|
| 181 | temp_hyst SENSORS_LM78_TEMP_HYST temp:2 |
|---|
| 182 | temp_over SENSORS_LM78_TEMP_OVER temp:1 |
|---|
| 183 | vid SENSORS_LM78_VID vid:1 |
|---|
| 184 | fan1_div SENSORS_LM78_FAN1_DIV fan_div:1 |
|---|
| 185 | fan2_div SENSORS_LM78_FAN2_DIV fan_div:2 |
|---|
| 186 | fan3_div SENSORS_LM78_FAN3_DIV fan_div:3 |
|---|
| 187 | alarms SENSORS_LM78_ALARMS alarms:1 |
|---|
| 188 | |
|---|
| 189 | |
|---|
| 190 | Chip `lm78-j' |
|---|
| 191 | LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE |
|---|
| 192 | in0 NONE NONE R 2 |
|---|
| 193 | in1 NONE NONE R 2 |
|---|
| 194 | in2 NONE NONE R 2 |
|---|
| 195 | in3 NONE NONE R 2 |
|---|
| 196 | in4 NONE NONE R 2 |
|---|
| 197 | in5 NONE NONE R 2 |
|---|
| 198 | in6 NONE NONE R 2 |
|---|
| 199 | in0_min in0 in0 RW 2 |
|---|
| 200 | in1_min in1 in1 RW 2 |
|---|
| 201 | in2_min in2 in2 RW 2 |
|---|
| 202 | in3_min in3 in3 RW 2 |
|---|
| 203 | in4_min in4 in4 RW 2 |
|---|
| 204 | in5_min in5 in5 RW 2 |
|---|
| 205 | in6_min in6 in6 RW 2 |
|---|
| 206 | in0_max in0 in0 RW 2 |
|---|
| 207 | in1_max in1 in1 RW 2 |
|---|
| 208 | in2_max in2 in2 RW 2 |
|---|
| 209 | in3_max in3 in3 RW 2 |
|---|
| 210 | in4_max in4 in4 RW 2 |
|---|
| 211 | in5_max in5 in5 RW 2 |
|---|
| 212 | in6_max in6 in6 RW 2 |
|---|
| 213 | fan1 NONE NONE R 0 |
|---|
| 214 | fan2 NONE NONE R 0 |
|---|
| 215 | fan3 NONE NONE R 0 |
|---|
| 216 | fan1_min fan1 fan1 RW 0 |
|---|
| 217 | fan2_min fan2 fan2 RW 0 |
|---|
| 218 | fan3_min fan3 fan3 RW 0 |
|---|
| 219 | temp NONE NONE R 1 |
|---|
| 220 | temp_hyst temp temp RW 1 |
|---|
| 221 | temp_over temp temp RW 1 |
|---|
| 222 | vid NONE NONE R 2 |
|---|
| 223 | fan1_div fan1 NONE RW 0 |
|---|
| 224 | fan2_div fan2 NONE RW 0 |
|---|
| 225 | fan3_div fan3 NONE R 0 |
|---|
| 226 | alarms NONE NONE R 0 |
|---|
| 227 | |
|---|
| 228 | LABEL FEATURE SYMBOL SYSCTL FILE:OFFSET |
|---|
| 229 | in0 SENSORS_LM78J_IN0 in0:3 |
|---|
| 230 | in1 SENSORS_LM78J_IN1 in1:3 |
|---|
| 231 | in2 SENSORS_LM78J_IN2 in2:3 |
|---|
| 232 | in3 SENSORS_LM78J_IN3 in3:3 |
|---|
| 233 | in4 SENSORS_LM78J_IN4 in4:3 |
|---|
| 234 | in5 SENSORS_LM78J_IN5 in5:3 |
|---|
| 235 | in6 SENSORS_LM78J_IN6 in6:3 |
|---|
| 236 | in0_min SENSORS_LM78J_IN0_MIN in0:1 |
|---|
| 237 | in1_min SENSORS_LM78J_IN1_MIN in1:1 |
|---|
| 238 | in2_min SENSORS_LM78J_IN2_MIN in2:1 |
|---|
| 239 | in3_min SENSORS_LM78J_IN3_MIN in3:1 |
|---|
| 240 | in4_min SENSORS_LM78J_IN4_MIN in4:1 |
|---|
| 241 | in5_min SENSORS_LM78J_IN5_MIN in5:1 |
|---|
| 242 | in6_min SENSORS_LM78J_IN6_MIN in6:1 |
|---|
| 243 | in0_max SENSORS_LM78J_IN0_MAX in0:2 |
|---|
| 244 | in1_max SENSORS_LM78J_IN1_MAX in1:2 |
|---|
| 245 | in2_max SENSORS_LM78J_IN2_MAX in2:2 |
|---|
| 246 | in3_max SENSORS_LM78J_IN3_MAX in3:2 |
|---|
| 247 | in4_max SENSORS_LM78J_IN4_MAX in4:2 |
|---|
| 248 | in5_max SENSORS_LM78J_IN5_MAX in5:2 |
|---|
| 249 | in6_max SENSORS_LM78J_IN6_MAX in6:2 |
|---|
| 250 | fan1 SENSORS_LM78J_FAN1 fan1:2 |
|---|
| 251 | fan2 SENSORS_LM78J_FAN2 fan2:2 |
|---|
| 252 | fan3 SENSORS_LM78J_FAN3 fan3:2 |
|---|
| 253 | fan1_min SENSORS_LM78J_FAN1_MIN fan1:1 |
|---|
| 254 | fan2_min SENSORS_LM78J_FAN2_MIN fan2:1 |
|---|
| 255 | fan3_min SENSORS_LM78J_FAN3_MIN fan3:1 |
|---|
| 256 | temp SENSORS_LM78J_TEMP temp:3 |
|---|
| 257 | temp_hyst SENSORS_LM78J_TEMP_HYST temp:2 |
|---|
| 258 | temp_over SENSORS_LM78J_TEMP_OVER temp:1 |
|---|
| 259 | vid SENSORS_LM78J_VID vid:1 |
|---|
| 260 | fan1_div SENSORS_LM78J_FAN1_DIV fan_div:1 |
|---|
| 261 | fan2_div SENSORS_LM78J_FAN2_DIV fan_div:2 |
|---|
| 262 | fan3_div SENSORS_LM78J_FAN3_DIV fan_div:3 |
|---|
| 263 | alarms SENSORS_LM78J_ALARMS alarms:1 |
|---|
| 264 | |
|---|
| 265 | |
|---|
| 266 | Chip `lm79' |
|---|
| 267 | LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE |
|---|
| 268 | in0 NONE NONE R 2 |
|---|
| 269 | in1 NONE NONE R 2 |
|---|
| 270 | in2 NONE NONE R 2 |
|---|
| 271 | in3 NONE NONE R 2 |
|---|
| 272 | in4 NONE NONE R 2 |
|---|
| 273 | in5 NONE NONE R 2 |
|---|
| 274 | in6 NONE NONE R 2 |
|---|
| 275 | in0_min in0 in0 RW 2 |
|---|
| 276 | in1_min in1 in1 RW 2 |
|---|
| 277 | in2_min in2 in2 RW 2 |
|---|
| 278 | in3_min in3 in3 RW 2 |
|---|
| 279 | in4_min in4 in4 RW 2 |
|---|
| 280 | in5_min in5 in5 RW 2 |
|---|
| 281 | in6_min in6 in6 RW 2 |
|---|
| 282 | in0_max in0 in0 RW 2 |
|---|
| 283 | in1_max in1 in1 RW 2 |
|---|
| 284 | in2_max in2 in2 RW 2 |
|---|
| 285 | in3_max in3 in3 RW 2 |
|---|
| 286 | in4_max in4 in4 RW 2 |
|---|
| 287 | in5_max in5 in5 RW 2 |
|---|
| 288 | in6_max in6 in6 RW 2 |
|---|
| 289 | fan1 NONE NONE R 0 |
|---|
| 290 | fan2 NONE NONE R 0 |
|---|
| 291 | fan3 NONE NONE R 0 |
|---|
| 292 | fan1_min fan1 fan1 RW 0 |
|---|
| 293 | fan2_min fan2 fan2 RW 0 |
|---|
| 294 | fan3_min fan3 fan3 RW 0 |
|---|
| 295 | temp NONE NONE R 1 |
|---|
| 296 | temp_hyst temp temp RW 1 |
|---|
| 297 | temp_over temp temp RW 1 |
|---|
| 298 | vid NONE NONE R 2 |
|---|
| 299 | fan1_div fan1 NONE RW 0 |
|---|
| 300 | fan2_div fan2 NONE RW 0 |
|---|
| 301 | fan3_div fan3 NONE R 0 |
|---|
| 302 | alarms NONE NONE R 0 |
|---|
| 303 | |
|---|
| 304 | LABEL FEATURE SYMBOL SYSCTL FILE:OFFSET |
|---|
| 305 | in0 SENSORS_LM79_IN0 in0:3 |
|---|
| 306 | in1 SENSORS_LM79_IN1 in1:3 |
|---|
| 307 | in2 SENSORS_LM79_IN2 in2:3 |
|---|
| 308 | in3 SENSORS_LM79_IN3 in3:3 |
|---|
| 309 | in4 SENSORS_LM79_IN4 in4:3 |
|---|
| 310 | in5 SENSORS_LM79_IN5 in5:3 |
|---|
| 311 | in6 SENSORS_LM79_IN6 in6:3 |
|---|
| 312 | in0_min SENSORS_LM79_IN0_MIN in0:1 |
|---|
| 313 | in1_min SENSORS_LM79_IN1_MIN in1:1 |
|---|
| 314 | in2_min SENSORS_LM79_IN2_MIN in2:1 |
|---|
| 315 | in3_min SENSORS_LM79_IN3_MIN in3:1 |
|---|
| 316 | in4_min SENSORS_LM79_IN4_MIN in4:1 |
|---|
| 317 | in5_min SENSORS_LM79_IN5_MIN in5:1 |
|---|
| 318 | in6_min SENSORS_LM79_IN6_MIN in6:1 |
|---|
| 319 | in0_max SENSORS_LM79_IN0_MAX in0:2 |
|---|
| 320 | in1_max SENSORS_LM79_IN1_MAX in1:2 |
|---|
| 321 | in2_max SENSORS_LM79_IN2_MAX in2:2 |
|---|
| 322 | in3_max SENSORS_LM79_IN3_MAX in3:2 |
|---|
| 323 | in4_max SENSORS_LM79_IN4_MAX in4:2 |
|---|
| 324 | in5_max SENSORS_LM79_IN5_MAX in5:2 |
|---|
| 325 | in6_max SENSORS_LM79_IN6_MAX in6:2 |
|---|
| 326 | fan1 SENSORS_LM79_FAN1 fan1:2 |
|---|
| 327 | fan2 SENSORS_LM79_FAN2 fan2:2 |
|---|
| 328 | fan3 SENSORS_LM79_FAN3 fan3:2 |
|---|
| 329 | fan1_min SENSORS_LM79_FAN1_MIN fan1:1 |
|---|
| 330 | fan2_min SENSORS_LM79_FAN2_MIN fan2:1 |
|---|
| 331 | fan3_min SENSORS_LM79_FAN3_MIN fan3:1 |
|---|
| 332 | temp SENSORS_LM79_TEMP temp:3 |
|---|
| 333 | temp_hyst SENSORS_LM79_TEMP_HYST temp:2 |
|---|
| 334 | temp_over SENSORS_LM79_TEMP_OVER temp:1 |
|---|
| 335 | vid SENSORS_LM79_VID vid:1 |
|---|
| 336 | fan1_div SENSORS_LM79_FAN1_DIV fan_div:1 |
|---|
| 337 | fan2_div SENSORS_LM79_FAN2_DIV fan_div:2 |
|---|
| 338 | fan3_div SENSORS_LM79_FAN3_DIV fan_div:3 |
|---|
| 339 | alarms SENSORS_LM79_ALARMS alarms:1 |
|---|