OSDN Git Service

dmaengine: hsu: using for_each_set_bit to simplify the code
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 13 Jul 2022 17:22:33 +0000 (20:22 +0300)
committerVinod Koul <vkoul@kernel.org>
Sun, 4 Sep 2022 17:19:35 +0000 (22:49 +0530)
It's more cleanly to use for_each_set_bit() instead of opencoding it.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220713172235.22611-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/hsu/pci.c

index 4ed6a4e..8cdf715 100644 (file)
 static irqreturn_t hsu_pci_irq(int irq, void *dev)
 {
        struct hsu_dma_chip *chip = dev;
-       u32 dmaisr;
-       u32 status;
+       unsigned long dmaisr;
        unsigned short i;
+       u32 status;
        int ret = 0;
        int err;
 
        dmaisr = readl(chip->regs + HSU_PCI_DMAISR);
-       for (i = 0; i < chip->hsu->nr_channels; i++) {
-               if (dmaisr & 0x1) {
-                       err = hsu_dma_get_status(chip, i, &status);
-                       if (err > 0)
-                               ret |= 1;
-                       else if (err == 0)
-                               ret |= hsu_dma_do_irq(chip, i, status);
-               }
-               dmaisr >>= 1;
+       for_each_set_bit(i, &dmaisr, chip->hsu->nr_channels) {
+               err = hsu_dma_get_status(chip, i, &status);
+               if (err > 0)
+                       ret |= 1;
+               else if (err == 0)
+                       ret |= hsu_dma_do_irq(chip, i, status);
        }
 
        return IRQ_RETVAL(ret);