Input: zhenhua - switch to using bitrev8()
authorYalin Wang <yalin.wang2010@gmail.com>
Fri, 21 Aug 2015 00:41:42 +0000 (17:41 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 21 Aug 2015 00:44:34 +0000 (17:44 -0700)
Instead of custom zhenhua_bitreverse() let's use generic bitrev8().

Signed-off-by: Yalin Wang <yalin.wang2010@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/joystick/zhenhua.c

index 30af2e8c670cded3ec6fb7b20e383a8b7e80982a..4a8258bf13fd4e1c0d39ef6e41401ec82483b287 100644 (file)
@@ -47,6 +47,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/slab.h>
+#include <linux/bitrev.h>
 #include <linux/input.h>
 #include <linux/serio.h>
 
@@ -72,16 +73,6 @@ struct zhenhua {
        char phys[32];
 };
 
-
-/* bits in all incoming bytes needs to be "reversed" */
-static int zhenhua_bitreverse(int x)
-{
-       x = ((x & 0xaa) >> 1) | ((x & 0x55) << 1);
-       x = ((x & 0xcc) >> 2) | ((x & 0x33) << 2);
-       x = ((x & 0xf0) >> 4) | ((x & 0x0f) << 4);
-       return x;
-}
-
 /*
  * zhenhua_process_packet() decodes packets the driver receives from the
  * RC transmitter. It updates the data accordingly.
@@ -120,7 +111,7 @@ static irqreturn_t zhenhua_interrupt(struct serio *serio, unsigned char data, un
                return IRQ_HANDLED;     /* wrong MSB -- ignore this byte */
 
        if (zhenhua->idx < ZHENHUA_MAX_LENGTH)
-               zhenhua->data[zhenhua->idx++] = zhenhua_bitreverse(data);
+               zhenhua->data[zhenhua->idx++] = bitrev8(data);
 
        if (zhenhua->idx == ZHENHUA_MAX_LENGTH) {
                zhenhua_process_packet(zhenhua);