Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 081e4221 authored by Nicholas Troast's avatar Nicholas Troast
Browse files

qcom-charger: smb138x-charger: add parallel enable status properties



There are several ways that the parallel charger can be enabled, and
disabled. Currently charging is enabled by default, but the hardware has
the option to disable the parallel charger via the CHG_EN pin on the
parallel charger. The parallel charger driver controls when the
parallel charger is enabled via the input suspend bit.

To better understand the state of the parallel charger add two power
supply properties to the parallel power supply:

CHARGING_ENABLED	- Reflects whether the parallel charger is
			  enabled by any source.
PIN_ENABLED		- Reflects whether hardware has voted to enable
			  the parallel charger.

Change-Id: I725245178ab02c5ec39b89998f5c2ca3d494c8ee
Signed-off-by: default avatarNicholas Troast <ntroast@codeaurora.org>
parent 9c585526
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -357,6 +357,8 @@ static int smb138x_init_batt_psy(struct smb138x *chip)
 *****************************/

static enum power_supply_property smb138x_parallel_props[] = {
	POWER_SUPPLY_PROP_CHARGING_ENABLED,
	POWER_SUPPLY_PROP_PIN_ENABLED,
	POWER_SUPPLY_PROP_INPUT_SUSPEND,
	POWER_SUPPLY_PROP_VOLTAGE_MAX,
	POWER_SUPPLY_PROP_CURRENT_MAX,
@@ -368,8 +370,21 @@ static int smb138x_parallel_get_prop(struct power_supply *psy,
{
	struct smb_charger *chg = power_supply_get_drvdata(psy);
	int rc = 0;
	u8 temp;

	switch (prop) {
	case POWER_SUPPLY_PROP_CHARGING_ENABLED:
		rc = smblib_read(chg, BATTERY_CHARGER_STATUS_5_REG,
				 &temp);
		if (rc >= 0)
			val->intval = (bool)(temp & CHARGING_ENABLE_BIT);
		break;
	case POWER_SUPPLY_PROP_PIN_ENABLED:
		rc = smblib_read(chg, BATTERY_CHARGER_STATUS_5_REG,
				 &temp);
		if (rc >= 0)
			val->intval = !(temp & DISABLE_CHARGING_BIT);
		break;
	case POWER_SUPPLY_PROP_INPUT_SUSPEND:
		rc = smblib_get_usb_suspend(chg, &val->intval);
		break;