summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorSyed Rafiuddin <srafiuddin@nvidia.com>2013-02-11 12:49:50 +0530
committerRiham Haidar <rhaidar@nvidia.com>2013-02-13 12:30:40 -0800
commitbc49c487cd62c7bc1546fdfe2f56d2feb4735729 (patch)
tree28ce69ee2e28c5e6238388fdce0985865da512e4 /drivers/power
parenta6d1d5cf12f7b1005e2c766a86845f87d6843321 (diff)
power: max17048: fix charging status
state of charge suddenly jumps to 0% resolving the same issue. Bug 1214186 Change-Id: I234a369b86678c8ea177c368ff828930f5ccf73b Signed-off-by: Syed Rafiuddin <srafiuddin@nvidia.com> Reviewed-on: http://git-master/r/199267 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.c25
1 files changed, 3 insertions, 22 deletions
diff --git a/drivers/power/max17048_battery.c b/drivers/power/max17048_battery.c
index 2550774db1a6..8068281d950e 100644
--- a/drivers/power/max17048_battery.c
+++ b/drivers/power/max17048_battery.c
@@ -320,8 +320,8 @@ static int max17048_write_rcomp_seg(struct i2c_client *client,
int ret;
uint8_t rcomp_seg_table[16];
- rs2 = rcomp_seg | 0x00FF;
- rs1 = rcomp_seg >> 8;
+ rs2 = (rcomp_seg >> 8) & 0xff;
+ rs1 = rcomp_seg & 0xff;
rcomp_seg_table[0] = rcomp_seg_table[2] = rcomp_seg_table[4] =
rcomp_seg_table[6] = rcomp_seg_table[8] = rcomp_seg_table[10] =
@@ -434,8 +434,7 @@ static int max17048_load_model_data(struct max17048_chip *chip)
static int max17048_initialize(struct max17048_chip *chip)
{
- uint8_t ret, config, status;
- uint16_t wrt_status;
+ uint8_t ret, config;
struct i2c_client *client = chip->client;
struct max17048_battery_model *mdata = chip->pdata->model_data;
@@ -469,28 +468,10 @@ static int max17048_initialize(struct max17048_chip *chip)
if (ret < 0)
return ret;
- /* Hibernate configuration */
- ret = max17048_write_word(client, MAX17048_HIBRT, mdata->hibernate);
- if (ret < 0)
- return ret;
-
ret = max17048_write_word(client, MAX17048_VRESET, mdata->vreset);
if (ret < 0)
return ret;
- /* clears the reset indicator */
- ret = max17048_read_word(client, MAX17048_STATUS);
- if (ret < 0)
- return ret;
-
- /* Sets the EnVR bit if selected */
- status = (ret & 0xFE) | mdata->alert_on_reset;
- wrt_status = status << 8;
-
- ret = max17048_write_word(client, MAX17048_STATUS, wrt_status);
- if (ret < 0)
- return ret;
-
/* Lock model access */
ret = max17048_write_word(client, MAX17048_UNLOCK, 0x0000);
if (ret < 0)