staging:iio:adis16400: Don't pass 0 to ilog2
authorLars-Peter Clausen <lars@metafoo.de>
Wed, 16 Jan 2013 12:48:00 +0000 (12:48 +0000)
committerJonathan Cameron <jic23@kernel.org>
Sat, 26 Jan 2013 10:07:46 +0000 (10:07 +0000)
ilog2 is not defined for 0, so we need to handle the case where the requested
frequency is larger than the base sampling rate. In this case we'll round down
and set the sampling rate to the base sampling rate.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/staging/iio/imu/adis16400_core.c

index 9c8f5ab7e13bec8a8761eef34eb600ff7e88f89f..cb6622578e9bfa81567ab3fff641f4baaa5310e5 100644 (file)
@@ -178,7 +178,11 @@ static int adis16334_set_freq(struct iio_dev *indio_dev, unsigned int freq)
 {
        unsigned int t;
 
-       t = ilog2(8192 / (freq * 10));
+       freq *= 10;
+       if (freq < 8192)
+               t = ilog2(8192 / freq);
+       else
+               t = 0;
 
        if (t > 0x31)
                t = 0x31;