hwmon: qpnp-adc-voltage: Modify temperature compensation

Apply temperature compensation to minimum(die_temp, 60degC)
for vbatt compensation. For OCV temperature compensation
apply the compensation based on the die_temp for the
corresponding PMIC. The temperature compensation is
required on top of gain/offset calibration to compensate
for variations due to chip revision, manufacturer
and temperature.

Change-Id: I0826993ddebe7dae2f033d995fa1266f9509002c
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
diff --git a/drivers/hwmon/qpnp-adc-voltage.c b/drivers/hwmon/qpnp-adc-voltage.c
index 79d5731..346a72d 100644
--- a/drivers/hwmon/qpnp-adc-voltage.c
+++ b/drivers/hwmon/qpnp-adc-voltage.c
@@ -538,32 +538,22 @@
 	if (version == -EINVAL)
 		return 0;
 
-	if (version == QPNP_REV_ID_8110_2_0) {
-		if (die_temp < -20000)
-			die_temp = -20000;
-	} else if (version == QPNP_REV_ID_8026_2_2) {
+	if (version == QPNP_REV_ID_8026_2_2) {
 		if (die_temp > 25000)
 			return 0;
-	} else {
-		if (die_temp < 25000)
-			return 0;
-		if (die_temp > 60000)
-			die_temp = 60000;
 	}
 
 	switch (version) {
 	case QPNP_REV_ID_8941_3_1:
 		switch (vadc->id) {
 		case COMP_ID_TSMC:
-			temp_var = (((die_temp *
-			(-QPNP_VBAT_COEFF_4))
-			+ QPNP_VBAT_COEFF_5));
+			 temp_var = ((die_temp - 25000) *
+			(-QPNP_VBAT_COEFF_4));
 			break;
 		default:
 		case COMP_ID_GF:
-			temp_var = (((die_temp *
-			(-QPNP_VBAT_COEFF_1))
-			+ QPNP_VBAT_COEFF_2));
+			temp_var = ((die_temp - 25000) *
+			(-QPNP_VBAT_COEFF_1));
 			break;
 		}
 		break;
@@ -620,9 +610,6 @@
 				temp_var = QPNP_VBAT_COEFF_19;
 			temp_var = (die_temp - 25000) * temp_var;
 			break;
-		case COMP_ID_TSMC:
-			pr_debug("No TSMC Comp Info, exiting\n");
-			return 0;
 		default:
 		case COMP_ID_GF:
 			*result -= QPNP_OCV_OFFSET_GF;
@@ -662,12 +649,7 @@
 	if (version == -EINVAL)
 		return 0;
 
-	if (version == QPNP_REV_ID_8110_2_0) {
-		if (die_temp < -20000)
-			die_temp = -20000;
-	} else {
-		if (die_temp < 25000)
-			return 0;
+	if (version != QPNP_REV_ID_8941_3_1) {
 		/* min(die_temp_c, 60_degC) */
 		if (die_temp > 60000)
 			die_temp = 60000;
@@ -677,14 +659,16 @@
 	case QPNP_REV_ID_8941_3_1:
 		switch (vadc->id) {
 		case COMP_ID_TSMC:
-			temp_var = (die_temp *
+			temp_var = ((die_temp - 25000) *
 			(-QPNP_VBAT_COEFF_1));
 			break;
 		default:
 		case COMP_ID_GF:
-			temp_var = (((die_temp *
-			(-QPNP_VBAT_COEFF_6))
-			+ QPNP_VBAT_COEFF_7));
+			/* min(die_temp_c, 60_degC) */
+			if (die_temp > 60000)
+				die_temp = 60000;
+			temp_var = ((die_temp - 25000) *
+			(-QPNP_VBAT_COEFF_1));
 			break;
 		}
 		break;
@@ -736,9 +720,6 @@
 			temp_var = ((die_temp - 25000) *
 			(QPNP_VBAT_COEFF_17));
 			break;
-		case COMP_ID_TSMC:
-			pr_debug("No TSMC Comp Info, exiting\n");
-			return 0;
 		default:
 		case COMP_ID_GF:
 			*result -= QPNP_VBAT_OFFSET_GF;