
On 11-03-20, 17:10, Pierre-Louis Bossart wrote:
Refactor code and use same routines on set/clear
Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com
drivers/soundwire/intel.c | 45 +++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 26 deletions(-)
diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c index 28a8563c4e0f..1a3b828b03a1 100644 --- a/drivers/soundwire/intel.c +++ b/drivers/soundwire/intel.c @@ -134,40 +134,33 @@ static inline void intel_writew(void __iomem *base, int offset, u16 value) writew(value, base + offset); }
+static int intel_wait_bit(void __iomem *base, int offset, u32 mask, u32 target) +{
- int timeout = 10;
- u32 reg_read;
- do {
reg_read = readl(base + offset);
if ((reg_read & mask) == target)
return 0;
timeout--;
udelay(50);
This should use udelay_range, but this can be different patch as this is code move, so okay
- } while (timeout != 0);
- return -EAGAIN;
+}
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 -EAGAIN;
- return intel_wait_bit(base, offset, mask, 0);
}
static int intel_set_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 -EAGAIN;
- return intel_wait_bit(base, offset, mask, mask);
}
/*
2.20.1