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

Commit 18061fde authored by Harry Yang's avatar Harry Yang
Browse files

power: smb5: support smb_en_reason property in USB psy



Show the input source type when SMB1390 is enabled: PPS or HVDCP3,
otherwise none.

Change-Id: I2c8bf8116947f453cd943bed8a0deebaf0ec09a7
Signed-off-by: default avatarHarry Yang <harryy@codeaurora.org>
parent ae56b6a5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -545,6 +545,7 @@ static enum power_supply_property smb5_usb_props[] = {
	POWER_SUPPLY_PROP_CONNECTOR_HEALTH,
	POWER_SUPPLY_PROP_VOLTAGE_MAX,
	POWER_SUPPLY_PROP_SMB_EN_MODE,
	POWER_SUPPLY_PROP_SMB_EN_REASON,
	POWER_SUPPLY_PROP_SCOPE,
};

@@ -676,6 +677,9 @@ static int smb5_usb_get_prop(struct power_supply *psy,
	case POWER_SUPPLY_PROP_SMB_EN_MODE:
		val->intval = chg->sec_chg_selected;
		break;
	case POWER_SUPPLY_PROP_SMB_EN_REASON:
		val->intval = chg->cp_reason;
		break;
	default:
		pr_err("get prop %d is not supported in usb\n", psp);
		rc = -EINVAL;
+7 −0
Original line number Diff line number Diff line
@@ -2744,12 +2744,15 @@ int smblib_set_prop_pd_active(struct smb_charger *chg,
			if (rc < 0)
				dev_err(chg->dev, "Couldn't enable secondary charger rc=%d\n",
					rc);
			else
				chg->cp_reason = POWER_SUPPLY_CP_PPS;
		}
	} else {
		vote(chg->usb_icl_votable, SW_ICL_MAX_VOTER, true, SDP_100_MA);
		vote(chg->usb_icl_votable, PD_VOTER, false, 0);
		vote(chg->usb_irq_enable_votable, PD_VOTER, false, 0);

		chg->cp_reason = POWER_SUPPLY_CP_NONE;
		rc = smblib_select_sec_charger(chg,
			chg->sec_pl_present ? POWER_SUPPLY_CHARGER_SEC_PL :
						POWER_SUPPLY_CHARGER_SEC_NONE);
@@ -3348,6 +3351,8 @@ static void smblib_handle_hvdcp_3p0_auth_done(struct smb_charger *chg,
		if (rc < 0)
			dev_err(chg->dev,
			"Couldn't enable secondary chargers  rc=%d\n", rc);
		else
			chg->cp_reason = POWER_SUPPLY_CP_HVDCP3;
	}

	smblib_dbg(chg, PR_INTERRUPT, "IRQ: hvdcp-3p0-auth-done rising; %s detected\n",
@@ -3603,6 +3608,7 @@ static void typec_src_removal(struct smb_charger *chg)
	struct smb_irq_data *data;
	struct storm_watch *wdata;

	chg->cp_reason = POWER_SUPPLY_CP_NONE;
	rc = smblib_select_sec_charger(chg,
			chg->sec_pl_present ? POWER_SUPPLY_CHARGER_SEC_PL :
						POWER_SUPPLY_CHARGER_SEC_NONE);
@@ -4358,6 +4364,7 @@ int smblib_init(struct smb_charger *chg)
	chg->sink_src_mode = UNATTACHED_MODE;
	chg->jeita_configured = false;
	chg->sec_chg_selected = POWER_SUPPLY_CHARGER_SEC_NONE;
	chg->cp_reason = POWER_SUPPLY_CP_NONE;

	switch (chg->mode) {
	case PARALLEL_MASTER:
+1 −0
Original line number Diff line number Diff line
@@ -321,6 +321,7 @@ struct smb_charger {
	bool			sec_pl_present;
	bool			sec_cp_present;
	int			sec_chg_selected;
	int			cp_reason;

	/* pd */
	int			voltage_min_uv;