Loading arch/arm/boot/dts/qcom/mdm9607.dtsi +2 −0 Original line number Diff line number Diff line Loading @@ -711,6 +711,8 @@ qcom,sensors = <5>; qcom,slope = <3000 3000 3000 3000 3000>; qcom,sensor-id = <0 1 2 3 4>; qcom,temp1-offset = <1 (-4) 4 (-3) (-4)>; qcom,temp2-offset = <1 (-4) 4 (-3) (-4)>; }; wcd9xxx_intc: wcd9xxx-irq { Loading drivers/thermal/msm-tsens.c +47 −15 Original line number Diff line number Diff line Loading @@ -2879,8 +2879,21 @@ static int tsens_calib_mdm9607_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_MDM9607_BASE0_MASK); tsens0_point1 = (calib_data[0] & TSENS0_MDM9607_POINT1_MASK) Loading @@ -2893,7 +2906,9 @@ static int tsens_calib_mdm9607_sensors(struct tsens_tm_device *tmdev) tsens4_point1 = (calib_data[2] & TSENS4_MDM9607_POINT1_MASK); } 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[2] & TSENS_MDM9607_BASE1_MASK) >> TSENS_MDM9607_BASE1_SHIFT; tsens0_point2 = (calib_data[0] & TSENS0_MDM9607_POINT2_MASK) Loading @@ -2917,31 +2932,46 @@ static int tsens_calib_mdm9607_sensors(struct tsens_tm_device *tmdev) } if ((tsens_calibration_mode == TSENS_ONE_POINT_CALIB_OPTION_2) || (tsens_calibration_mode == TSENS_TWO_POINT_CALIB)) { (tsens_calibration_mode == TSENS_TWO_POINT_CALIB) || (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); (((tsens_base0_data) + tsens0_point1) << 2) + tmdev->sensor[0].wa_temp1_calib_offset_factor; calib_tsens_point1_data[1] = (((tsens_base0_data) + tsens1_point1) << 2); (((tsens_base0_data) + tsens1_point1) << 2) + tmdev->sensor[1].wa_temp1_calib_offset_factor; calib_tsens_point1_data[2] = (((tsens_base0_data) + tsens2_point1) << 2); (((tsens_base0_data) + tsens2_point1) << 2) + tmdev->sensor[2].wa_temp1_calib_offset_factor; calib_tsens_point1_data[3] = (((tsens_base0_data) + tsens3_point1) << 2); (((tsens_base0_data) + tsens3_point1) << 2) + tmdev->sensor[3].wa_temp1_calib_offset_factor; calib_tsens_point1_data[4] = (((tsens_base0_data) + tsens4_point1) << 2); (((tsens_base0_data) + tsens4_point1) << 2) + tmdev->sensor[4].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); ((tsens_base1_data + tsens0_point2) << 2) + tmdev->sensor[0].wa_temp2_calib_offset_factor; calib_tsens_point2_data[1] = ((tsens_base1_data + tsens1_point2) << 2); ((tsens_base1_data + tsens1_point2) << 2) + tmdev->sensor[1].wa_temp2_calib_offset_factor; calib_tsens_point2_data[2] = ((tsens_base1_data + tsens2_point2) << 2); ((tsens_base1_data + tsens2_point2) << 2) + tmdev->sensor[2].wa_temp2_calib_offset_factor; calib_tsens_point2_data[3] = ((tsens_base1_data + tsens3_point2) << 2); ((tsens_base1_data + tsens3_point2) << 2) + tmdev->sensor[3].wa_temp2_calib_offset_factor; calib_tsens_point2_data[4] = ((tsens_base1_data + tsens4_point2) << 2); ((tsens_base1_data + tsens4_point2) << 2) + tmdev->sensor[4].wa_temp2_calib_offset_factor; } for (i = 0; i < tmdev->tsens_num_sensor; i++) { Loading @@ -2952,7 +2982,9 @@ static int tsens_calib_mdm9607_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) Loading Loading
arch/arm/boot/dts/qcom/mdm9607.dtsi +2 −0 Original line number Diff line number Diff line Loading @@ -711,6 +711,8 @@ qcom,sensors = <5>; qcom,slope = <3000 3000 3000 3000 3000>; qcom,sensor-id = <0 1 2 3 4>; qcom,temp1-offset = <1 (-4) 4 (-3) (-4)>; qcom,temp2-offset = <1 (-4) 4 (-3) (-4)>; }; wcd9xxx_intc: wcd9xxx-irq { Loading
drivers/thermal/msm-tsens.c +47 −15 Original line number Diff line number Diff line Loading @@ -2879,8 +2879,21 @@ static int tsens_calib_mdm9607_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_MDM9607_BASE0_MASK); tsens0_point1 = (calib_data[0] & TSENS0_MDM9607_POINT1_MASK) Loading @@ -2893,7 +2906,9 @@ static int tsens_calib_mdm9607_sensors(struct tsens_tm_device *tmdev) tsens4_point1 = (calib_data[2] & TSENS4_MDM9607_POINT1_MASK); } 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[2] & TSENS_MDM9607_BASE1_MASK) >> TSENS_MDM9607_BASE1_SHIFT; tsens0_point2 = (calib_data[0] & TSENS0_MDM9607_POINT2_MASK) Loading @@ -2917,31 +2932,46 @@ static int tsens_calib_mdm9607_sensors(struct tsens_tm_device *tmdev) } if ((tsens_calibration_mode == TSENS_ONE_POINT_CALIB_OPTION_2) || (tsens_calibration_mode == TSENS_TWO_POINT_CALIB)) { (tsens_calibration_mode == TSENS_TWO_POINT_CALIB) || (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); (((tsens_base0_data) + tsens0_point1) << 2) + tmdev->sensor[0].wa_temp1_calib_offset_factor; calib_tsens_point1_data[1] = (((tsens_base0_data) + tsens1_point1) << 2); (((tsens_base0_data) + tsens1_point1) << 2) + tmdev->sensor[1].wa_temp1_calib_offset_factor; calib_tsens_point1_data[2] = (((tsens_base0_data) + tsens2_point1) << 2); (((tsens_base0_data) + tsens2_point1) << 2) + tmdev->sensor[2].wa_temp1_calib_offset_factor; calib_tsens_point1_data[3] = (((tsens_base0_data) + tsens3_point1) << 2); (((tsens_base0_data) + tsens3_point1) << 2) + tmdev->sensor[3].wa_temp1_calib_offset_factor; calib_tsens_point1_data[4] = (((tsens_base0_data) + tsens4_point1) << 2); (((tsens_base0_data) + tsens4_point1) << 2) + tmdev->sensor[4].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); ((tsens_base1_data + tsens0_point2) << 2) + tmdev->sensor[0].wa_temp2_calib_offset_factor; calib_tsens_point2_data[1] = ((tsens_base1_data + tsens1_point2) << 2); ((tsens_base1_data + tsens1_point2) << 2) + tmdev->sensor[1].wa_temp2_calib_offset_factor; calib_tsens_point2_data[2] = ((tsens_base1_data + tsens2_point2) << 2); ((tsens_base1_data + tsens2_point2) << 2) + tmdev->sensor[2].wa_temp2_calib_offset_factor; calib_tsens_point2_data[3] = ((tsens_base1_data + tsens3_point2) << 2); ((tsens_base1_data + tsens3_point2) << 2) + tmdev->sensor[3].wa_temp2_calib_offset_factor; calib_tsens_point2_data[4] = ((tsens_base1_data + tsens4_point2) << 2); ((tsens_base1_data + tsens4_point2) << 2) + tmdev->sensor[4].wa_temp2_calib_offset_factor; } for (i = 0; i < tmdev->tsens_num_sensor; i++) { Loading @@ -2952,7 +2982,9 @@ static int tsens_calib_mdm9607_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) Loading