Commit ba6cc850 authored by Nick Crews's avatar Nick Crews Committed by Sebastian Reichel
Browse files

power: supply: core: Add Standard, Adaptive, and Custom charge types



Add "Standard", "Adaptive", and "Custom" modes to the charge_type
property, to expand the existing "Trickle" and "Fast" modes.
I am adding them in order to support a new Chrome OS device,
but these properties should be general enough that they can be
used on other devices.

The meaning of "Standard" is obvious, but "Adaptive" and "Custom" are
more tricky: "Adaptive" means that the charge controller uses some
custom algorithm to change the charge type automatically, with no
configuration needed. "Custom" means that the charge controller uses the
POWER_SUPPLY_PROP_CHARGE_CONTROL_* properties as configuration for some
other algorithm.

v5 changes:
- Split up adding the charge types and adding the
  POWER_SUPPLY_PROP_CHARGE_CONTROL_START_THRESHOLD and
  POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD properties into
  two different commits.
v4 changes:
- Add documentation for the new properties, and add documentation for
  the the previously missing charge_control_limit and
  charge_control_limit_max properties.

Signed-off-by: default avatarNick Crews <ncrews@chromium.org>
Reviewed-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent 9274c783
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -119,10 +119,16 @@ Date: July 2009
Contact:	linux-pm@vger.kernel.org
Description:
		Represents the type of charging currently being applied to the
		battery.
		battery. "Trickle", "Fast", and "Standard" all mean different
		charging speeds. "Adaptive" means that the charger uses some
		algorithm to adjust the charge rate dynamically, without
		any user configuration required. "Custom" means that the charger
		uses the charge_control_* properties as configuration for some
		different algorithm.

		Access: Read
		Valid values: "Unknown", "N/A", "Trickle", "Fast"
		Access: Read, Write
		Valid values: "Unknown", "N/A", "Trickle", "Fast", "Standard",
			      "Adaptive", "Custom"

What:		/sys/class/power_supply/<supply_name>/charge_term_current
Date:		July 2014
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ static const char * const power_supply_status_text[] = {
};

static const char * const power_supply_charge_type_text[] = {
	"Unknown", "N/A", "Trickle", "Fast"
	"Unknown", "N/A", "Trickle", "Fast", "Standard", "Adaptive", "Custom"
};

static const char * const power_supply_health_text[] = {
+6 −2
Original line number Diff line number Diff line
@@ -40,11 +40,15 @@ enum {
	POWER_SUPPLY_STATUS_FULL,
};

/* What algorithm is the charger using? */
enum {
	POWER_SUPPLY_CHARGE_TYPE_UNKNOWN = 0,
	POWER_SUPPLY_CHARGE_TYPE_NONE,
	POWER_SUPPLY_CHARGE_TYPE_TRICKLE,
	POWER_SUPPLY_CHARGE_TYPE_FAST,
	POWER_SUPPLY_CHARGE_TYPE_TRICKLE,	/* slow speed */
	POWER_SUPPLY_CHARGE_TYPE_FAST,		/* fast speed */
	POWER_SUPPLY_CHARGE_TYPE_STANDARD,	/* normal speed */
	POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE,	/* dynamically adjusted speed */
	POWER_SUPPLY_CHARGE_TYPE_CUSTOM,	/* use CHARGE_CONTROL_* props */
};

enum {