Guenter Roeck | 57d60b1 | 2014-05-12 10:11:32 -0700 | [diff] [blame] | 1 | Kernel driver emc1403 |
| 2 | ===================== |
| 3 | |
| 4 | Supported chips: |
| 5 | * SMSC / Microchip EMC1402, EMC1412 |
| 6 | Addresses scanned: I2C 0x18, 0x1c, 0x29, 0x4c, 0x4d, 0x5c |
| 7 | Prefix: 'emc1402' |
| 8 | Datasheets: |
| 9 | http://ww1.microchip.com/downloads/en/DeviceDoc/1412.pdf |
| 10 | http://ww1.microchip.com/downloads/en/DeviceDoc/1402.pdf |
| 11 | * SMSC / Microchip EMC1403, EMC1404, EMC1413, EMC1414 |
| 12 | Addresses scanned: I2C 0x18, 0x29, 0x4c, 0x4d |
| 13 | Prefix: 'emc1403', 'emc1404' |
| 14 | Datasheets: |
| 15 | http://ww1.microchip.com/downloads/en/DeviceDoc/1403_1404.pdf |
| 16 | http://ww1.microchip.com/downloads/en/DeviceDoc/1413_1414.pdf |
| 17 | * SMSC / Microchip EMC1422 |
| 18 | Addresses scanned: I2C 0x4c |
| 19 | Prefix: 'emc1422' |
| 20 | Datasheet: |
| 21 | http://ww1.microchip.com/downloads/en/DeviceDoc/1422.pdf |
| 22 | * SMSC / Microchip EMC1423, EMC1424 |
| 23 | Addresses scanned: I2C 0x4c |
| 24 | Prefix: 'emc1423', 'emc1424' |
| 25 | Datasheet: |
| 26 | http://ww1.microchip.com/downloads/en/DeviceDoc/1423_1424.pdf |
| 27 | |
| 28 | Author: |
| 29 | Kalhan Trisal <kalhan.trisal@intel.com |
| 30 | |
| 31 | |
| 32 | Description |
| 33 | ----------- |
| 34 | |
| 35 | The Standard Microsystems Corporation (SMSC) / Microchip EMC14xx chips |
| 36 | contain up to four temperature sensors. EMC14x2 support two sensors |
| 37 | (one internal, one external). EMC14x3 support three sensors (one internal, |
| 38 | two external), and EMC14x4 support four sensors (one internal, three |
| 39 | external). |
| 40 | |
| 41 | The chips implement three limits for each sensor: low (tempX_min), high |
| 42 | (tempX_max) and critical (tempX_crit.) The chips also implement an |
| 43 | hysteresis mechanism which applies to all limits. The relative difference |
| 44 | is stored in a single register on the chip, which means that the relative |
| 45 | difference between the limit and its hysteresis is always the same for |
| 46 | all three limits. |
| 47 | |
| 48 | This implementation detail implies the following: |
| 49 | * When setting a limit, its hysteresis will automatically follow, the |
| 50 | difference staying unchanged. For example, if the old critical limit |
| 51 | was 80 degrees C, and the hysteresis was 75 degrees C, and you change |
| 52 | the critical limit to 90 degrees C, then the hysteresis will |
| 53 | automatically change to 85 degrees C. |
Guenter Roeck | 84899d3 | 2014-05-12 11:10:56 -0700 | [diff] [blame] | 54 | * The hysteresis values can't be set independently. We decided to make |
| 55 | only temp1_crit_hyst writable, while all other hysteresis attributes |
| 56 | are read-only. Setting temp1_crit_hyst writes the difference between |
| 57 | temp1_crit_hyst and temp1_crit into the chip, and the same relative |
| 58 | hysteresis applies automatically to all other limits. |
Guenter Roeck | 57d60b1 | 2014-05-12 10:11:32 -0700 | [diff] [blame] | 59 | * The limits should be set before the hysteresis. |