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

Commit 3c388933 authored by Harry Yang's avatar Harry Yang
Browse files

power: smb5-lib: Fix Type-C CTM status



Typec-C connector temperature mitgation status is reported
one level higher than what it is supposed to be, which leads
to over-reduction of USB input current limit.

Fix it.

Change-Id: I547efece8e9cd6e2b076713af822b8dada2661f5
Signed-off-by: default avatarHarry Yang <harryy@codeaurora.org>
parent 55e5efd5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -611,7 +611,7 @@ static int smb5_usb_get_prop(struct power_supply *psy,
		break;
	case POWER_SUPPLY_PROP_CONNECTOR_HEALTH:
		if (chg->connector_health == -EINVAL)
			rc = smblib_get_prop_connector_health(chg, val);
			val->intval = smblib_get_prop_connector_health(chg);
		else
			val->intval = chg->connector_health;
		break;
+11 −21
Original line number Diff line number Diff line
@@ -2324,8 +2324,7 @@ int smblib_get_prop_die_health(struct smb_charger *chg,
	return 0;
}

int smblib_get_prop_connector_health(struct smb_charger *chg,
						union power_supply_propval *val)
int smblib_get_prop_connector_health(struct smb_charger *chg)
{
	int rc;
	u8 stat;
@@ -2334,28 +2333,19 @@ int smblib_get_prop_connector_health(struct smb_charger *chg,
	if (rc < 0) {
		smblib_err(chg, "Couldn't read CONNECTOR_TEMP_STATUS_REG, rc=%d\n",
									rc);
		return rc;
		return POWER_SUPPLY_HEALTH_UNKNOWN;
	}

	/* Thermal status bits are mutually exclusive */
	switch (stat) {
	case CONNECTOR_TEMP_LB_BIT:
		val->intval = POWER_SUPPLY_HEALTH_COOL;
		break;
	case CONNECTOR_TEMP_UB_BIT:
		val->intval = POWER_SUPPLY_HEALTH_WARM;
		break;
	case CONNECTOR_TEMP_RST_BIT:
		val->intval = POWER_SUPPLY_HEALTH_HOT;
		break;
	case CONNECTOR_TEMP_SHDN_BIT:
		val->intval = POWER_SUPPLY_HEALTH_OVERHEAT;
		break;
	default:
		val->intval = POWER_SUPPLY_HEALTH_UNKNOWN;
	}
	if (stat & CONNECTOR_TEMP_RST_BIT)
		return POWER_SUPPLY_HEALTH_OVERHEAT;

	return 0;
	if (stat & CONNECTOR_TEMP_UB_BIT)
		return POWER_SUPPLY_HEALTH_HOT;

	if (stat & CONNECTOR_TEMP_LB_BIT)
		return POWER_SUPPLY_HEALTH_WARM;

	return POWER_SUPPLY_HEALTH_COOL;
}

#define SDP_CURRENT_UA			500000
+1 −2
Original line number Diff line number Diff line
@@ -517,8 +517,7 @@ int smblib_get_prop_charger_temp(struct smb_charger *chg,
				union power_supply_propval *val);
int smblib_get_prop_die_health(struct smb_charger *chg,
			       union power_supply_propval *val);
int smblib_get_prop_connector_health(struct smb_charger *chg,
			       union power_supply_propval *val);
int smblib_get_prop_connector_health(struct smb_charger *chg);
int smblib_set_prop_pd_current_max(struct smb_charger *chg,
				const union power_supply_propval *val);
int smblib_set_prop_sdp_current_max(struct smb_charger *chg,