diff --git a/drivers/iio/adc/qcom-vadc-common.c b/drivers/iio/adc/qcom-vadc-common.c index 8ace02030a58..b960995daa96 100644 --- a/drivers/iio/adc/qcom-vadc-common.c +++ b/drivers/iio/adc/qcom-vadc-common.c @@ -581,7 +581,8 @@ static int qcom_vadc7_scale_hw_calib_die_temp( } else { vtemp0 = adcmap7_die_temp[i-1].x; voltage = voltage - vtemp0; - temp = voltage/(adcmap7_die_temp[i-1].y); + temp = div64_s64(voltage * DIE_TEMP_ADC7_SCALE_FACTOR, + adcmap7_die_temp[i-1].y); temp += DIE_TEMP_ADC7_SCALE_1 + (DIE_TEMP_ADC7_SCALE_2 * (i-1)); *result_mdec = temp; } diff --git a/drivers/iio/adc/qcom-vadc-common.h b/drivers/iio/adc/qcom-vadc-common.h index b50ae8748db2..a4d0fc739948 100644 --- a/drivers/iio/adc/qcom-vadc-common.h +++ b/drivers/iio/adc/qcom-vadc-common.h @@ -53,9 +53,10 @@ #define R_PU_100K 100000 #define RATIO_MAX_ADC7 0x4000 -#define DIE_TEMP_ADC7_SCALE_1 -60 -#define DIE_TEMP_ADC7_SCALE_2 20 -#define DIE_TEMP_ADC7_MAX 160 +#define DIE_TEMP_ADC7_SCALE_1 -60000 +#define DIE_TEMP_ADC7_SCALE_2 20000 +#define DIE_TEMP_ADC7_SCALE_FACTOR 1000 +#define DIE_TEMP_ADC7_MAX 160000 /** * struct vadc_map_pt - Map the graph representation for ADC channel