Skip to contentSkip to conversation

max17042: Fix value scaling for VCELL and avgVCELL

PATCH 함명주 1 participant 1 message Mar 14, 2012

lore
Share & tools
lore

함명주

author
#0 lore raw

bruce robertson<[email protected]>, 2012-03-14 06:00 (GMT+09:00)

Quoted 19 lines
Quoted 16 lines · Anton Vorontsov
Quoted 8 lines · On Tue, Jan 24, 2012 at 09:26:07AM -0800, [email protected] wrote:

From: Bruce Robertson

The bottom three bits of the register are don't care bits. The LSB value is 625 uV. Adjust the returned values appropriately

Signed-off-by Bruce Robertson
Signed-off-by Dirk Brandewie
Acked-by MyungJoo Ham

I guess this was fixed long ago by the following patch:

commit cf7a8c03db792894f436db5f3ffc44d947b9b068

Author: MyungJoo Ham 
Date:   Wed Aug 17 10:18:34 2011 +0900
Quoted 7 lines
Quoted 4 lines

max17042_battery: Bugfix of incorrect voltage register value interpretation

The calculation had error in getting voltage values from MAX17042 registers. The least bit denotes 78.125uV (625/8).

The multipliers I see in the patch are 83 making the voltages somewhat high and the low 3 bits are not masked off. I'm probably misreading the code.

The patch, commit cf7a8c03db, uses 78.125uV/bit, not 83uV/bit. The code before that patch uses 83uV/bit.

$ git show cf7a8c03db792894f436db5f3ffc44d947b9b068
[...]
drivers/power/max17042_battery.c +4 -4
index 61fb6d7..a6dc9c7 100644
@@ -111,12 +111,12 @@ static int max17042_get_property(struct power_supply *psy,
                val->intval *= 10000; /* Units of LSB = 10mV */
                break;
        case POWER_SUPPLY_PROP_VOLTAGE_NOW:
-               val->intval = max17042_read_reg(chip->client,
-                               MAX17042_VCELL) * 83; /* 1000 / 12 = 83 */
+               val->intval = max17042_read_reg(chip->client, MAX17042_VCELL)
+                           * 625 / 8;
                break;
        case POWER_SUPPLY_PROP_VOLTAGE_AVG:
-               val->intval = max17042_read_reg(chip->client,
-                               MAX17042_AvgVCELL) * 83;
+               val->intval = max17042_read_reg(chip->client, MAX17042_AvgVCELL)
+                           * 625 / 8;
                break;
        case POWER_SUPPLY_PROP_CAPACITY:
                val->intval = max17042_read_reg(chip->client,
Quoted 11 lines
Quoted 8 lines
Signed-off-by MyungJoo Ham
Signed-off-by Philip Rakity
Signed-off-by Kyungmin Park
Signed-off-by Anton Vorontsov

Thanks,

--
MyungJoo Ham (함명주), PHD
System S/W Lab, S/W Platform Team, Software Center Samsung Electronics
Cell: +82-10-6714-2858

�淸�{.n�+돴윯돪�+%듚�깁負쪐w��{.n�+돴쪐{깸G쳺��{ay����,j�f"톒쉹��묎�z_溫(�쉸듶줷"얎�m����G쳺�◀?솳鈺�&x�~뤳턨O뺞촾퇉v�^�m��� �띠�◀?뻀