All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Pali Rohár" <pali.rohar@gmail.com>
To: linux-kernel@vger.kernel.org, Anton Vorontsov <cbou@mail.ru>,
	syed rafiuddin <rafiuddin.sayed@gmail.com>,
	Rodolfo Giometti <giometti@linux.it>,
	Lars-Peter Clausen <lars@metafoo.de>,
	David Woodhouse <dwmw2@infradead.org>
Cc: "Pali Rohár" <pali.rohar@gmail.com>
Subject: [PATCH 2/9] bq27x00: Add support for property POWER_SUPPLY_PROP_CAPACITY_LEVEL
Date: Tue,  1 Nov 2011 01:43:04 +0100	[thread overview]
Message-ID: <1320108191-6647-2-git-send-email-pali.rohar@gmail.com> (raw)
In-Reply-To: <1320108191-6647-1-git-send-email-pali.rohar@gmail.com>

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
---
 drivers/power/bq27x00_battery.c |   40 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index d238144..a531122 100644
--- a/drivers/power/bq27x00_battery.c
+++ b/drivers/power/bq27x00_battery.c
@@ -54,12 +54,16 @@
 
 #define BQ27000_REG_RSOC		0x0B /* Relative State-of-Charge */
 #define BQ27000_REG_ILMD		0x76 /* Initial last measured discharge */
-#define BQ27000_FLAG_CHGS		BIT(7)
+#define BQ27000_FLAG_EDVF		BIT(0) /* Final End-of-Discharge-Voltage flag */
+#define BQ27000_FLAG_EDV1		BIT(1) /* First End-of-Discharge-Voltage flag */
 #define BQ27000_FLAG_FC			BIT(5)
+#define BQ27000_FLAG_CHGS		BIT(7) /* Charge state flag */
 
 #define BQ27500_REG_SOC			0x2C
 #define BQ27500_REG_DCAP		0x3C /* Design capacity */
 #define BQ27500_FLAG_DSC		BIT(0)
+#define BQ27500_FLAG_SOCF		BIT(1) /* State-of-Charge threshold final */
+#define BQ27500_FLAG_SOC1		BIT(2) /* State-of-Charge threshold 1 */
 #define BQ27500_FLAG_FC			BIT(9)
 
 #define BQ27000_RS			20 /* Resistor sense */
