HID: cp2112: Switch to for_each_set_bit() to simplify the code
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 3 Jul 2023 18:52:14 +0000 (21:52 +0300)
committerBenjamin Tissoires <bentiss@kernel.org>
Fri, 28 Jul 2023 15:05:47 +0000 (17:05 +0200)
It's cleaner to use for_each_set_bit() than open coding it.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230703185222.50554-5-andriy.shevchenko@linux.intel.com
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
drivers/hid/hid-cp2112.c

index 51399b2..fb4548f 100644 (file)
@@ -16,6 +16,7 @@
  *   https://www.silabs.com/documents/public/application-notes/an495-cp2112-interface-specification.pdf
  */
 
+#include <linux/bitops.h>
 #include <linux/gpio/consumer.h>
 #include <linux/gpio/machine.h>
 #include <linux/gpio/driver.h>
@@ -1100,7 +1101,6 @@ static void cp2112_gpio_poll_callback(struct work_struct *work)
                                                 gpio_poll_worker.work);
        struct irq_data *d;
        u8 gpio_mask;
-       u8 virqs = (u8)dev->irq_mask;
        u32 irq_type;
        int irq, virq, ret;
 
@@ -1111,11 +1111,7 @@ static void cp2112_gpio_poll_callback(struct work_struct *work)
                goto exit;
 
        gpio_mask = ret;
-
-       while (virqs) {
-               virq = ffs(virqs) - 1;
-               virqs &= ~BIT(virq);
-
+       for_each_set_bit(virq, &dev->irq_mask, 8) {
                if (!dev->gc.to_irq)
                        break;