From: Lee Jones <lee.jones@linaro.org>
To: linux-kernel@vger.kernel.org
Cc: cbou@mail.ru, pender01 <peter.enderborg@stericsson.com>,
Lee Jones <lee.jones@linaro.org>
Subject: [PATCH 11/18] power: ab8500_fg: Round capacity output
Date: Thu, 13 Dec 2012 15:21:34 +0000 [thread overview]
Message-ID: <1355412102-14265-12-git-send-email-lee.jones@linaro.org> (raw)
In-Reply-To: <1355412102-14265-1-git-send-email-lee.jones@linaro.org>
From: pender01 <peter.enderborg@stericsson.com>
Round the capacity values for better enduser experience.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: pender01 <peter.enderborg@stericsson.com>
Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Tested-by: Marcus COOPER <marcus.xm.cooper@stericsson.com>
---
drivers/power/ab8500_fg.c | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/drivers/power/ab8500_fg.c b/drivers/power/ab8500_fg.c
index c24dba1..5aa981e 100644
--- a/drivers/power/ab8500_fg.c
+++ b/drivers/power/ab8500_fg.c
@@ -32,6 +32,7 @@
#include <linux/mfd/abx500/ab8500.h>
#include <linux/mfd/abx500/ab8500-bm.h>
#include <linux/mfd/abx500/ab8500-gpadc.h>
+#include <linux/kernel.h>
#define MILLI_TO_MICRO 1000
#define FG_LSB_IN_MA 1627
@@ -1158,7 +1159,7 @@ static int ab8500_fg_capacity_level(struct ab8500_fg *di)
{
int ret, percent;
- percent = di->bat_cap.permille / 10;
+ percent = DIV_ROUND_CLOSEST(di->bat_cap.permille, 10);
if (percent <= di->bm->cap_levels->critical ||
di->flags.low_bat)
@@ -1279,6 +1280,7 @@ static void ab8500_fg_update_cap_scalers(struct ab8500_fg *di)
static void ab8500_fg_check_capacity_limits(struct ab8500_fg *di, bool init)
{
bool changed = false;
+ int percent = DIV_ROUND_CLOSEST(di->bat_cap.permille, 10);
di->bat_cap.level = ab8500_fg_capacity_level(di);
@@ -1310,6 +1312,7 @@ static void ab8500_fg_check_capacity_limits(struct ab8500_fg *di, bool init)
dev_dbg(di->dev, "Battery low, set capacity to 0\n");
di->bat_cap.prev_percent = 0;
di->bat_cap.permille = 0;
+ percent = 0;
di->bat_cap.prev_mah = 0;
di->bat_cap.mah = 0;
changed = true;
@@ -1319,7 +1322,7 @@ static void ab8500_fg_check_capacity_limits(struct ab8500_fg *di, bool init)
* and show 100% during maintenance charging (scaling).
*/
if (di->flags.force_full) {
- di->bat_cap.prev_percent = di->bat_cap.permille / 10;
+ di->bat_cap.prev_percent = percent;
di->bat_cap.prev_mah = di->bat_cap.mah;
changed = true;
@@ -1332,19 +1335,18 @@ static void ab8500_fg_check_capacity_limits(struct ab8500_fg *di, bool init)
di->bat_cap.prev_percent;
di->bat_cap.cap_scale.disable_cap_level = 100;
}
- } else if ( di->bat_cap.prev_percent !=
- (di->bat_cap.permille) / 10) {
+ } else if (di->bat_cap.prev_percent != percent) {
dev_dbg(di->dev,
"battery reported full "
"but capacity dropping: %d\n",
- di->bat_cap.permille / 10);
- di->bat_cap.prev_percent = di->bat_cap.permille / 10;
+ percent);
+ di->bat_cap.prev_percent = percent;
di->bat_cap.prev_mah = di->bat_cap.mah;
changed = true;
}
- } else if (di->bat_cap.prev_percent != di->bat_cap.permille / 10) {
- if (di->bat_cap.permille / 10 == 0) {
+ } else if (di->bat_cap.prev_percent != percent) {
+ if (percent == 0) {
/*
* We will not report 0% unless we've got
* the LOW_BAT IRQ, no matter what the FG
@@ -1354,11 +1356,11 @@ static void ab8500_fg_check_capacity_limits(struct ab8500_fg *di, bool init)
di->bat_cap.permille = 1;
di->bat_cap.prev_mah = 1;
di->bat_cap.mah = 1;
+ percent = 1;
changed = true;
} else if (!(!di->flags.charging &&
- (di->bat_cap.permille / 10) >
- di->bat_cap.prev_percent) || init) {
+ percent > di->bat_cap.prev_percent) || init) {
/*
* We do not allow reported capacity to go up
* unless we're charging or if we're in init
@@ -1366,9 +1368,9 @@ static void ab8500_fg_check_capacity_limits(struct ab8500_fg *di, bool init)
dev_dbg(di->dev,
"capacity changed from %d to %d (%d)\n",
di->bat_cap.prev_percent,
- di->bat_cap.permille / 10,
+ percent,
di->bat_cap.permille);
- di->bat_cap.prev_percent = di->bat_cap.permille / 10;
+ di->bat_cap.prev_percent = percent;
di->bat_cap.prev_mah = di->bat_cap.mah;
changed = true;
@@ -1376,7 +1378,7 @@ static void ab8500_fg_check_capacity_limits(struct ab8500_fg *di, bool init)
dev_dbg(di->dev, "capacity not allowed to go up since "
"no charger is connected: %d to %d (%d)\n",
di->bat_cap.prev_percent,
- di->bat_cap.permille / 10,
+ percent,
di->bat_cap.permille);
}
}
--
1.7.9.5
next prev parent reply other threads:[~2012-12-13 15:24 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-13 15:21 [PATCH 00/18] AB8500 battery management series upgrade Lee Jones
2012-12-13 15:21 ` [PATCH 01/18] power: ab8500_charger: Rename the power_loss function Lee Jones
2013-01-03 11:55 ` Lee Jones
2012-12-13 15:21 ` [PATCH 02/18] power: ab8500_bm: Skip first CCEOC irq for instant current Lee Jones
2012-12-13 15:21 ` [PATCH 03/18] power: ab8500_charger: Detect removed charger Lee Jones
2012-12-13 15:21 ` [PATCH 04/18] power: ab8500_fg: flush sync on suspend Lee Jones
2012-12-13 15:21 ` [PATCH 05/18] power: ab8500_fg: usleep_range instead of short msleep Lee Jones
2012-12-13 15:21 ` [PATCH 06/18] power: ab8500_charger: Handle gpadc errors Lee Jones
2012-12-13 15:21 ` [PATCH 07/18] power: ab8500_bm: Recharge condition not optimal for battery Lee Jones
2012-12-13 15:21 ` [PATCH 08/18] power: ab8500_fg: balance IRQ enable Lee Jones
2012-12-13 15:21 ` [PATCH 09/18] power: ab8500_btemp: Ignore false btemp low interrupt Lee Jones
2012-12-13 15:21 ` [PATCH 10/18] power: ab8500_bm: Adds support for Car/Travel Adapters Lee Jones
2012-12-13 15:21 ` Lee Jones [this message]
2012-12-13 15:21 ` [PATCH 12/18] power: ab8500_btemp: remove superfluous BTEMP thermal comp Lee Jones
2012-12-13 15:21 ` [PATCH 13/18] power: ab8500_fg: Added support for BATT_OVV Lee Jones
2012-12-13 15:21 ` [PATCH 14/18] power: pm2301: Add pm2301 charger Lee Jones
2012-12-13 15:21 ` [PATCH 15/18] power: ab8500_fg: Add sysfs interfaces for capacity Lee Jones
2012-12-13 15:21 ` [PATCH 16/18] power: ab8500_charger: remove unused defines Lee Jones
2012-12-13 15:21 ` [PATCH 17/18] power: ab8500_charger: Adds support for legacy USB chargers Lee Jones
2012-12-13 15:21 ` [PATCH 18/18] Power: ab8500_fg: Overflow in current calculation Lee Jones
2013-01-05 21:20 ` [PATCH 00/18] AB8500 battery management series upgrade Anton Vorontsov
2013-01-07 9:30 ` Lee Jones
2013-01-11 13:12 Lee Jones
2013-01-11 13:12 ` [PATCH 11/18] power: ab8500_fg: Round capacity output Lee Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1355412102-14265-12-git-send-email-lee.jones@linaro.org \
--to=lee.jones@linaro.org \
--cc=cbou@mail.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=peter.enderborg@stericsson.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®