| 1 | Kernel driver `thmc50.o' |
|---|
| 2 | ===================== |
|---|
| 3 | |
|---|
| 4 | Status: Complete and some-what tested |
|---|
| 5 | |
|---|
| 6 | Supported chips: |
|---|
| 7 | * Analog Devices ADM1022 |
|---|
| 8 | Prefix: `adm1022' |
|---|
| 9 | Addresses scanned: I2C 0x2D - 0x2F (inclusive) |
|---|
| 10 | Datasheet: Publicly available at the Analog Devices website |
|---|
| 11 | * Texas Instruments THMC50 |
|---|
| 12 | Prefix: `thmc50' |
|---|
| 13 | Addresses scanned: I2C 0x2D - 0x2F (inclusive) |
|---|
| 14 | Datasheet: Publicly available at the Texas Instruments' website |
|---|
| 15 | |
|---|
| 16 | Authors: Frodo Looijaard <frodol@dds.nl> and |
|---|
| 17 | Philip Edelbrock <phil@netroedge.com> |
|---|
| 18 | |
|---|
| 19 | |
|---|
| 20 | Module Parameters |
|---|
| 21 | ----------------- |
|---|
| 22 | |
|---|
| 23 | * force: short array (min = 1, max = 48) |
|---|
| 24 | List of adapter,address pairs to boldly assume to be present |
|---|
| 25 | * force_thmc50: short array (min = 1, max = 48) |
|---|
| 26 | List of adapter,address pairs which are unquestionably assumed to contain |
|---|
| 27 | a `thmc50' chip |
|---|
| 28 | * ignore: short array (min = 1, max = 48) |
|---|
| 29 | List of adapter,address pairs not to scan |
|---|
| 30 | * ignore_range: short array (min = 1, max = 48) |
|---|
| 31 | List of adapter,start-addr,end-addr triples not to scan |
|---|
| 32 | * probe: short array (min = 1, max = 48) |
|---|
| 33 | List of adapter,address pairs to scan additionally |
|---|
| 34 | * probe_range: short array (min = 1, max = 48) |
|---|
| 35 | List of adapter,start-addr,end-addr triples to scan additionally |
|---|
| 36 | |
|---|
| 37 | |
|---|
| 38 | Description |
|---|
| 39 | ----------- |
|---|
| 40 | |
|---|
| 41 | The THMC50 implements: an internal temperature sensors, support for an |
|---|
| 42 | external diode-type temperature sensor (compatible w/ the diode sensor inside |
|---|
| 43 | many processors), and a controllable fan/analog_out DAC. For the temperature |
|---|
| 44 | sensors, limits can be set through the appropriate Overtemperature Shutdown |
|---|
| 45 | register and Hysteresis register. Each value can be set and read to half-degree |
|---|
| 46 | accuracy. An alarm is issued (usually to a connected LM78) when the |
|---|
| 47 | temperature gets higher then the Overtemperature Shutdown value; it stays on |
|---|
| 48 | until the temperature falls below the Hysteresis value. All temperatures are in |
|---|
| 49 | degrees Celcius, and are guaranteed within a range of -55 to +125 degrees. |
|---|
| 50 | |
|---|
| 51 | The THMC50 only updates its values each 1.5 seconds; reading it more often |
|---|
| 52 | will do no harm, but will return 'old' values. |
|---|
| 53 | |
|---|
| 54 | The THMC50 is usually used in combination with LM78-like chips, to measure |
|---|
| 55 | the temperature of the processor(s). |
|---|
| 56 | |
|---|
| 57 | |
|---|
| 58 | Driver Features |
|---|
| 59 | --------------- |
|---|
| 60 | |
|---|
| 61 | These are the files which are provided by the driver (ro=read-only, |
|---|
| 62 | rw=read and writeable): |
|---|
| 63 | |
|---|
| 64 | temp -- Three fields: [temp-os,rw] [temp-hyst,rw] [temp,ro] |
|---|
| 65 | remote_temp -- Three fields: [temp-os,rw] [temp-hyst,rw] [temp,ro] |
|---|
| 66 | |
|---|
| 67 | temp-os, temp-hyst, and temp are whole degree integers representing degrees |
|---|
| 68 | celcius. |
|---|
| 69 | |
|---|
| 70 | analog_out -- One field: [output-value,rw] |
|---|
| 71 | |
|---|
| 72 | output-value is a number from 0 to 255 representing the voltage output |
|---|
| 73 | provided by the DAC from 0 to 2.5, respectively. Note: the max *current* |
|---|
| 74 | supplied is actually quite low. Some type of current amplification is needed |
|---|
| 75 | in order to control a fan or other current demanding device (see the |
|---|
| 76 | datasheet for more info). |
|---|
| 77 | |
|---|
| 78 | die_code -- One field: [die-code,ro] |
|---|
| 79 | |
|---|
| 80 | die-code is an integer representation of the die_code byte register. |
|---|
| 81 | According to the docs, the high nibble is the die version, and the lower |
|---|
| 82 | nibble is the stepping. (Don't ask me why or what this means! ;') |
|---|
| 83 | |
|---|
| 84 | inter -- One field: [interrupts,rw] |
|---|
| 85 | |
|---|
| 86 | interrupts is an integer representation of the interrupts byte. See the data |
|---|
| 87 | sheet for what bits mean what. |
|---|
| 88 | |
|---|
| 89 | inter_mask -- One field: [inter-mask,rw] |
|---|
| 90 | |
|---|
| 91 | inter-mask is an integer repressentation of the interrupt mask which is a |
|---|
| 92 | determination of which conditions can cause the /INT pin on the chip to |
|---|
| 93 | become asserted. |
|---|
| 94 | |
|---|
| 95 | |
|---|
| 96 | |
|---|