diff options
| author | Grant Coady <grant_lkml@dodo.com.au> | 2005-06-02 20:05:19 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-06-22 00:52:03 -0400 |
| commit | a0ef14837a2298a4748e2a3e8e206f086dd3b21a (patch) | |
| tree | 78e06fec1c9f157b4c51ca3f4c1f3d142a0a45ca | |
| parent | eb071cbbc38efa4b1d707f540de2ec6283ab0894 (diff) | |
[PATCH] I2C: add adm9240 driver documentation
This patch adds adm9240 driver doc, with thanks to Rudolf Marek
for review.
Signed-off-by: Grant Coady <gcoady@gmail.com>
Acked-by: Rudolf Marek <r.marek@sh.cvut.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
| -rw-r--r-- | Documentation/i2c/chips/adm9240 | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/Documentation/i2c/chips/adm9240 b/Documentation/i2c/chips/adm9240 new file mode 100644 index 000000000000..35f618f32896 --- /dev/null +++ b/Documentation/i2c/chips/adm9240 | |||
| @@ -0,0 +1,177 @@ | |||
| 1 | Kernel driver adm9240 | ||
| 2 | ===================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Analog Devices ADM9240 | ||
| 6 | Prefix: 'adm9240' | ||
| 7 | Addresses scanned: I2C 0x2c - 0x2f | ||
| 8 | Datasheet: Publicly available at the Analog Devices website | ||
| 9 | http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf | ||
| 10 | |||
| 11 | * Dallas Semiconductor DS1780 | ||
| 12 | Prefix: 'ds1780' | ||
| 13 | Addresses scanned: I2C 0x2c - 0x2f | ||
| 14 | Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website | ||
| 15 | http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf | ||
| 16 | |||
| 17 | * National Semiconductor LM81 | ||
| 18 | Prefix: 'lm81' | ||
| 19 | Addresses scanned: I2C 0x2c - 0x2f | ||
| 20 | Datasheet: Publicly available at the National Semiconductor website | ||
| 21 | http://www.national.com/ds.cgi/LM/LM81.pdf | ||
| 22 | |||
| 23 | Authors: | ||
| 24 | Frodo Looijaard <frodol@dds.nl>, | ||
| 25 | Philip Edelbrock <phil@netroedge.com>, | ||
| 26 | Michiel Rook <michiel@grendelproject.nl>, | ||
| 27 | Grant Coady <gcoady@gmail.com> with guidance | ||
| 28 | from Jean Delvare <khali@linux-fr.org> | ||
| 29 | |||
| 30 | Interface | ||
| 31 | --------- | ||
| 32 | The I2C addresses listed above assume BIOS has not changed the | ||
| 33 | chip MSB 5-bit address. Each chip reports a unique manufacturer | ||
| 34 | identification code as well as the chip revision/stepping level. | ||
| 35 | |||
| 36 | Description | ||
| 37 | ----------- | ||
| 38 | [From ADM9240] The ADM9240 is a complete system hardware monitor for | ||
| 39 | microprocessor-based systems, providing measurement and limit comparison | ||
| 40 | of up to four power supplies and two processor core voltages, plus | ||
| 41 | temperature, two fan speeds and chassis intrusion. Measured values can | ||
| 42 | be read out via an I2C-compatible serial System Management Bus, and values | ||
| 43 | for limit comparisons can be programmed in over the same serial bus. The | ||
| 44 | high speed successive approximation ADC allows frequent sampling of all | ||
| 45 | analog channels to ensure a fast interrupt response to any out-of-limit | ||
| 46 | measurement. | ||
| 47 | |||
| 48 | The ADM9240, DS1780 and LM81 are register compatible, the following | ||
| 49 | details are common to the three chips. Chip differences are described | ||
| 50 | after this section. | ||
| 51 | |||
| 52 | |||
| 53 | Measurements | ||
| 54 | ------------ | ||
| 55 | The measurement cycle | ||
| 56 | |||
| 57 | The adm9240 driver will take a measurement reading no faster than once | ||
| 58 | each two seconds. User-space may read sysfs interface faster than the | ||
| 59 | measurement update rate and will receive cached data from the most | ||
| 60 | recent measurement. | ||
| 61 | |||
| 62 | ADM9240 has a very fast 320us temperature and voltage measurement cycle | ||
| 63 | with independent fan speed measurement cycles counting alternating rising | ||
| 64 | edges of the fan tacho inputs. | ||
| 65 | |||
| 66 | DS1780 measurement cycle is about once per second including fan speed. | ||
| 67 | |||
| 68 | LM81 measurement cycle is about once per 400ms including fan speed. | ||
| 69 | The LM81 12-bit extended temperature measurement mode is not supported. | ||
| 70 | |||
| 71 | Temperature | ||
| 72 | ----------- | ||
| 73 | On chip temperature is reported as degrees Celsius as 9-bit signed data | ||
| 74 | with resolution of 0.5 degrees Celsius. High and low temperature limits | ||
| 75 | are 8-bit signed data with resolution of one degree Celsius. | ||
| 76 | |||
| 77 | Temperature alarm is asserted once the temperature exceeds the high limit, | ||
| 78 | and is cleared when the temperature falls below the temp1_max_hyst value. | ||
| 79 | |||
| 80 | Fan Speed | ||
| 81 | --------- | ||
| 82 | Two fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz | ||
| 83 | clock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by: | ||
| 84 | |||
| 85 | rpm = (22500 * 60) / (count * divider) | ||
| 86 | |||
| 87 | Automatic fan clock divider | ||
| 88 | |||
| 89 | * User sets 0 to fan_min limit | ||
| 90 | - low speed alarm is disabled | ||
| 91 | - fan clock divider not changed | ||
| 92 | - auto fan clock adjuster enabled for valid fan speed reading | ||
| 93 | |||
| 94 | * User sets fan_min limit too low | ||
| 95 | - low speed alarm is enabled | ||
| 96 | - fan clock divider set to max | ||
| 97 | - fan_min set to register value 254 which corresponds | ||
| 98 | to 664 rpm on adm9240 | ||
| 99 | - low speed alarm will be asserted if fan speed is | ||
| 100 | less than minimum measurable speed | ||
| 101 | - auto fan clock adjuster disabled | ||
| 102 | |||
| 103 | * User sets reasonable fan speed | ||
| 104 | - low speed alarm is enabled | ||
| 105 | - fan clock divider set to suit fan_min | ||
| 106 | - auto fan clock adjuster enabled: adjusts fan_min | ||
| 107 | |||
| 108 | * User sets unreasonably high low fan speed limit | ||
| 109 | - resolution of the low speed limit may be reduced | ||
| 110 | - alarm will be asserted | ||
| 111 | - auto fan clock adjuster enabled: adjusts fan_min | ||
| 112 | |||
| 113 | * fan speed may be displayed as zero until the auto fan clock divider | ||
| 114 | adjuster brings fan speed clock divider back into chip measurement | ||
| 115 | range, this will occur within a few measurement cycles. | ||
| 116 | |||
| 117 | Analog Output | ||
| 118 | ------------- | ||
| 119 | An analog output provides a 0 to 1.25 volt signal intended for an external | ||
| 120 | fan speed amplifier circuit. The analog output is set to maximum value on | ||
| 121 | power up or reset. This doesn't do much on the test Intel SE440BX-2. | ||
| 122 | |||
| 123 | Voltage Monitor | ||
| 124 | |||
| 125 | Voltage (IN) measurement is internally scaled: | ||
| 126 | |||
| 127 | nr label nominal maximum resolution | ||
| 128 | mV mV mV | ||
| 129 | 0 +2.5V 2500 3320 13.0 | ||
| 130 | 1 Vccp1 2700 3600 14.1 | ||
| 131 | 2 +3.3V 3300 4380 17.2 | ||
| 132 | 3 +5V 5000 6640 26.0 | ||
| 133 | 4 +12V 12000 15940 62.5 | ||
| 134 | 5 Vccp2 2700 3600 14.1 | ||
| 135 | |||
| 136 | The reading is an unsigned 8-bit value, nominal voltage measurement is | ||
| 137 | represented by a reading of 192, being 3/4 of the measurement range. | ||
| 138 | |||
| 139 | An alarm is asserted for any voltage going below or above the set limits. | ||
| 140 | |||
| 141 | The driver reports and accepts voltage limits scaled to the above table. | ||
| 142 | |||
| 143 | VID Monitor | ||
| 144 | ----------- | ||
| 145 | The chip has five inputs to read the 5-bit VID and reports the mV value | ||
| 146 | based on detected CPU type. | ||
| 147 | |||
| 148 | Chassis Intrusion | ||
| 149 | ----------------- | ||
| 150 | An alarm is asserted when the CI pin goes active high. The ADM9240 | ||
| 151 | Datasheet has an example of an external temperature sensor driving | ||
| 152 | this pin. On an Intel SE440BX-2 the Chassis Intrusion header is | ||
| 153 | connected to a normally open switch. | ||
| 154 | |||
| 155 | The ADM9240 provides an internal open drain on this line, and may output | ||
| 156 | a 20 ms active low pulse to reset an external Chassis Intrusion latch. | ||
| 157 | |||
| 158 | Clear the CI latch by writing value 1 to the sysfs chassis_clear file. | ||
| 159 | |||
| 160 | Alarm flags reported as 16-bit word | ||
| 161 | |||
| 162 | bit label comment | ||
| 163 | --- ------------- -------------------------- | ||
| 164 | 0 +2.5 V_Error high or low limit exceeded | ||
| 165 | 1 VCCP_Error high or low limit exceeded | ||
| 166 | 2 +3.3 V_Error high or low limit exceeded | ||
| 167 | 3 +5 V_Error high or low limit exceeded | ||
| 168 | 4 Temp_Error temperature error | ||
| 169 | 6 FAN1_Error fan low limit exceeded | ||
| 170 | 7 FAN2_Error fan low limit exceeded | ||
| 171 | 8 +12 V_Error high or low limit exceeded | ||
| 172 | 9 VCCP2_Error high or low limit exceeded | ||
| 173 | 12 Chassis_Error CI pin went high | ||
| 174 | |||
| 175 | Remaining bits are reserved and thus undefined. It is important to note | ||
| 176 | that alarm bits may be cleared on read, user-space may latch alarms and | ||
| 177 | provide the end-user with a method to clear alarm memory. | ||
