aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon')
-rw-r--r--drivers/hwmon/lm75.c42
1 files changed, 36 insertions, 6 deletions
diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
index 559e675db3c8..928341115793 100644
--- a/drivers/hwmon/lm75.c
+++ b/drivers/hwmon/lm75.c
@@ -169,6 +169,7 @@ lm75_probe(struct i2c_client *client, const struct i2c_device_id *id)
169 int status; 169 int status;
170 u8 set_mask, clr_mask; 170 u8 set_mask, clr_mask;
171 int new; 171 int new;
172 enum lm75_type kind = id->driver_data;
172 173
173 if (!i2c_check_functionality(client->adapter, 174 if (!i2c_check_functionality(client->adapter,
174 I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA)) 175 I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA))
@@ -187,30 +188,59 @@ lm75_probe(struct i2c_client *client, const struct i2c_device_id *id)
187 set_mask = 0; 188 set_mask = 0;
188 clr_mask = LM75_SHUTDOWN; /* continuous conversions */ 189 clr_mask = LM75_SHUTDOWN; /* continuous conversions */
189 190
190 switch (id->driver_data) { 191 switch (kind) {
191 case adt75: 192 case adt75:
192 clr_mask |= 1 << 5; /* not one-shot mode */ 193 clr_mask |= 1 << 5; /* not one-shot mode */
194 data->resolution = 12;
195 data->sample_time = HZ / 8;
193 break; 196 break;
194 case ds1775: 197 case ds1775:
195 case ds75: 198 case ds75:
196 case stds75: 199 case stds75:
197 clr_mask |= 3 << 5; /* 9-bit mode */ 200 clr_mask |= 3 << 5;
201 set_mask |= 2 << 5; /* 11-bit mode */
202 data->resolution = 11;
203 data->sample_time = HZ;
204 break;
205 case lm75:
206 case lm75a:
207 data->resolution = 9;
208 data->sample_time = HZ / 2;
209 break;
210 case max6625:
211 data->resolution = 9;
212 data->sample_time = HZ / 4;
213 break;
214 case max6626:
215 data->resolution = 12;
216 data->resolution_limits = 9;
217 data->sample_time = HZ / 4;
218 break;
219 case tcn75:
220 data->resolution = 9;
221 data->sample_time = HZ / 8;
198 break; 222 break;
199 case mcp980x: 223 case mcp980x:
224 data->resolution_limits = 9;
225 /* fall through */
200 case tmp100: 226 case tmp100:
201 case tmp101: 227 case tmp101:
228 set_mask |= 3 << 5; /* 12-bit mode */
229 data->resolution = 12;
230 data->sample_time = HZ;
231 clr_mask |= 1 << 7; /* not one-shot mode */
232 break;
202 case tmp105: 233 case tmp105:
203 case tmp175: 234 case tmp175:
204 case tmp275: 235 case tmp275:
205 case tmp75: 236 case tmp75:
206 clr_mask |= 3 << 5; /* 9-bit mode */ 237 set_mask |= 3 << 5; /* 12-bit mode */
207 clr_mask |= 1 << 7; /* not one-shot mode */ 238 clr_mask |= 1 << 7; /* not one-shot mode */
239 data->resolution = 12;
240 data->sample_time = HZ / 2;
208 break; 241 break;
209 } 242 }
210 243
211 data->resolution = 9;
212 data->sample_time = HZ + HZ / 2;
213
214 /* configure as specified */ 244 /* configure as specified */
215 status = lm75_read_value(client, LM75_REG_CONF); 245 status = lm75_read_value(client, LM75_REG_CONF);
216 if (status < 0) { 246 if (status < 0) {