]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
power: lc709203f: add interface to get battery soc
authorVenkat Reddy Talla <vreddytalla@nvidia.com>
Thu, 11 Sep 2014 05:06:53 +0000 (10:36 +0530)
committerDhiren Parmar <dparmar@nvidia.com>
Thu, 9 Oct 2014 07:26:54 +0000 (00:26 -0700)
provide interface to get battery state of charge value.
charger driver need battery soc to configure input voltage
limit based on battery soc.

Bug 1516392

Change-Id: I06579e421fb05ea683bca77c69ba0596ea1d50c6
Signed-off-by: Venkat Reddy Talla <vreddytalla@nvidia.com>
Reviewed-on: http://git-master/r/542720
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
drivers/power/lc709203f_battery.c

index e8d5d14e81793eae054d0f160af4dce96d9bfb86..5bfcca6fd88cfa1c8e5cefd37631566d7cfd95c4 100644 (file)
@@ -115,6 +115,22 @@ static int lc709203f_write_word(struct i2c_client *client, u8 reg, u16 value)
        return ret;
 }
 
+static int lc709203f_get_battery_soc(struct battery_gauge_dev *bg_dev)
+{
+       struct lc709203f_chip *chip = battery_gauge_get_drvdata(bg_dev);
+       int val;
+
+       val = lc709203f_read_word(chip->client, LC709203F_RSOC);
+       if (val < 0)
+               dev_err(&chip->client->dev, "%s: err %d\n", __func__, val);
+       else
+               val =  battery_gauge_get_adjusted_soc(chip->bg_dev,
+                               chip->pdata->threshold_soc,
+                               chip->pdata->maximum_soc, val * 100);
+
+       return val;
+}
+
 static int lc709203f_update_soc_voltage(struct lc709203f_chip *chip)
 {
        int val;
@@ -346,6 +362,7 @@ done:
 
 static struct battery_gauge_ops lc709203f_bg_ops = {
        .update_battery_status = lc709203f_update_battery_status,
+       .get_battery_soc = lc709203f_get_battery_soc,
 };
 
 static struct battery_gauge_info lc709203f_bgi = {