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

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

Merge "hwmon: qpnp-adc: add PM8916 1.0/1.1/2.0 temperature compensation"

parents d653a004 c55724f0
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -1267,6 +1267,27 @@ int qpnp_adc_get_revid_version(struct device *dev)
		(revid_data->pmic_type == PM8110_V2P0_TYPE) &&
		(revid_data->pmic_subtype == PM8110_V2P0_SUBTYPE))
			return QPNP_REV_ID_8110_2_0;
	else if ((revid_data->rev1 == PM8916_V1P0_REV1) &&
		(revid_data->rev2 == PM8916_V1P0_REV2) &&
		(revid_data->rev3 == PM8916_V1P0_REV3) &&
		(revid_data->rev4 == PM8916_V1P0_REV4) &&
		(revid_data->pmic_type == PM8916_V1P0_TYPE) &&
		(revid_data->pmic_subtype == PM8916_V1P0_SUBTYPE))
			return QPNP_REV_ID_8916_1_0;
	else if ((revid_data->rev1 == PM8916_V1P1_REV1) &&
		(revid_data->rev2 == PM8916_V1P1_REV2) &&
		(revid_data->rev3 == PM8916_V1P1_REV3) &&
		(revid_data->rev4 == PM8916_V1P1_REV4) &&
		(revid_data->pmic_type == PM8916_V1P1_TYPE) &&
		(revid_data->pmic_subtype == PM8916_V1P1_SUBTYPE))
			return QPNP_REV_ID_8916_1_1;
	else if ((revid_data->rev1 == PM8916_V2P0_REV1) &&
		(revid_data->rev2 == PM8916_V2P0_REV2) &&
		(revid_data->rev3 == PM8916_V2P0_REV3) &&
		(revid_data->rev4 == PM8916_V2P0_REV4) &&
		(revid_data->pmic_type == PM8916_V2P0_TYPE) &&
		(revid_data->pmic_subtype == PM8916_V2P0_SUBTYPE))
			return QPNP_REV_ID_8916_2_0;
	else
		return -EINVAL;
}
+40 −0
Original line number Diff line number Diff line
@@ -527,6 +527,9 @@ static int32_t qpnp_vadc_version_check(struct qpnp_vadc_chip *dev)
#define QPNP_VBAT_COEFF_23	3500
#define QPNP_VBAT_COEFF_24	4360
#define QPNP_VBAT_COEFF_25	8060
#define QPNP_VBAT_COEFF_26	7895
#define QPNP_VBAT_COEFF_27	5658
#define QPNP_VBAT_COEFF_28	5760

static int32_t qpnp_ocv_comp(int64_t *result,
			struct qpnp_vadc_chip *vadc, int64_t die_temp)
@@ -622,6 +625,28 @@ static int32_t qpnp_ocv_comp(int64_t *result,
			break;
		}
		break;
	case QPNP_REV_ID_8916_1_0:
	case QPNP_REV_ID_8916_1_1:
	case QPNP_REV_ID_8916_2_0:
		switch (vadc->id) {
		case COMP_ID_SMIC:
			if (die_temp < 25000)
				temp_var = QPNP_VBAT_COEFF_26;
			else
				temp_var = QPNP_VBAT_COEFF_27;
			temp_var = (die_temp - 25000) * temp_var;
			break;
		default:
		case COMP_ID_GF:
			*result -= QPNP_OCV_OFFSET_GF;
			if (die_temp < 25000)
				temp_var = QPNP_VBAT_COEFF_26;
			else
				temp_var = QPNP_VBAT_COEFF_27;
			temp_var = (die_temp - 25000) * temp_var;
			break;
		}
		break;
	default:
		temp_var = 0;
		break;
@@ -729,6 +754,21 @@ static int32_t qpnp_vbat_sns_comp(int64_t *result,
			break;
		}
		break;
	case QPNP_REV_ID_8916_1_0:
	case QPNP_REV_ID_8916_1_1:
	case QPNP_REV_ID_8916_2_0:
		switch (vadc->id) {
		case COMP_ID_SMIC:
			temp_var = ((die_temp - 25000) *
			(QPNP_VBAT_COEFF_28));
			break;
		default:
		case COMP_ID_GF:
			temp_var = ((die_temp - 25000) *
			(QPNP_VBAT_COEFF_28));
			break;
		}
		break;
	default:
		temp_var = 0;
		break;
+22 −1
Original line number Diff line number Diff line
/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -97,6 +97,27 @@
#define PM8110_V2P0_TYPE	0x51
#define PM8110_V2P0_SUBTYPE	0x05

#define PM8916_V1P0_REV1	0x00
#define PM8916_V1P0_REV2	0x00
#define PM8916_V1P0_REV3	0x00
#define PM8916_V1P0_REV4	0x01
#define PM8916_V1P0_TYPE	0x51
#define PM8916_V1P0_SUBTYPE	0x0B

#define PM8916_V1P1_REV1	0x00
#define PM8916_V1P1_REV2	0x00
#define PM8916_V1P1_REV3	0x01
#define PM8916_V1P1_REV4	0x01
#define PM8916_V1P1_TYPE	0x51
#define PM8916_V1P1_SUBTYPE	0x0B

#define PM8916_V2P0_REV1	0x00
#define PM8916_V2P0_REV2	0x00
#define PM8916_V2P0_REV3	0x00
#define PM8916_V2P0_REV4	0x02
#define PM8916_V2P0_TYPE	0x51
#define PM8916_V2P0_SUBTYPE	0x0B

struct pmic_revid_data {
	u8	rev1;
	u8	rev2;
+3 −1
Original line number Diff line number Diff line
@@ -1035,7 +1035,9 @@ struct qpnp_adc_amux_properties {
#define QPNP_REV_ID_8026_2_2	7
#define QPNP_REV_ID_8941_3_0	8
#define QPNP_REV_ID_8941_2_0	9

#define QPNP_REV_ID_8916_1_0	10
#define QPNP_REV_ID_8916_1_1	11
#define QPNP_REV_ID_8916_2_0	12

/* Public API */
#if defined(CONFIG_SENSORS_QPNP_ADC_VOLTAGE)				\