Преглед на файлове

iio:adc:qcom-spmi-vadc : fix undefined __divdi3

A simple do_div call works here as all the signed 64 bit is
actually small and unsigned at this point, and the numerator is
u32.

Introduce a temporary u64 variable to avoid type comparison warnings
on some architectures.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Cc: Rama Krishna Phani A <rphani@codeaurora.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Jonathan Cameron преди 8 години
родител
ревизия
2bd72d84f6
променени са 1 файла, в които са добавени 4 реда и са изтрити 2 реда
  1. 4 2
      drivers/iio/adc/qcom-spmi-vadc.c

+ 4 - 2
drivers/iio/adc/qcom-spmi-vadc.c

@@ -658,13 +658,15 @@ static int vadc_scale_die_temp(struct vadc_priv *vadc,
 {
 	const struct vadc_prescale_ratio *prescale;
 	s64 voltage = 0;
+	u64 temp; /* Temporary variable for do_div */
 
 	vadc_scale_calib(vadc, adc_code, prop, &voltage);
 
 	if (voltage > 0) {
 		prescale = &vadc_prescale_ratios[prop->prescale];
-		voltage = voltage * prescale->den;
-		voltage /= (prescale->num * 2);
+		temp = voltage * prescale->den;
+		do_div(temp, prescale->num * 2);
+		voltage = temp;
 	} else {
 		voltage = 0;
 	}