]> Pileus Git - ~andy/linux/commitdiff
staging: comedi: mite: use ilog2()
authorIan Abbott <abbotti@mev.co.uk>
Fri, 14 Sep 2012 16:34:23 +0000 (17:34 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Sep 2012 12:09:07 +0000 (05:09 -0700)
The static inline functions `MITE_IODWBSR_1_WSIZE_bits()` and `CR_RL()`
in "mite.h" work out a base-2 logarithm using a `while` loop.  Change
them to use `ilog2()`.  Also change `CR_RL()` to clamp the maximum value
instead of printing an error.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/mite.h

index 1e04b090437080caba3fb48fe182cf99d61304f8..0c5736cd760b44db820a52a016dacbbff9f14875 100644 (file)
@@ -25,6 +25,7 @@
 #define _MITE_H_
 
 #include <linux/pci.h>
+#include <linux/log2.h>
 #include "../comedidev.h"
 
 /*  #define DEBUG_MITE */
@@ -245,8 +246,9 @@ enum MITE_IODWBSR_bits {
 static inline unsigned MITE_IODWBSR_1_WSIZE_bits(unsigned size)
 {
        unsigned order = 0;
-       while (size >>= 1)
-               ++order;
+
+       BUG_ON(size == 0);
+       order = ilog2(size);
        BUG_ON(order < 1);
        return (order - 1) & 0x1f;
 }
@@ -393,12 +395,10 @@ static inline int CR_RL(unsigned int retry_limit)
 {
        int value = 0;
 
-       while (retry_limit) {
-               retry_limit >>= 1;
-               value++;
-       }
+       if (retry_limit)
+               value = 1 + ilog2(retry_limit);
        if (value > 0x7)
-               printk("comedi: bug! retry_limit too large\n");
+               value = 0x7;
        return (value & 0x7) << 21;
 }