Commit d6f015b6 authored by Ian Abbott's avatar Ian Abbott Committed by Greg Kroah-Hartman

staging: comedi: mite: use ilog2()

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: default avatarIan Abbott <abbotti@mev.co.uk>
Reviewed-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7d24e1ac
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#define _MITE_H_ #define _MITE_H_
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/log2.h>
#include "../comedidev.h" #include "../comedidev.h"
/* #define DEBUG_MITE */ /* #define DEBUG_MITE */
...@@ -245,8 +246,9 @@ enum MITE_IODWBSR_bits { ...@@ -245,8 +246,9 @@ enum MITE_IODWBSR_bits {
static inline unsigned MITE_IODWBSR_1_WSIZE_bits(unsigned size) static inline unsigned MITE_IODWBSR_1_WSIZE_bits(unsigned size)
{ {
unsigned order = 0; unsigned order = 0;
while (size >>= 1)
++order; BUG_ON(size == 0);
order = ilog2(size);
BUG_ON(order < 1); BUG_ON(order < 1);
return (order - 1) & 0x1f; return (order - 1) & 0x1f;
} }
...@@ -393,12 +395,10 @@ static inline int CR_RL(unsigned int retry_limit) ...@@ -393,12 +395,10 @@ static inline int CR_RL(unsigned int retry_limit)
{ {
int value = 0; int value = 0;
while (retry_limit) { if (retry_limit)
retry_limit >>= 1; value = 1 + ilog2(retry_limit);
value++;
}
if (value > 0x7) if (value > 0x7)
printk("comedi: bug! retry_limit too large\n"); value = 0x7;
return (value & 0x7) << 21; return (value & 0x7) << 21;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment