summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorHyongbin Kim <hyongbink@nvidia.com>2013-05-24 15:48:11 +0900
committerRiham Haidar <rhaidar@nvidia.com>2013-05-29 11:54:39 -0700
commit3866b0842434571f7279a59d19d1053a97238b3b (patch)
treef2114386532d1d036ddd5e7cf16b37141ec1616e /drivers/power
parente55037e29a3d506edcd2cf2f908ded12ee233fe9 (diff)
power: max17048: Add 18-bit model SOC calculate.
When model data is 18-bit, 1LSb=1%SOC. Bug 1293141 Change-Id: I247bfa1fa5a6ee1c442a5e7f5cb647df4cdda0f0 Signed-off-by: Hyongbin Kim <hyongbink@nvidia.com> Reviewed-on: http://git-master/r/232468 Reviewed-by: Riham Haidar <rhaidar@nvidia.com> Tested-by: Riham Haidar <rhaidar@nvidia.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/max17048_battery.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/power/max17048_battery.c b/drivers/power/max17048_battery.c
index a74cfe236e2e..f72d5181b61f 100644
--- a/drivers/power/max17048_battery.c
+++ b/drivers/power/max17048_battery.c
@@ -261,13 +261,18 @@ static void max17048_get_vcell(struct i2c_client *client)
static void max17048_get_soc(struct i2c_client *client)
{
struct max17048_chip *chip = i2c_get_clientdata(client);
+ struct max17048_battery_model *mdata = chip->pdata->model_data;
int soc;
soc = max17048_read_word(client, MAX17048_SOC);
if (soc < 0)
dev_err(&client->dev, "%s: err %d\n", __func__, soc);
- else
- chip->soc = (uint16_t)soc >> 9;
+ else {
+ if (mdata->bits == 18)
+ chip->soc = (uint16_t)soc >> 8;
+ else
+ chip->soc = (uint16_t)soc >> 9;
+ }
if (chip->soc >= MAX17048_BATTERY_FULL && chip->charge_complete != 1)
chip->soc = MAX17048_BATTERY_FULL-1;