Commit a095f687 authored by Jean Delvare's avatar Jean Delvare Committed by Guenter Roeck

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: default avatarJean Delvare <khali@linux-fr.org>
Cc: Stijn Devriendt <sdevrien@cisco.com>
Cc: Guenter Roeck <guenter.roeck@ericsson.com>
Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
parent 03e9bd8d
...@@ -170,7 +170,6 @@ enum chips { lm90, adm1032, lm99, lm86, max6657, max6659, adt7461, max6680, ...@@ -170,7 +170,6 @@ enum chips { lm90, adm1032, lm99, lm86, max6657, max6659, adt7461, max6680,
#define LM90_FLAG_ADT7461_EXT (1 << 0) /* ADT7461 extended mode */ #define LM90_FLAG_ADT7461_EXT (1 << 0) /* ADT7461 extended mode */
/* Device features */ /* Device features */
#define LM90_HAVE_OFFSET (1 << 1) /* temperature offset register */ #define LM90_HAVE_OFFSET (1 << 1) /* temperature offset register */
#define LM90_HAVE_LOCAL_EXT (1 << 2) /* extended local temperature */
#define LM90_HAVE_REM_LIMIT_EXT (1 << 3) /* extended remote limit */ #define LM90_HAVE_REM_LIMIT_EXT (1 << 3) /* extended remote limit */
#define LM90_HAVE_EMERGENCY (1 << 4) /* 3rd upper (emergency) limit */ #define LM90_HAVE_EMERGENCY (1 << 4) /* 3rd upper (emergency) limit */
#define LM90_HAVE_EMERGENCY_ALARM (1 << 5)/* emergency alarm */ #define LM90_HAVE_EMERGENCY_ALARM (1 << 5)/* emergency alarm */
...@@ -214,8 +213,7 @@ struct lm90_params { ...@@ -214,8 +213,7 @@ struct lm90_params {
u16 alert_alarms; /* Which alarm bits trigger ALERT# */ u16 alert_alarms; /* Which alarm bits trigger ALERT# */
/* Upper 8 bits for max6695/96 */ /* Upper 8 bits for max6695/96 */
u8 max_convrate; /* Maximum conversion rate register value */ u8 max_convrate; /* Maximum conversion rate register value */
u8 reg_local_ext; /* Local extension register if u8 reg_local_ext; /* Extended local temp register (optional) */
LM90_HAVE_LOCAL_EXT is set*/
}; };
static const struct lm90_params lm90_params[] = { static const struct lm90_params lm90_params[] = {
...@@ -247,19 +245,17 @@ static const struct lm90_params lm90_params[] = { ...@@ -247,19 +245,17 @@ static const struct lm90_params lm90_params[] = {
.max_convrate = 9, .max_convrate = 9,
}, },
[max6646] = { [max6646] = {
.flags = LM90_HAVE_LOCAL_EXT,
.alert_alarms = 0x7c, .alert_alarms = 0x7c,
.max_convrate = 6, .max_convrate = 6,
.reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL, .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL,
}, },
[max6657] = { [max6657] = {
.flags = LM90_HAVE_LOCAL_EXT,
.alert_alarms = 0x7c, .alert_alarms = 0x7c,
.max_convrate = 8, .max_convrate = 8,
.reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL, .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL,
}, },
[max6659] = { [max6659] = {
.flags = LM90_HAVE_LOCAL_EXT | LM90_HAVE_EMERGENCY, .flags = LM90_HAVE_EMERGENCY,
.alert_alarms = 0x7c, .alert_alarms = 0x7c,
.max_convrate = 8, .max_convrate = 8,
.reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL, .reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL,
...@@ -270,7 +266,7 @@ static const struct lm90_params lm90_params[] = { ...@@ -270,7 +266,7 @@ static const struct lm90_params lm90_params[] = {
.max_convrate = 7, .max_convrate = 7,
}, },
[max6696] = { [max6696] = {
.flags = LM90_HAVE_LOCAL_EXT | LM90_HAVE_EMERGENCY .flags = LM90_HAVE_EMERGENCY
| LM90_HAVE_EMERGENCY_ALARM | LM90_HAVE_TEMP3, | LM90_HAVE_EMERGENCY_ALARM | LM90_HAVE_TEMP3,
.alert_alarms = 0x187c, .alert_alarms = 0x187c,
.max_convrate = 6, .max_convrate = 6,
...@@ -282,8 +278,7 @@ static const struct lm90_params lm90_params[] = { ...@@ -282,8 +278,7 @@ static const struct lm90_params lm90_params[] = {
.max_convrate = 8, .max_convrate = 8,
}, },
[sa56004] = { [sa56004] = {
.flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT,
| LM90_HAVE_LOCAL_EXT,
.alert_alarms = 0x7b, .alert_alarms = 0x7b,
.max_convrate = 9, .max_convrate = 9,
.reg_local_ext = SA56004_REG_R_LOCAL_TEMPL, .reg_local_ext = SA56004_REG_R_LOCAL_TEMPL,
...@@ -476,7 +471,7 @@ static struct lm90_data *lm90_update_device(struct device *dev) ...@@ -476,7 +471,7 @@ static struct lm90_data *lm90_update_device(struct device *dev)
lm90_read_reg(client, LM90_REG_R_REMOTE_CRIT, &data->temp8[3]); lm90_read_reg(client, LM90_REG_R_REMOTE_CRIT, &data->temp8[3]);
lm90_read_reg(client, LM90_REG_R_TCRIT_HYST, &data->temp_hyst); lm90_read_reg(client, LM90_REG_R_TCRIT_HYST, &data->temp_hyst);
if (data->flags & LM90_HAVE_LOCAL_EXT) { if (data->reg_local_ext) {
lm90_read16(client, LM90_REG_R_LOCAL_TEMP, lm90_read16(client, LM90_REG_R_LOCAL_TEMP,
data->reg_local_ext, data->reg_local_ext,
&data->temp11[4]); &data->temp11[4]);
...@@ -1397,15 +1392,11 @@ static int lm90_probe(struct i2c_client *new_client, ...@@ -1397,15 +1392,11 @@ static int lm90_probe(struct i2c_client *new_client,
/* Set chip capabilities */ /* Set chip capabilities */
data->flags = lm90_params[data->kind].flags; data->flags = lm90_params[data->kind].flags;
data->reg_local_ext = lm90_params[data->kind].reg_local_ext;
/* Set maximum conversion rate */ /* Set maximum conversion rate */
data->max_convrate = lm90_params[data->kind].max_convrate; data->max_convrate = lm90_params[data->kind].max_convrate;
if (data->flags & LM90_HAVE_LOCAL_EXT) {
data->reg_local_ext = lm90_params[data->kind].reg_local_ext;
WARN_ON(data->reg_local_ext == 0);
}
/* Initialize the LM90 chip */ /* Initialize the LM90 chip */
lm90_init_client(new_client); lm90_init_client(new_client);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment