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

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

thermal: tsens: Update calib logic for correction factors on MSM8937



Fuse based correction factors are needed for some calibration modes.
Update logic accordingly such that correction factors are applied for
required calibration modes.

Change-Id: If676868005c04655a084a1a931d0cb5464854802
Signed-off-by: default avatarRama Krishna Phani A <rphani@codeaurora.org>
parent 64182585
Loading
Loading
Loading
Loading
+28 −6
Original line number Diff line number Diff line
@@ -2719,8 +2719,21 @@ static int tsens_calib_msm8937_msmgold_sensors(struct tsens_tm_device *tmdev)
		pr_debug("calib mode is %d\n", tsens_calibration_mode);
	}

	if ((tsens_calibration_mode == TSENS_TWO_POINT_CALIB_N_WA) ||
		(tsens_calibration_mode ==
					TSENS_TWO_POINT_CALIB_N_OFFSET_WA)) {
		pr_debug("No offsets needed for these calib modes\n");
		for (i = 0; i < tmdev->tsens_num_sensor; i++) {
			tmdev->sensor[i].wa_temp1_calib_offset_factor = 0;
			tmdev->sensor[i].wa_temp2_calib_offset_factor = 0;
		}
	}

	if ((tsens_calibration_mode == TSENS_TWO_POINT_CALIB) ||
		(tsens_calibration_mode == TSENS_ONE_POINT_CALIB_OPTION_2)) {
		(tsens_calibration_mode == TSENS_ONE_POINT_CALIB_OPTION_2) ||
		(tsens_calibration_mode == TSENS_TWO_POINT_CALIB_N_WA) ||
		(tsens_calibration_mode ==
					TSENS_TWO_POINT_CALIB_N_OFFSET_WA)) {
		tsens_base0_data = (calib_data[0] &
						TSENS_CONTR_14_BASE0_MASK);
		tsens0_point1 = (calib_data[2] &
@@ -2760,7 +2773,9 @@ static int tsens_calib_msm8937_msmgold_sensors(struct tsens_tm_device *tmdev)
				>> TSENS10_CONTR_14_POINT1_SHIFT;
	}

	if (tsens_calibration_mode == TSENS_TWO_POINT_CALIB) {
	if ((tsens_calibration_mode == TSENS_TWO_POINT_CALIB) ||
		(tsens_calibration_mode ==
					TSENS_TWO_POINT_CALIB_N_OFFSET_WA)) {
		tsens_base1_data = (calib_data[1] &
					TSENS_CONTR_14_BASE1_MASK)
				>> TSENS_CONTR_14_BASE1_SHIFT;
@@ -2808,8 +2823,11 @@ static int tsens_calib_msm8937_msmgold_sensors(struct tsens_tm_device *tmdev)
		}
	}

	if ((tsens_calibration_mode == TSENS_ONE_POINT_CALIB_OPTION_2) ||
		(tsens_calibration_mode == TSENS_TWO_POINT_CALIB)) {
	if ((tsens_calibration_mode == TSENS_TWO_POINT_CALIB) ||
		(tsens_calibration_mode == TSENS_ONE_POINT_CALIB_OPTION_2) ||
		(tsens_calibration_mode == TSENS_TWO_POINT_CALIB_N_WA) ||
		(tsens_calibration_mode ==
					TSENS_TWO_POINT_CALIB_N_OFFSET_WA)) {
		calib_tsens_point1_data[0] =
				(((tsens_base0_data) + tsens0_point1) << 2) +
				tmdev->sensor[0].wa_temp1_calib_offset_factor;
@@ -2846,7 +2864,9 @@ static int tsens_calib_msm8937_msmgold_sensors(struct tsens_tm_device *tmdev)
				tmdev->sensor[10].wa_temp1_calib_offset_factor;
	}

	if (tsens_calibration_mode == TSENS_TWO_POINT_CALIB) {
	if ((tsens_calibration_mode == TSENS_TWO_POINT_CALIB) ||
		(tsens_calibration_mode ==
					TSENS_TWO_POINT_CALIB_N_OFFSET_WA)){
		pr_debug("two point calibration calculation\n");
		calib_tsens_point2_data[0] =
				((tsens_base1_data + tsens0_point2) << 2) +
@@ -2892,7 +2912,9 @@ static int tsens_calib_msm8937_msmgold_sensors(struct tsens_tm_device *tmdev)
		pr_debug("sensor:%d - calib_data_point1:0x%x, calib_data_point2:0x%x\n",
				i, tmdev->sensor[i].calib_data_point1,
				tmdev->sensor[i].calib_data_point2);
		if (tsens_calibration_mode == TSENS_TWO_POINT_CALIB) {
		if ((tsens_calibration_mode == TSENS_TWO_POINT_CALIB) ||
			(tsens_calibration_mode ==
					TSENS_TWO_POINT_CALIB_N_OFFSET_WA)){
			/*
			 * slope (m) = adc_code2 - adc_code1 (y2 - y1)
			 * temp_120_degc - temp_30_degc (x2 - x1)