iio:adc:qcom-spmi-vadc : fix undefined __divdi3
authorJonathan Cameron <jic23@kernel.org>
Fri, 30 Dec 2016 18:25:49 +0000 (18:25 +0000)
committerJonathan Cameron <jic23@kernel.org>
Tue, 10 Jan 2017 19:54:59 +0000 (19:54 +0000)
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>
drivers/iio/adc/qcom-spmi-vadc.c

index aaf4caf0650551df40abae367de83bb9b8383e82..18eb2955cc21750ca8698fc2447e0a289988c70e 100644 (file)
@@ -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;
        }