aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/lm90.c
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2011-07-28 02:22:25 -0400
committerGuenter Roeck <guenter.roeck@ericsson.com>2011-07-28 23:16:35 -0400
commita095f687f1e19c54147bd51f735717508a49e225 (patch)
tree2772a19fb7f61130e772f1364502e133f636cd18 /drivers/hwmon/lm90.c
parent03e9bd8dbcee60c2e22fd54f9f28f0d32da218c3 (diff)
hwmon: (lm90) Simplify handling of extended local temp register
The optional extended local temperature register can never have address 0, as this address is already used by another register. Thus we can get rid of flag LM90_HAVE_LOCAL_EXT and simply rely on reg_local_ext being non-zero to determine if a given chip has this extension or not. This makes the code more simple. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: Stijn Devriendt <sdevrien@cisco.com> Cc: Guenter Roeck <guenter.roeck@ericsson.com> Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Diffstat (limited to 'drivers/hwmon/lm90.c')
-rw-r--r--drivers/hwmon/lm90.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
index 708bf0e7e4ac..7fef2a1194d9 100644
--- a/drivers/hwmon/lm90.c
+++ b/drivers/hwmon/lm90.c
@@ -170,7 +170,6 @@ enum chips { lm90, adm1032, lm99, lm86, max6657, max6659, adt7461, max6680,
170#define LM90_FLAG_ADT7461_EXT (1 << 0) /* ADT7461 extended mode */ 170#define LM90_FLAG_ADT7461_EXT (1 << 0) /* ADT7461 extended mode */
171/* Device features */ 171/* Device features */
172#define LM90_HAVE_OFFSET (1 << 1) /* temperature offset register */ 172#define LM90_HAVE_OFFSET (1 << 1) /* temperature offset register */
173#define LM90_HAVE_LOCAL_EXT (1 << 2) /* extended local temperature */
174#define LM90_HAVE_REM_LIMIT_EXT (1 << 3) /* extended remote limit */ 173#define LM90_HAVE_REM_LIMIT_EXT (1 << 3) /* extended remote limit */
175#define LM90_HAVE_EMERGENCY (1 << 4) /* 3rd upper (emergency) limit */ 174#define LM90_HAVE_EMERGENCY (1 << 4) /* 3rd upper (emergency) limit */
176#define LM90_HAVE_EMERGENCY_ALARM (1 << 5)/* emergency alarm */ 175#define LM90_HAVE_EMERGENCY_ALARM (1 << 5)/* emergency alarm */
@@ -214,8 +213,7 @@ struct lm90_params {
214 u16 alert_alarms; /* Which alarm bits trigger ALERT# */ 213 u16 alert_alarms; /* Which alarm bits trigger ALERT# */
215 /* Upper 8 bits for max6695/96 */ 214 /* Upper 8 bits for max6695/96 */
216 u8 max_convrate; /* Maximum conversion rate register value */ 215 u8 max_convrate; /* Maximum conversion rate register value */
217 u8 reg_local_ext; /* Local extension register if 216 u8 reg_local_ext; /* Extended local temp register (optional) */
218 LM90_HAVE_LOCAL_EXT is set*/
219}; 217};
220 218
221static const struct lm90_params lm90_params[] = { 219static const struct lm90_params lm90_params[] = {
@@ -247,19 +245,17 @@ static const struct lm90_params lm90_params[] = {
247 .max_convrate = 9, 245 .max_convrate = 9,
248 }, 246 },
249 [max6646] = { 247 [max6646] = {
250 .flags = LM90_HAVE_LOCAL_EXT,
251 .alert_alarms = 0x7c, 248 .alert_alarms = 0x7c,
252 .max_convrate = 6, 249 .max_convrate = 6,
253 .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL, 250 .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL,
254 }, 251 },
255 [max6657] = { 252 [max6657] = {
256 .flags = LM90_HAVE_LOCAL_EXT,
257 .alert_alarms = 0x7c, 253 .alert_alarms = 0x7c,
258 .max_convrate = 8, 254 .max_convrate = 8,
259 .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL, 255 .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL,
260 }, 256 },
261 [max6659] = { 257 [max6659] = {
262 .flags = LM90_HAVE_LOCAL_EXT | LM90_HAVE_EMERGENCY, 258 .flags = LM90_HAVE_EMERGENCY,
263 .alert_alarms = 0x7c, 259 .alert_alarms = 0x7c,
264 .max_convrate = 8, 260 .max_convrate = 8,
265 .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL, 261 .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL,
@@ -270,7 +266,7 @@ static const struct lm90_params lm90_params[] = {
270 .max_convrate = 7, 266 .max_convrate = 7,
271 }, 267 },
272 [max6696] = { 268 [max6696] = {
273 .flags = LM90_HAVE_LOCAL_EXT | LM90_HAVE_EMERGENCY 269 .flags = LM90_HAVE_EMERGENCY
274 | LM90_HAVE_EMERGENCY_ALARM | LM90_HAVE_TEMP3, 270 | LM90_HAVE_EMERGENCY_ALARM | LM90_HAVE_TEMP3,
275 .alert_alarms = 0x187c, 271 .alert_alarms = 0x187c,
276 .max_convrate = 6, 272 .max_convrate = 6,
@@ -282,8 +278,7 @@ static const struct lm90_params lm90_params[] = {
282 .max_convrate = 8, 278 .max_convrate = 8,
283 }, 279 },
284 [sa56004] = { 280 [sa56004] = {
285 .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT 281 .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT,
286 | LM90_HAVE_LOCAL_EXT,
287 .alert_alarms = 0x7b, 282 .alert_alarms = 0x7b,
288 .max_convrate = 9, 283 .max_convrate = 9,
289 .reg_local_ext = SA56004_REG_R_LOCAL_TEMPL, 284 .reg_local_ext = SA56004_REG_R_LOCAL_TEMPL,
@@ -476,7 +471,7 @@ static struct lm90_data *lm90_update_device(struct device *dev)
476 lm90_read_reg(client, LM90_REG_R_REMOTE_CRIT, &data->temp8[3]); 471 lm90_read_reg(client, LM90_REG_R_REMOTE_CRIT, &data->temp8[3]);
477 lm90_read_reg(client, LM90_REG_R_TCRIT_HYST, &data->temp_hyst); 472 lm90_read_reg(client, LM90_REG_R_TCRIT_HYST, &data->temp_hyst);
478 473
479 if (data->flags & LM90_HAVE_LOCAL_EXT) { 474 if (data->reg_local_ext) {
480 lm90_read16(client, LM90_REG_R_LOCAL_TEMP, 475 lm90_read16(client, LM90_REG_R_LOCAL_TEMP,
481 data->reg_local_ext, 476 data->reg_local_ext,
482 &data->temp11[4]); 477 &data->temp11[4]);
@@ -1397,15 +1392,11 @@ static int lm90_probe(struct i2c_client *new_client,
1397 1392
1398 /* Set chip capabilities */ 1393 /* Set chip capabilities */
1399 data->flags = lm90_params[data->kind].flags; 1394 data->flags = lm90_params[data->kind].flags;
1395 data->reg_local_ext = lm90_params[data->kind].reg_local_ext;
1400 1396
1401 /* Set maximum conversion rate */ 1397 /* Set maximum conversion rate */
1402 data->max_convrate = lm90_params[data->kind].max_convrate; 1398 data->max_convrate = lm90_params[data->kind].max_convrate;
1403 1399
1404 if (data->flags & LM90_HAVE_LOCAL_EXT) {
1405 data->reg_local_ext = lm90_params[data->kind].reg_local_ext;
1406 WARN_ON(data->reg_local_ext == 0);
1407 }
1408
1409 /* Initialize the LM90 chip */ 1400 /* Initialize the LM90 chip */
1410 lm90_init_client(new_client); 1401 lm90_init_client(new_client);
1411 1402