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

Commit d5c09ffd authored by Rama Krishna Phani A's avatar Rama Krishna Phani A
Browse files

hwmon: qpnp-adc-voltage: Add temperature compensation for PM8909



Add VBAT and OCV temperature compensation for PM8909.
The temperature compensation is required on top of
gain/offset calibration to compensate for variations
due to chip revision, manufacturer and temperature.

Change-Id: Icc325a5e4e2ef0cbc1298a26da329510cd2c350b
Signed-off-by: default avatarRama Krishna Phani A <rphani@codeaurora.org>
parent 2be5ff68
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -748,6 +748,8 @@ static int32_t
#define QPNP_VBAT_COEFF_48	2190
#define QPNP_VBAT_COEFF_49	4180
#define QPNP_VBAT_COEFF_50	27800000
#define QPNP_VBAT_COEFF_51	5110
#define QPNP_VBAT_COEFF_52	34444000

static int32_t qpnp_ocv_comp(int64_t *result,
			struct qpnp_vadc_chip *vadc, int64_t die_temp)
@@ -920,6 +922,13 @@ static int32_t qpnp_ocv_comp(int64_t *result,
			break;
		}
		break;
	case QPNP_REV_ID_8909_1_1:
		switch (vadc->id) {
		case COMP_ID_SMIC:
			temp_var = (QPNP_VBAT_COEFF_52);
			break;
		}
		break;
	default:
		temp_var = 0;
		break;
@@ -1103,6 +1112,18 @@ static int32_t qpnp_vbat_sns_comp(int64_t *result,
			break;
		}
		break;
	case QPNP_REV_ID_8909_1_1:
		switch (vadc->id) {
		case COMP_ID_SMIC:
			if (die_temp < 30000)
				temp_var = (QPNP_VBAT_COEFF_52);
			else if (die_temp > 30000)
				temp_var = (((die_temp - 30000) *
					(-QPNP_VBAT_COEFF_51)) +
					(QPNP_VBAT_COEFF_52));
			break;
		}
		break;
	default:
		temp_var = 0;
		break;