|
@@ -148,7 +148,8 @@ static int ina2xx_get_value(struct ina2xx_data *data, u8 reg)
|
|
|
|
|
|
switch (reg) {
|
|
|
case INA2XX_SHUNT_VOLTAGE:
|
|
|
- val = DIV_ROUND_CLOSEST(data->regs[reg],
|
|
|
+ /* signed register */
|
|
|
+ val = DIV_ROUND_CLOSEST((s16)data->regs[reg],
|
|
|
data->config->shunt_div);
|
|
|
break;
|
|
|
case INA2XX_BUS_VOLTAGE:
|
|
@@ -160,8 +161,8 @@ static int ina2xx_get_value(struct ina2xx_data *data, u8 reg)
|
|
|
val = data->regs[reg] * data->config->power_lsb;
|
|
|
break;
|
|
|
case INA2XX_CURRENT:
|
|
|
- /* LSB=1mA (selected). Is in mA */
|
|
|
- val = data->regs[reg];
|
|
|
+ /* signed register, LSB=1mA (selected), in mA */
|
|
|
+ val = (s16)data->regs[reg];
|
|
|
break;
|
|
|
default:
|
|
|
/* programmer goofed */
|