summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/hwmon/ina230.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/hwmon/ina230.c b/drivers/hwmon/ina230.c
index 92e2d3c927f2..5766938996ea 100644
--- a/drivers/hwmon/ina230.c
+++ b/drivers/hwmon/ina230.c
@@ -458,21 +458,22 @@ static s32 show_current(struct device *dev,
}
/* getting current readings in milli amps*/
- current_mA = be16_to_cpu(i2c_smbus_read_word_data(client,
- INA230_CURRENT));
- if (current_mA < 0) {
+ retval = i2c_smbus_read_word_data(client, INA230_CURRENT);
+ if (retval < 0) {
mutex_unlock(&data->mutex);
- return -EINVAL;
+ return retval;
}
+ current_mA = (s16) be16_to_cpu(retval);
ensure_enabled_end(client);
mutex_unlock(&data->mutex);
if (data->pdata->shunt_polarity_inverted)
- current_mA = (s16)current_mA * -1;
+ current_mA *= -1;
- current_mA =
- (current_mA * data->pdata->power_lsb) / data->pdata->divisor;
+ current_mA *= (s16) data->pdata->power_lsb;
+ if (data->pdata->divisor)
+ current_mA /= (s16) data->pdata->divisor;
if (data->pdata->precision_multiplier)
current_mA /= (s16) data->pdata->precision_multiplier;