[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1421070442-9635-3-git-send-email-bgolaszewski@baylibre.com>
Date: Mon, 12 Jan 2015 14:47:22 +0100
From: Bartosz Golaszewski <bgolaszewski@...libre.com>
To: Guenter Roeck <linux@...ck-us.net>
Cc: LKML <linux-kernel@...r.kernel.org>,
Benoit Cousson <bcousson@...libre.com>,
Patrick Titiano <ptitiano@...libre.com>,
LM Sensors <lm-sensors@...sensors.org>,
Bartosz Golaszewski <bgolaszewski@...libre.com>
Subject: [PATCH 2/2] hwmon: (ina2xx) use DIV_ROUND_CLOSEST() to avoid rounding errors
Use DIV_ROUND_CLOSEST() when dealing with the calibration values to make the
calculations less error prone.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@...libre.com>
---
drivers/hwmon/ina2xx.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c
index ae110c5..611ec4e 100644
--- a/drivers/hwmon/ina2xx.c
+++ b/drivers/hwmon/ina2xx.c
@@ -186,8 +186,11 @@ static void ina226_set_update_interval(struct ina2xx_data *data)
static int ina2xx_calibrate(struct ina2xx_data *data)
{
- return i2c_smbus_write_word_swapped(data->client, INA2XX_CALIBRATION,
- data->config->calibration_factor / data->rshunt);
+ u16 val = DIV_ROUND_CLOSEST(data->config->calibration_factor,
+ data->rshunt);
+
+ return i2c_smbus_write_word_swapped(data->client,
+ INA2XX_CALIBRATION, val);
}
/*
@@ -307,7 +310,8 @@ static int ina2xx_get_value(struct ina2xx_data *data, u8 reg)
val = (s16)data->regs[reg];
break;
case INA2XX_CALIBRATION:
- val = data->config->calibration_factor / data->regs[reg];
+ val = DIV_ROUND_CLOSEST(data->config->calibration_factor,
+ data->regs[reg]);
break;
default:
/* programmer goofed */
--
2.1.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists