From efb0489ea8fa12c6a5b51c0b3e35f4f3d5d54939 Mon Sep 17 00:00:00 2001 From: Nicolin Chen Date: Mon, 5 Nov 2018 12:48:40 -0800 Subject: hwmon: (ina3221) Check channel status for alarms attribute read There is nothing critically wrong to read these two attributes without having a is_enabled() check at this point. But reading the MASK_ENABLE register would clear the CVRF bit according to the datasheet. So it'd be safer to fence for disabled channels in order to add pm runtime feature. Signed-off-by: Nicolin Chen Signed-off-by: Guenter Roeck --- drivers/hwmon/ina3221.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'drivers/hwmon/ina3221.c') diff --git a/drivers/hwmon/ina3221.c b/drivers/hwmon/ina3221.c index d61688f04594..26cdf3342d80 100644 --- a/drivers/hwmon/ina3221.c +++ b/drivers/hwmon/ina3221.c @@ -200,6 +200,12 @@ static int ina3221_read_curr(struct device *dev, u32 attr, return 0; case hwmon_curr_crit_alarm: case hwmon_curr_max_alarm: + /* No actual register read if channel is disabled */ + if (!ina3221_is_enabled(ina, channel)) { + /* Return 0 for alert flags */ + *val = 0; + return 0; + } ret = regmap_field_read(ina->fields[reg], ®val); if (ret) return ret; -- cgit v1.2.3