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

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

Merge "leds: qpnp-wled: Fix configuration of ovp register"

parents ab2e3911 6950b060
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -25,7 +25,8 @@ Optional properties for WLED:
			  are "wled1", "wled2", "wled3", "wled4" and "auto". default is "auto".
- qcom,vref-mv		: maximum reference voltage in mv. default is 350.
- qcom,switch-freq-khz	: switch frequency in khz. default is 800.
- qcom,ovp-mv		: over voltage protection value in mv. default is 17800.
- qcom,ovp-mv		: Over voltage protection threshold in mV. Default is
			  29500.
- qcom,ilim-ma		: maximum current limiter in ma. default is 980.
- qcom,boost-duty-ns	: maximum boost duty cycle in ns. default is 104.
- qcom,mod-freq-khz	: modulation frequency in khz. default is 9600.
+25 −28
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@
#define QPNP_WLED_SWITCH_FREQ_800_KHZ	800
#define QPNP_WLED_SWITCH_FREQ_1600_KHZ	1600
#define QPNP_WLED_SWITCH_FREQ_OVERWRITE 0x80
#define QPNP_WLED_OVP_MASK		0xFC
#define QPNP_WLED_OVP_MASK		GENMASK(1, 0)
#define QPNP_WLED_OVP_17800_MV		17800
#define QPNP_WLED_OVP_19400_MV		19400
#define QPNP_WLED_OVP_29500_MV		29500
@@ -1100,7 +1100,8 @@ static int qpnp_wled_config(struct qpnp_wled *wled)
	if (rc)
		return rc;

	/* Configure the OVP register */
	/* Configure the OVP register only if display type is not AMOLED */
	if (!wled->disp_type_amoled) {
		if (wled->ovp_mv <= QPNP_WLED_OVP_17800_MV) {
			wled->ovp_mv = QPNP_WLED_OVP_17800_MV;
			temp = 3;
@@ -1115,16 +1116,12 @@ static int qpnp_wled_config(struct qpnp_wled *wled)
			temp = 0;
		}

	rc = qpnp_wled_read_reg(wled, &reg,
			QPNP_WLED_OVP_REG(wled->ctrl_base));
	if (rc < 0)
		return rc;
	reg &= QPNP_WLED_OVP_MASK;
	reg |= temp;
	rc = qpnp_wled_write_reg(wled, &reg,
		reg = (u8)temp;
		rc = qpnp_wled_masked_write_reg(wled, QPNP_WLED_OVP_MASK, &reg,
				QPNP_WLED_OVP_REG(wled->ctrl_base));
		if (rc)
			return rc;
	}

	rc = qpnp_wled_read_reg(wled, &reg,
			QPNP_WLED_CTRL_SPARE_REG(wled->ctrl_base));
@@ -1150,7 +1147,7 @@ static int qpnp_wled_config(struct qpnp_wled *wled)

		/* Update WLED_OVP register based on desired target voltage */
		reg = qpnp_wled_ovp_reg_settings[i];
		rc = qpnp_wled_write_reg(wled, &reg,
		rc = qpnp_wled_masked_write_reg(wled, QPNP_WLED_OVP_MASK, &reg,
				QPNP_WLED_OVP_REG(wled->ctrl_base));
		if (rc)
			return rc;
@@ -1574,7 +1571,7 @@ static int qpnp_wled_parse_dt(struct qpnp_wled *wled)
	if (!rc) {
		wled->ovp_mv = temp_val;
	} else if (rc != -EINVAL) {
		dev_err(&spmi->dev, "Unable to read vref\n");
		dev_err(&spmi->dev, "Unable to read ovp\n");
		return rc;
	}