@@ -106,6 +110,7 @@ static enum power_supply_property bq27x00_battery_props[] = {
 	POWER_SUPPLY_PROP_VOLTAGE_NOW,
 	POWER_SUPPLY_PROP_CURRENT_NOW,
 	POWER_SUPPLY_PROP_CAPACITY,
+	POWER_SUPPLY_PROP_CAPACITY_LEVEL,
 	POWER_SUPPLY_PROP_TEMP,
 	POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
 	POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG,
@@ -373,6 +378,36 @@ static int bq27x00_battery_status(struct bq27x00_device_info *di,
 	return 0;
 }
 
+static int bq27x00_battery_capacity_level(struct bq27x00_device_info *di,
+	union power_supply_propval *val)
+{
+	int level;
+
+	if (di->chip == BQ27500) {
+		if (di->cache.flags & BQ27500_FLAG_FC)
+			level = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
+		else if (di->cache.flags & BQ27500_FLAG_SOC1)
+			level = POWER_SUPPLY_CAPACITY_LEVEL_LOW;
+		else if (di->cache.flags & BQ27500_FLAG_SOCF)
+			level = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL;
+		else
+			level = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
+	} else {
+		if (di->cache.flags & BQ27000_FLAG_FC)
+			level = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
+		else if (di->cache.flags & BQ27000_FLAG_EDV1)
+			level = POWER_SUPPLY_CAPACITY_LEVEL_LOW;
+		else if (di->cache.flags & BQ27000_FLAG_EDVF)
+			level = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL;
+		else
+			level = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
+	}
+
+	val->intval = level;
+
+	return 0;
+}
+
 /*
  * Return the battery Voltage in milivolts
  * Or < 0 if something fails.
@@ -464,6 +499,9 @@ static int bq27x00_battery_get_property(struct power_supply *psy,
 	case POWER_SUPPLY_PROP_CAPACITY:
 		ret = bq27x00_simple_value(di->cache.capacity, val);
 		break;
+	case POWER_SUPPLY_PROP_CAPACITY_LEVEL:
+		ret = bq27x00_battery_capacity_level(di, val);
+		break;
 	case POWER_SUPPLY_PROP_TEMP:
 		ret = bq27x00_battery_temperature(di, val);
 		break;
-- 
1.7.5.4


  reply	other threads:[~2011-11-01  0:47 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-20 15:18 [PATCH 1/7] bq27x00: Do not cache current_now value for bq27000 batery Pali Rohár
2011-09-20 15:18 ` [PATCH 2/7] bq27x00: Add support for property POWER_SUPPLY_PROP_CAPACITY_LEVEL Pali Rohár
2011-09-20 15:18 ` [PATCH 3/7] bq27x00: Report -ENODATA if bq27000 battery was not calibrated Pali Rohár
2011-09-20 15:18 ` [PATCH 4/7] bq27x00: Cache energy property Pali Rohár
2011-09-20 15:18 ` [PATCH 5/7] bq27x00: Cache temperature value in converted unit Pali Rohár
2011-09-20 15:18 ` [PATCH 6/7] bq27x00: Fix reporting status value for bq27500 battery Pali Rohár
2011-09-20 15:18 ` [PATCH 7/7] bq27x00: Fix reporting error messages Pali Rohár
2011-11-01  0:43 ` [PATCH 1/9] bq27x00: Do not cache current_now value for bq27000 batery Pali Rohár
2011-11-01  0:43   ` Pali Rohár [this message]
2011-11-01  0:43   ` [PATCH 3/9] bq27x00: Report -ENODATA if bq27000 battery was not calibrated Pali Rohár
2011-11-01  0:43   ` [PATCH 4/9] bq27x00: Cache energy property Pali Rohár
2011-11-01  0:43   ` [PATCH 5/9] bq27x00: Cache temperature value in converted unit Pali Rohár
2011-11-01  0:43   ` [PATCH 6/9] bq27x00: Fix reporting status value for bq27500 battery Pali Rohár
2011-11-01  0:43   ` [PATCH 7/9] bq27x00: Fix reporting error messages Pali Rohár
2011-11-01  0:43   ` [PATCH 8/9] bq27x00: Add miscdevice for each battery with ioctl for reading registers Pali Rohár
2011-11-01 12:09     ` Lars-Peter Clausen
2011-11-01 12:23       ` Pali Rohár
2011-11-01 12:46         ` Lars-Peter Clausen
2011-11-01 12:53           ` Pali Rohár
2011-11-25 20:10             ` Anton Vorontsov
2011-11-25 20:30               ` Pali Rohár
2011-11-25 20:46                 ` Anton Vorontsov
2011-11-25 20:54                   ` Pali Rohár
2011-11-25 22:04                     ` Anton Vorontsov
2011-11-25 22:48                       ` Pali Rohár
2011-11-27 11:54                       ` Mark Brown
2011-12-05 19:37                         ` Pali Rohár
2011-12-05 19:40                           ` Mark Brown
2011-11-01  0:43   ` [PATCH 9/9] bq27x00: Fix OOPS caused by unregistring bq27x00 driver Pali Rohár
2011-11-13 20:54     ` Pali Rohár
2011-11-25 22:53 ` [PATCH] rx51: add bq27200 i2c board info Pali Rohár
2011-11-25 23:03   ` Anton Vorontsov
2011-12-05 19:24     ` Felipe Contreras
2011-12-06 15:49     ` Pali Rohár
2011-12-07 20:25     ` Tony Lindgren
2011-12-17  9:55       ` Pali Rohár
2012-01-06  1:41       ` Anton Vorontsov

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=1320108191-6647-2-git-send-email-pali.rohar@gmail.com \
    --to=pali.rohar@gmail.com \
    --cc=cbou@mail.ru \
    --cc=dwmw2@infradead.org \
    --cc=giometti@linux.it \
    --cc=lars@metafoo.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafiuddin.sayed@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.