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

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

thermal: tsens: Add fuse-based correction factors for MSM8909



Additional per-sensor offets are being observed after factory
calibration.
Fuse-based correction factors are implemented to the existing 30 / 120
deg C calibration fuses.

Change-Id: I64aa07df75b1a5c9353ac7034958853e82d871a3
Signed-off-by: default avatarRama Krishna Phani A <rphani@codeaurora.org>
parent 2be5ff68
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -580,6 +580,12 @@
#define TSENS3_MSM8909_POINT2_SHIFT	10
#define TSENS4_MSM8909_POINT2_SHIFT	22

#define TSENS_MSM8909_D30_WA_S1   10
#define TSENS_MSM8909_D30_WA_S3   9
#define TSENS_MSM8909_D30_WA_S4   8
#define TSENS_MSM8909_D120_WA_S1  6
#define TSENS_MSM8909_D120_WA_S3  9
#define TSENS_MSM8909_D120_WA_S4  10
#define TSENS_ZIRC_CAL_SEL		0x700
#define TSENS_ZIRC_CAL_SEL_SHIFT	8
#define TSENS_BASE0_ZIRC_MASK		0x3ff
@@ -3356,12 +3362,18 @@ static int tsens_calib_msm8909_sensors(struct tsens_tm_device *tmdev)
			(((tsens_base0_data) + tsens0_point1) << 2);
		calib_tsens_point1_data[1] =
			(((tsens_base0_data) + tsens1_point1) << 2);
		calib_tsens_point1_data[1] = calib_tsens_point1_data[1] -
						TSENS_MSM8909_D30_WA_S1;
		calib_tsens_point1_data[2] =
			(((tsens_base0_data) + tsens2_point1) << 2);
		calib_tsens_point1_data[3] =
			(((tsens_base0_data) + tsens3_point1) << 2);
		calib_tsens_point1_data[3] = calib_tsens_point1_data[3] -
						TSENS_MSM8909_D30_WA_S3;
		calib_tsens_point1_data[4] =
			(((tsens_base0_data) + tsens4_point1) << 2);
		calib_tsens_point1_data[4] = calib_tsens_point1_data[4] -
						TSENS_MSM8909_D30_WA_S4;
	}

	if (tsens_calibration_mode == TSENS_TWO_POINT_CALIB) {
@@ -3370,12 +3382,18 @@ static int tsens_calib_msm8909_sensors(struct tsens_tm_device *tmdev)
			((tsens_base1_data + tsens0_point2) << 2);
		calib_tsens_point2_data[1] =
			((tsens_base1_data + tsens1_point2) << 2);
		calib_tsens_point2_data[1] = calib_tsens_point2_data[1] -
						TSENS_MSM8909_D120_WA_S1;
		calib_tsens_point2_data[2] =
			((tsens_base1_data + tsens2_point2) << 2);
		calib_tsens_point2_data[3] =
			((tsens_base1_data + tsens3_point2) << 2);
		calib_tsens_point2_data[3] = calib_tsens_point2_data[3] -
						TSENS_MSM8909_D120_WA_S3;
		calib_tsens_point2_data[4] =
			((tsens_base1_data + tsens4_point2) << 2);
		calib_tsens_point2_data[4] = calib_tsens_point2_data[4] -
						TSENS_MSM8909_D120_WA_S4;
	}

	for (i = 0; i < tmdev->tsens_num_sensor; i++) {