[PATCH] atm: idt77252: Replace mdelay with usleep_range in idt77252_preset

From: Jia-Ju Bai
Date: Thu Jan 25 2018 - 22:38:02 EST


After checking all possible call chains to idt77252_preset() here,
my tool finds that idt77252_preset() is never called in atomic context,
namely never in an interrupt handler or holding a spinlock.
And idt77252_preset() calls deinit_card, which calls free_irq (can sleep),
so it indicates that idt77252_preset() can call functions which can sleep.
Thus mdelay can be replaced with usleep_range to avoid busy wait.

This is found by a static analysis tool named DCNS written by myself.

Signed-off-by: Jia-Ju Bai <baijiaju1990@xxxxxxxxx>
---
drivers/atm/idt77252.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
index 0277f36..cea4bf2 100644
--- a/drivers/atm/idt77252.c
+++ b/drivers/atm/idt77252.c
@@ -3563,7 +3563,7 @@ static int idt77252_preset(struct idt77252_dev *card)

/* Software reset */
writel(SAR_CFG_SWRST, SAR_REG_CFG);
- mdelay(1);
+ usleep_range(500, 1000);
writel(0, SAR_REG_CFG);

IPRINTK("%s: Software resetted.\n", card->name);
--
1.7.9.5