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

Commit cdb3ffa5 authored by Ravindranath Thiyagarajan's avatar Ravindranath Thiyagarajan Committed by Subbaraman Narayanamurthy
Browse files

regulator: qpnp-labibb-regulator: Program LAB_PRECHARGE_CTL unconditionally



Currently, LAB_PRECHARGE_CTL register is programmed if LAB is not
ready to be enabled by IBB. LAB_PRECHARGE_CTL needs to be configured
by the LAB/IBB driver irrespective of its previous setting.

CRs-Fixed: 877370
Change-Id: Idb473ba0b063f010e89b669b79f79349ebfd0d59
Signed-off-by: default avatarRavindranath Thiyagarajan <rthiyaga@codeaurora.org>
Signed-off-by: default avatarSubbaraman Narayanamurthy <subbaram@codeaurora.org>
parent ef0d0e07
Loading
Loading
Loading
Loading
+30 −29
Original line number Diff line number Diff line
@@ -713,35 +713,6 @@ static int qpnp_lab_dt_init(struct qpnp_labibb *labibb,
		return rc;
	}

	rc = of_property_read_u32(of_node, "qcom,qpnp-lab-max-precharge-time",
				&tmp);
	if (rc) {
		pr_err("get qcom,qpnp-lab-max-precharge-time failed, rc = %d\n",
			rc);
		return rc;
	}

	for (val = 0; val < ARRAY_SIZE(lab_max_precharge_plan); val++)
		if (lab_max_precharge_plan[val] == tmp)
			break;

	if (val == ARRAY_SIZE(lab_max_precharge_plan)) {
		pr_err("Invalid property in qcom,qpnp-lab-max-precharge-time\n");
		return -EINVAL;
	}

	if (of_property_read_bool(of_node,
			"qcom,qpnp-lab-max-precharge-enable"))
		val |= LAB_PRECHARGE_CTL_EN;

	rc = qpnp_labibb_write(labibb, labibb->lab_base +
				REG_LAB_PRECHARGE_CTL, &val, 1);
	if (rc) {
		pr_err("qpnp_lab_dt_init write register %x failed rc = %d\n",
			REG_LAB_PRECHARGE_CTL, rc);
		return rc;
	}

	rc = of_property_read_u32(of_node, "qcom,qpnp-lab-init-voltage",
					&(labibb->lab_vreg.curr_volt));
	if (rc) {
@@ -1061,6 +1032,7 @@ static int register_qpnp_lab_regulator(struct qpnp_labibb *labibb,
	u8 val;
	const char *current_sense_str;
	bool config_current_sense = false;
	u32 tmp;

	if (!of_node) {
		dev_err(labibb->dev, "qpnp lab regulator device tree node is missing\n");
@@ -1122,6 +1094,35 @@ static int register_qpnp_lab_regulator(struct qpnp_labibb *labibb,
	labibb->lab_vreg.soft_start = lab_soft_start_plan
				[val & LAB_SOFT_START_CTL_MASK];

	rc = of_property_read_u32(of_node, "qcom,qpnp-lab-max-precharge-time",
				&tmp);
	if (rc) {
		pr_err("get qcom,qpnp-lab-max-precharge-time failed, rc = %d\n",
			rc);
		return rc;
	}

	for (val = 0; val < ARRAY_SIZE(lab_max_precharge_plan); val++)
		if (lab_max_precharge_plan[val] == tmp)
			break;

	if (val == ARRAY_SIZE(lab_max_precharge_plan)) {
		pr_err("Invalid property in qcom,qpnp-lab-max-precharge-time\n");
		return -EINVAL;
	}

	if (of_property_read_bool(of_node,
			"qcom,qpnp-lab-max-precharge-enable"))
		val |= LAB_PRECHARGE_CTL_EN;

	rc = qpnp_labibb_write(labibb, labibb->lab_base +
				REG_LAB_PRECHARGE_CTL, &val, 1);
	if (rc) {
		pr_err("qpnp_lab_dt_init write register %x failed rc = %d\n",
			REG_LAB_PRECHARGE_CTL, rc);
		return rc;
	}

	rc = qpnp_labibb_read(labibb, &val,
				labibb->ibb_base + REG_IBB_ENABLE_CTL, 1);
	if (rc) {