diff options
Diffstat (limited to 'Documentation/hwmon/ds1621')
-rw-r--r-- | Documentation/hwmon/ds1621 | 144 |
1 files changed, 134 insertions, 10 deletions
diff --git a/Documentation/hwmon/ds1621 b/Documentation/hwmon/ds1621 index 5e97f333c4df..896cdc972ca8 100644 --- a/Documentation/hwmon/ds1621 +++ b/Documentation/hwmon/ds1621 | |||
@@ -2,16 +2,30 @@ Kernel driver ds1621 | |||
2 | ==================== | 2 | ==================== |
3 | 3 | ||
4 | Supported chips: | 4 | Supported chips: |
5 | * Dallas Semiconductor DS1621 | 5 | * Dallas Semiconductor / Maxim Integrated DS1621 |
6 | Prefix: 'ds1621' | 6 | Prefix: 'ds1621' |
7 | Addresses scanned: I2C 0x48 - 0x4f | 7 | Addresses scanned: none |
8 | Datasheet: Publicly available at the Dallas Semiconductor website | 8 | Datasheet: Publicly available from www.maximintegrated.com |
9 | http://www.dalsemi.com/ | 9 | |
10 | * Dallas Semiconductor DS1625 | 10 | * Dallas Semiconductor DS1625 |
11 | Prefix: 'ds1621' | 11 | Prefix: 'ds1625' |
12 | Addresses scanned: I2C 0x48 - 0x4f | 12 | Addresses scanned: none |
13 | Datasheet: Publicly available at the Dallas Semiconductor website | 13 | Datasheet: Publicly available from www.datasheetarchive.com |
14 | http://www.dalsemi.com/ | 14 | |
15 | * Maxim Integrated DS1631 | ||
16 | Prefix: 'ds1631' | ||
17 | Addresses scanned: none | ||
18 | Datasheet: Publicly available from www.maximintegrated.com | ||
19 | |||
20 | * Maxim Integrated DS1721 | ||
21 | Prefix: 'ds1721' | ||
22 | Addresses scanned: none | ||
23 | Datasheet: Publicly available from www.maximintegrated.com | ||
24 | |||
25 | * Maxim Integrated DS1731 | ||
26 | Prefix: 'ds1731' | ||
27 | Addresses scanned: none | ||
28 | Datasheet: Publicly available from www.maximintegrated.com | ||
15 | 29 | ||
16 | Authors: | 30 | Authors: |
17 | Christian W. Zuckschwerdt <zany@triq.net> | 31 | Christian W. Zuckschwerdt <zany@triq.net> |
@@ -59,5 +73,115 @@ any of the limits have ever been met or exceeded since last power-up or | |||
59 | reset. Be aware: When testing, it showed that the status of Tout can change | 73 | reset. Be aware: When testing, it showed that the status of Tout can change |
60 | with neither of the alarms set. | 74 | with neither of the alarms set. |
61 | 75 | ||
62 | Temperature conversion of the DS1621 takes up to 1000ms; internal access to | 76 | Since there is no version or vendor identification register, there is |
63 | non-volatile registers may last for 10ms or below. | 77 | no unique identification for these devices. Therefore, explicit device |
78 | instantiation is required for correct device identification and functionality | ||
79 | (one device per address in this address range: 0x48..0x4f). | ||
80 | |||
81 | The DS1625 is pin compatible and functionally equivalent with the DS1621, | ||
82 | but the DS1621 is meant to replace it. The DS1631, DS1721, and DS1731 are | ||
83 | also pin compatible with the DS1621 and provide multi-resolution support. | ||
84 | |||
85 | Additionally, the DS1721 data sheet says the temperature flags (THF and TLF) | ||
86 | are used internally, however, these flags do get set and cleared as the actual | ||
87 | temperature crosses the min or max settings (which by default are set to 75 | ||
88 | and 80 degrees respectively). | ||
89 | |||
90 | Temperature Conversion: | ||
91 | ----------------------- | ||
92 | DS1621 - 750ms (older devices may take up to 1000ms) | ||
93 | DS1625 - 500ms | ||
94 | DS1631 - 93ms..750ms for 9..12 bits resolution, respectively. | ||
95 | DS1721 - 93ms..750ms for 9..12 bits resolution, respectively. | ||
96 | DS1731 - 93ms..750ms for 9..12 bits resolution, respectively. | ||
97 | |||
98 | Note: | ||
99 | On the DS1621, internal access to non-volatile registers may last for 10ms | ||
100 | or less (unverified on the other devices). | ||
101 | |||
102 | Temperature Accuracy: | ||
103 | --------------------- | ||
104 | DS1621: +/- 0.5 degree Celsius (from 0 to +70 degrees) | ||
105 | DS1625: +/- 0.5 degree Celsius (from 0 to +70 degrees) | ||
106 | DS1631: +/- 0.5 degree Celsius (from 0 to +70 degrees) | ||
107 | DS1721: +/- 1.0 degree Celsius (from -10 to +85 degrees) | ||
108 | DS1731: +/- 1.0 degree Celsius (from -10 to +85 degrees) | ||
109 | |||
110 | Note: | ||
111 | Please refer to the device datasheets for accuracy at other temperatures. | ||
112 | |||
113 | Temperature Resolution: | ||
114 | ----------------------- | ||
115 | As mentioned above, the DS1631, DS1721, and DS1731 provide multi-resolution | ||
116 | support, which is achieved via the R0 and R1 config register bits, where: | ||
117 | |||
118 | R0..R1 | ||
119 | ------ | ||
120 | 0 0 => 9 bits, 0.5 degrees Celcius | ||
121 | 1 0 => 10 bits, 0.25 degrees Celcius | ||
122 | 0 1 => 11 bits, 0.125 degrees Celcius | ||
123 | 1 1 => 12 bits, 0.0625 degrees Celcius | ||
124 | |||
125 | Note: | ||
126 | At initial device power-on, the default resolution is set to 12-bits. | ||
127 | |||
128 | The resolution mode for the DS1631, DS1721, or DS1731 can be changed from | ||
129 | userspace, via the device 'update_interval' sysfs attribute. This attribute | ||
130 | will normalize the range of input values to the device maximum resolution | ||
131 | values defined in the datasheet as follows: | ||
132 | |||
133 | Resolution Conversion Time Input Range | ||
134 | (C/LSB) (msec) (msec) | ||
135 | ------------------------------------------------ | ||
136 | 0.5 93.75 0....94 | ||
137 | 0.25 187.5 95...187 | ||
138 | 0.125 375 188..375 | ||
139 | 0.0625 750 376..infinity | ||
140 | ------------------------------------------------ | ||
141 | |||
142 | The following examples show how the 'update_interval' attribute can be | ||
143 | used to change the conversion time: | ||
144 | |||
145 | $ cat update_interval | ||
146 | 750 | ||
147 | $ cat temp1_input | ||
148 | 22062 | ||
149 | $ | ||
150 | $ echo 300 > update_interval | ||
151 | $ cat update_interval | ||
152 | 375 | ||
153 | $ cat temp1_input | ||
154 | 22125 | ||
155 | $ | ||
156 | $ echo 150 > update_interval | ||
157 | $ cat update_interval | ||
158 | 188 | ||
159 | $ cat temp1_input | ||
160 | 22250 | ||
161 | $ | ||
162 | $ echo 1 > update_interval | ||
163 | $ cat update_interval | ||
164 | 94 | ||
165 | $ cat temp1_input | ||
166 | 22000 | ||
167 | $ | ||
168 | $ echo 1000 > update_interval | ||
169 | $ cat update_interval | ||
170 | 750 | ||
171 | $ cat temp1_input | ||
172 | 22062 | ||
173 | $ | ||
174 | |||
175 | As shown, the ds1621 driver automatically adjusts the 'update_interval' | ||
176 | user input, via a step function. Reading back the 'update_interval' value | ||
177 | after a write operation provides the conversion time used by the device. | ||
178 | |||
179 | Mathematically, the resolution can be derived from the conversion time | ||
180 | via the following function: | ||
181 | |||
182 | g(x) = 0.5 * [minimum_conversion_time/x] | ||
183 | |||
184 | where: | ||
185 | -> 'x' = the output from 'update_interval' | ||
186 | -> 'g(x)' = the resolution in degrees C per LSB. | ||
187 | -> 93.75ms = minimum conversion time | ||