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

Commit da4cc80e authored by Harry Yang's avatar Harry Yang
Browse files

qcom-charger: Add batch register access support for CC2 removal



Provide a convient and compact way for a bunch of register
reads/saves and writes.

CRs-Fixed: 1079913
Change-Id: Ica6a60f3f5bd1fad624d01ea410e62dbed09dac8
Signed-off-by: default avatarHarry Yang <harryy@codeaurora.org>
parent 85d7e134
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -2027,6 +2027,52 @@ int smblib_set_prop_pd_active(struct smb_charger *chg,
	return rc;
}

int smblib_reg_block_update(struct smb_charger *chg,
				struct reg_info *entry)
{
	int rc = 0;

	while (entry && entry->reg) {
		rc = smblib_read(chg, entry->reg, &entry->bak);
		if (rc < 0) {
			dev_err(chg->dev, "Error in reading %s rc=%d\n",
				entry->desc, rc);
			break;
		}
		entry->bak &= entry->mask;

		rc = smblib_masked_write(chg, entry->reg,
					 entry->mask, entry->val);
		if (rc < 0) {
			dev_err(chg->dev, "Error in writing %s rc=%d\n",
				entry->desc, rc);
			break;
		}
		entry++;
	}

	return rc;
}

int smblib_reg_block_restore(struct smb_charger *chg,
				struct reg_info *entry)
{
	int rc = 0;

	while (entry && entry->reg) {
		rc = smblib_masked_write(chg, entry->reg,
					 entry->mask, entry->bak);
		if (rc < 0) {
			dev_err(chg->dev, "Error in writing %s rc=%d\n",
				entry->desc, rc);
			break;
		}
		entry++;
	}

	return rc;
}

int smblib_set_prop_pd_in_hard_reset(struct smb_charger *chg,
				const union power_supply_propval *val)
{
+8 −0
Original line number Diff line number Diff line
@@ -116,6 +116,14 @@ struct smb_iio {
	struct iio_channel	*batt_i_chan;
};

struct reg_info {
	u16		reg;
	u8		mask;
	u8		val;
	u8		bak;
	const char	*desc;
};

struct smb_charger {
	struct device		*dev;
	char			*name;