Commit 46cbd0b0 authored by Crag Wang's avatar Crag Wang Committed by Sebastian Reichel
Browse files

power: supply: wilco_ec: Add long life charging mode



This is a long life mode set in the factory for extended warranty
battery, the power charging rate is customized so that battery at
work last longer.

Presently switching to a different battery charging mode is through
EC PID 0x0710 to configure the battery firmware, this operation will
be blocked by EC with failure code 0x01 when PLL mode is already
in use.

Signed-off-by: default avatarCrag Wang <crag.wang@dell.com>
Reviewed-by: default avatarMario Limonciello <mario.limonciello@dell.com>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent 707d678a
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -14,6 +14,10 @@ Description:
			Charging begins when level drops below
			charge_control_start_threshold, and ceases when
			level is above charge_control_end_threshold.
		Long Life: Customized charge rate for last longer battery life.
			On Wilco device this mode is pre-configured in the factory
			through EC's private PID. Swiching to a different mode will
			be denied by Wilco EC when Long Life mode is enabled.

What:		/sys/class/power_supply/wilco-charger/charge_control_start_threshold
Date:		April 2019
+1 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ static const char * const POWER_SUPPLY_CHARGE_TYPE_TEXT[] = {
	[POWER_SUPPLY_CHARGE_TYPE_STANDARD]	= "Standard",
	[POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE]	= "Adaptive",
	[POWER_SUPPLY_CHARGE_TYPE_CUSTOM]	= "Custom",
	[POWER_SUPPLY_CHARGE_TYPE_LONGLIFE]	= "Long Life",
};

static const char * const POWER_SUPPLY_HEALTH_TEXT[] = {
+5 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ enum charge_mode {
	CHARGE_MODE_AC = 3,	/* Mostly AC use, used for Trickle */
	CHARGE_MODE_AUTO = 4,	/* Used for Adaptive */
	CHARGE_MODE_CUSTOM = 5,	/* Used for Custom */
	CHARGE_MODE_LONGLIFE = 6, /* Used for Long Life */
};

#define CHARGE_LOWER_LIMIT_MIN	50
@@ -48,6 +49,8 @@ static int psp_val_to_charge_mode(int psp_val)
		return CHARGE_MODE_AUTO;
	case POWER_SUPPLY_CHARGE_TYPE_CUSTOM:
		return CHARGE_MODE_CUSTOM;
	case POWER_SUPPLY_CHARGE_TYPE_LONGLIFE:
		return CHARGE_MODE_LONGLIFE;
	default:
		return -EINVAL;
	}
@@ -67,6 +70,8 @@ static int charge_mode_to_psp_val(enum charge_mode mode)
		return POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE;
	case CHARGE_MODE_CUSTOM:
		return POWER_SUPPLY_CHARGE_TYPE_CUSTOM;
	case CHARGE_MODE_LONGLIFE:
		return POWER_SUPPLY_CHARGE_TYPE_LONGLIFE;
	default:
		return -EINVAL;
	}
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ enum {
	POWER_SUPPLY_CHARGE_TYPE_STANDARD,	/* normal speed */
	POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE,	/* dynamically adjusted speed */
	POWER_SUPPLY_CHARGE_TYPE_CUSTOM,	/* use CHARGE_CONTROL_* props */
	POWER_SUPPLY_CHARGE_TYPE_LONGLIFE,	/* slow speed, longer life */
};

enum {