mirror of https://gitee.com/openkylin/linux.git
spi: sh-msiof: Use readl_poll_timeout_atomic() instead of open-coding
Replace the open-coded loop in sh_msiof_modify_ctr_wait() by a call to the readl_poll_timeout_atomic() helper macro. Suggested-by: Wolfram Sang <wsa@the-dreams.de> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
8863eca8c4
commit
9115b4d89b
|
@ -18,6 +18,7 @@
|
|||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
|
@ -219,21 +220,14 @@ static int sh_msiof_modify_ctr_wait(struct sh_msiof_spi_priv *p,
|
|||
{
|
||||
u32 mask = clr | set;
|
||||
u32 data;
|
||||
int k;
|
||||
|
||||
data = sh_msiof_read(p, CTR);
|
||||
data &= ~clr;
|
||||
data |= set;
|
||||
sh_msiof_write(p, CTR, data);
|
||||
|
||||
for (k = 100; k > 0; k--) {
|
||||
if ((sh_msiof_read(p, CTR) & mask) == set)
|
||||
break;
|
||||
|
||||
udelay(10);
|
||||
}
|
||||
|
||||
return k > 0 ? 0 : -ETIMEDOUT;
|
||||
return readl_poll_timeout_atomic(p->mapbase + CTR, data,
|
||||
(data & mask) == set, 10, 1000);
|
||||
}
|
||||
|
||||
static irqreturn_t sh_msiof_spi_irq(int irq, void *data)
|
||||
|
|
Loading…
Reference in New Issue