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

Commit 030fd72f authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "power: qpnp-qnovo5: Update scaling factor for PCURR* parameters"

parents 62e73434 f3623d1e
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -227,6 +227,19 @@ static int pt_dis_votable_cb(struct votable *votable, void *data, int disable,
{
	struct qnovo *chip = data;
	int rc;
	u8 val = 0;

	if (!disable) {
		rc = qnovo5_write(chip, QNOVO_PHASE, &val, 1);
		if (rc < 0)
			dev_err(chip->dev, "Couldn't write to QNOVO_PHASE rc=%d\n",
				rc);

		rc = qnovo5_write(chip, QNOVO_P2_TICK, &val, 1);
		if (rc < 0)
			dev_err(chip->dev, "Couldn't write to QNOVO_P2_TICK rc=%d\n",
				rc);
	}

	rc = qnovo5_masked_write(chip, QNOVO_PE_CTRL, QNOVO_PTRAIN_EN_BIT,
				 (bool)disable ? 0 : QNOVO_PTRAIN_EN_BIT);
@@ -450,7 +463,7 @@ static struct param_info params[] = {
		.name			= "PCURR1",
		.start_addr		= QNOVO_PCURR1_LSB,
		.num_regs		= 2,
		.reg_to_unit_multiplier	= 305185, /* converts to nA */
		.reg_to_unit_multiplier	= 488281, /* converts to nA */
		.reg_to_unit_divider	= 1,
		.units_str		= "uA",
	},
@@ -458,7 +471,7 @@ static struct param_info params[] = {
		.name			= "PCURR1_SUM",
		.start_addr		= QNOVO_PCURR1_SUM_LSB,
		.num_regs		= 2,
		.reg_to_unit_multiplier	= 305185, /* converts to nA */
		.reg_to_unit_multiplier	= 488281, /* converts to nA */
		.reg_to_unit_divider	= 1,
		.units_str		= "uA",
	},
@@ -466,7 +479,7 @@ static struct param_info params[] = {
		.name			= "PCURR1_TERMINAL",
		.start_addr		= QNOVO_PCURR1_TERMINAL_LSB,
		.num_regs		= 2,
		.reg_to_unit_multiplier	= 305185, /* converts to nA */
		.reg_to_unit_multiplier	= 488281, /* converts to nA */
		.reg_to_unit_divider	= 1,
		.min_val		= -10000000,
		.max_val		= 10000000,
@@ -540,7 +553,7 @@ static struct param_info params[] = {
		.name			= "PCURR2",
		.start_addr		= QNOVO_PCURR2_LSB,
		.num_regs		= 2,
		.reg_to_unit_multiplier	= 305185, /* converts to nA */
		.reg_to_unit_multiplier	= 488281, /* converts to nA */
		.reg_to_unit_divider	= 1,
		.units_str		= "uA",
	},
+26 −0
Original line number Diff line number Diff line
@@ -1179,7 +1179,9 @@ static enum power_supply_property smb5_batt_props[] = {
	POWER_SUPPLY_PROP_INPUT_CURRENT_LIMITED,
	POWER_SUPPLY_PROP_VOLTAGE_NOW,
	POWER_SUPPLY_PROP_VOLTAGE_MAX,
	POWER_SUPPLY_PROP_VOLTAGE_QNOVO,
	POWER_SUPPLY_PROP_CURRENT_NOW,
	POWER_SUPPLY_PROP_CURRENT_QNOVO,
	POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX,
	POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT,
	POWER_SUPPLY_PROP_TEMP,
@@ -1257,10 +1259,18 @@ static int smb5_batt_get_prop(struct power_supply *psy,
		val->intval = get_client_vote(chg->fv_votable,
				BATT_PROFILE_VOTER);
		break;
	case POWER_SUPPLY_PROP_VOLTAGE_QNOVO:
		val->intval = get_client_vote_locked(chg->fv_votable,
				QNOVO_VOTER);
		break;
	case POWER_SUPPLY_PROP_CURRENT_NOW:
		rc = smblib_get_prop_from_bms(chg,
				POWER_SUPPLY_PROP_CURRENT_NOW, val);
		break;
	case POWER_SUPPLY_PROP_CURRENT_QNOVO:
		val->intval = get_client_vote_locked(chg->fcc_votable,
				QNOVO_VOTER);
		break;
	case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX:
		val->intval = get_client_vote(chg->fcc_votable,
					      BATT_PROFILE_VOTER);
@@ -1361,6 +1371,10 @@ static int smb5_batt_set_prop(struct power_supply *psy,
		chg->batt_profile_fv_uv = val->intval;
		vote(chg->fv_votable, BATT_PROFILE_VOTER, true, val->intval);
		break;
	case POWER_SUPPLY_PROP_VOLTAGE_QNOVO:
		vote(chg->fv_votable, QNOVO_VOTER, (val->intval >= 0),
			val->intval);
		break;
	case POWER_SUPPLY_PROP_STEP_CHARGING_ENABLED:
		chg->step_chg_enabled = !!val->intval;
		break;
@@ -1375,6 +1389,18 @@ static int smb5_batt_set_prop(struct power_supply *psy,
		chg->batt_profile_fcc_ua = val->intval;
		vote(chg->fcc_votable, BATT_PROFILE_VOTER, true, val->intval);
		break;
	case POWER_SUPPLY_PROP_CURRENT_QNOVO:
		vote(chg->pl_disable_votable, PL_QNOVO_VOTER,
			val->intval != -EINVAL && val->intval < 2000000, 0);
		if (val->intval == -EINVAL) {
			vote(chg->fcc_votable, BATT_PROFILE_VOTER,
					true, chg->batt_profile_fcc_ua);
			vote(chg->fcc_votable, QNOVO_VOTER, false, 0);
		} else {
			vote(chg->fcc_votable, QNOVO_VOTER, true, val->intval);
			vote(chg->fcc_votable, BATT_PROFILE_VOTER, false, 0);
		}
		break;
	case POWER_SUPPLY_PROP_SET_SHIP_MODE:
		/* Not in ship mode as long as the device is active */
		if (!val->intval)
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ enum print_reason {
#define SW_QC3_VOTER			"SW_QC3_VOTER"
#define AICL_RERUN_VOTER		"AICL_RERUN_VOTER"
#define SW_ICL_MAX_VOTER		"SW_ICL_MAX_VOTER"
#define PL_QNOVO_VOTER			"PL_QNOVO_VOTER"
#define QNOVO_VOTER			"QNOVO_VOTER"
#define BATT_PROFILE_VOTER		"BATT_PROFILE_VOTER"
#define OTG_DELAY_VOTER			"OTG_DELAY_VOTER"