]> git.baikalelectronics.ru Git - kernel.git/commitdiff
soundwire: intel: reuse code for wait loops to set/clear bits
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Thu, 16 Jul 2020 15:09:39 +0000 (23:09 +0800)
committerVinod Koul <vkoul@kernel.org>
Tue, 21 Jul 2020 10:35:40 +0000 (16:05 +0530)
Refactor code and use same routines on set/clear

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20200716150947.22119-2-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/soundwire/intel.c

index 7a65414e571499a6eb1eab756d302011fa5f9be1..8c7ae07c0fe191785bbc4b3b02666889f1193fa4 100644 (file)
@@ -123,40 +123,33 @@ static inline void intel_writew(void __iomem *base, int offset, u16 value)
        writew(value, base + offset);
 }
 
-static int intel_clear_bit(void __iomem *base, int offset, u32 value, u32 mask)
+static int intel_wait_bit(void __iomem *base, int offset, u32 mask, u32 target)
 {
        int timeout = 10;
        u32 reg_read;
 
-       writel(value, base + offset);
        do {
                reg_read = readl(base + offset);
-               if (!(reg_read & mask))
+               if ((reg_read & mask) == target)
                        return 0;
 
                timeout--;
-               udelay(50);
+               usleep_range(50, 100);
        } while (timeout != 0);
 
        return -EAGAIN;
 }
 
-static int intel_set_bit(void __iomem *base, int offset, u32 value, u32 mask)
+static int intel_clear_bit(void __iomem *base, int offset, u32 value, u32 mask)
 {
-       int timeout = 10;
-       u32 reg_read;
-
        writel(value, base + offset);
-       do {
-               reg_read = readl(base + offset);
-               if (reg_read & mask)
-                       return 0;
-
-               timeout--;
-               udelay(50);
-       } while (timeout != 0);
+       return intel_wait_bit(base, offset, mask, 0);
+}
 
-       return -EAGAIN;
+static int intel_set_bit(void __iomem *base, int offset, u32 value, u32 mask)
+{
+       writel(value, base + offset);
+       return intel_wait_bit(base, offset, mask, mask);
 }
 
 /*