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

Commit a3ac1974 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "regulator: qpnp-lcdb: Disable the SC irq only for PM660L V1.1 and below"

parents 326a602f a7228925
Loading
Loading
Loading
Loading
+23 −5
Original line number Diff line number Diff line
@@ -218,6 +218,7 @@ struct qpnp_lcdb {
	struct regmap			*regmap;
	struct pmic_revid_data		*pmic_rev_id;
	u32				base;
	u32				wa_flags;
	int				sc_irq;

	/* TTW params */
@@ -288,6 +289,10 @@ enum lcdb_settings_index {
	LCDB_SETTING_MAX,
};

enum lcdb_wa_flags {
	NCP_SCP_DISABLE_WA = BIT(0),
};

static u32 soft_start_us[] = {
	0,
	500,
@@ -747,9 +752,7 @@ static int qpnp_lcdb_enable_wa(struct qpnp_lcdb *lcdb)
		return rc;
	}

	/* execute the below for rev1.1 */
	if (lcdb->pmic_rev_id->rev3 == PM660L_V1P1_REV3 &&
		lcdb->pmic_rev_id->rev4 == PM660L_V1P1_REV4) {
	if (lcdb->wa_flags & NCP_SCP_DISABLE_WA) {
		/*
		 * delay to make sure that the MID pin – ie the
		 * output of the LCDB boost – returns to 0V
@@ -1914,11 +1917,27 @@ static int qpnp_lcdb_init_bst(struct qpnp_lcdb *lcdb)
	return 0;
}

static void qpnp_lcdb_pmic_config(struct qpnp_lcdb *lcdb)
{
	switch (lcdb->pmic_rev_id->pmic_subtype) {
	case PM660L_SUBTYPE:
		if (lcdb->pmic_rev_id->rev4 < PM660L_V2P0_REV4)
			lcdb->wa_flags |= NCP_SCP_DISABLE_WA;
		break;
	default:
		break;
	}

	pr_debug("LCDB wa_flags = 0x%2x\n", lcdb->wa_flags);
}

static int qpnp_lcdb_hw_init(struct qpnp_lcdb *lcdb)
{
	int rc = 0;
	u8 val = 0;

	qpnp_lcdb_pmic_config(lcdb);

	rc = qpnp_lcdb_init_bst(lcdb);
	if (rc < 0) {
		pr_err("Failed to initialize BOOST rc=%d\n", rc);
@@ -1937,8 +1956,7 @@ static int qpnp_lcdb_hw_init(struct qpnp_lcdb *lcdb)
		return rc;
	}

	if (lcdb->sc_irq >= 0 &&
		lcdb->pmic_rev_id->pmic_subtype != PM660L_SUBTYPE) {
	if (lcdb->sc_irq >= 0 && !(lcdb->wa_flags & NCP_SCP_DISABLE_WA)) {
		lcdb->sc_count = 0;
		rc = devm_request_threaded_irq(lcdb->dev, lcdb->sc_irq,
				NULL, qpnp_lcdb_sc_irq_handler, IRQF_ONESHOT,