diff options
Diffstat (limited to 'drivers/hwmon/lm90.c')
| -rw-r--r-- | drivers/hwmon/lm90.c | 21 | 
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c index 74019dff2550..1c9493c70813 100644 --- a/drivers/hwmon/lm90.c +++ b/drivers/hwmon/lm90.c @@ -373,7 +373,7 @@ static const struct lm90_params lm90_params[] = {  		.flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT  		  | LM90_HAVE_BROKEN_ALERT | LM90_HAVE_CRIT,  		.alert_alarms = 0x7c, -		.max_convrate = 8, +		.max_convrate = 7,  	},  	[lm86] = {  		.flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT @@ -394,12 +394,13 @@ static const struct lm90_params lm90_params[] = {  		.max_convrate = 9,  	},  	[max6646] = { -		.flags = LM90_HAVE_CRIT, +		.flags = LM90_HAVE_CRIT | LM90_HAVE_BROKEN_ALERT,  		.alert_alarms = 0x7c,  		.max_convrate = 6,  		.reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL,  	},  	[max6654] = { +		.flags = LM90_HAVE_BROKEN_ALERT,  		.alert_alarms = 0x7c,  		.max_convrate = 7,  		.reg_local_ext = MAX6657_REG_R_LOCAL_TEMPL, @@ -418,7 +419,7 @@ static const struct lm90_params lm90_params[] = {  	},  	[max6680] = {  		.flags = LM90_HAVE_OFFSET | LM90_HAVE_CRIT -		  | LM90_HAVE_CRIT_ALRM_SWP, +		  | LM90_HAVE_CRIT_ALRM_SWP | LM90_HAVE_BROKEN_ALERT,  		.alert_alarms = 0x7c,  		.max_convrate = 7,  	}, @@ -848,7 +849,7 @@ static int lm90_update_device(struct device *dev)  		 * Re-enable ALERT# output if it was originally enabled and  		 * relevant alarms are all clear  		 */ -		if (!(data->config_orig & 0x80) && +		if ((client->irq || !(data->config_orig & 0x80)) &&  		    !(data->alarms & data->alert_alarms)) {  			if (data->config & 0x80) {  				dev_dbg(&client->dev, "Re-enabling ALERT#\n"); @@ -1807,22 +1808,22 @@ static bool lm90_is_tripped(struct i2c_client *client, u16 *status)  	if (st & LM90_STATUS_LLOW)  		hwmon_notify_event(data->hwmon_dev, hwmon_temp, -				   hwmon_temp_min, 0); +				   hwmon_temp_min_alarm, 0);  	if (st & LM90_STATUS_RLOW)  		hwmon_notify_event(data->hwmon_dev, hwmon_temp, -				   hwmon_temp_min, 1); +				   hwmon_temp_min_alarm, 1);  	if (st2 & MAX6696_STATUS2_R2LOW)  		hwmon_notify_event(data->hwmon_dev, hwmon_temp, -				   hwmon_temp_min, 2); +				   hwmon_temp_min_alarm, 2);  	if (st & LM90_STATUS_LHIGH)  		hwmon_notify_event(data->hwmon_dev, hwmon_temp, -				   hwmon_temp_max, 0); +				   hwmon_temp_max_alarm, 0);  	if (st & LM90_STATUS_RHIGH)  		hwmon_notify_event(data->hwmon_dev, hwmon_temp, -				   hwmon_temp_max, 1); +				   hwmon_temp_max_alarm, 1);  	if (st2 & MAX6696_STATUS2_R2HIGH)  		hwmon_notify_event(data->hwmon_dev, hwmon_temp, -				   hwmon_temp_max, 2); +				   hwmon_temp_max_alarm, 2);  	return true;  }  |