Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usb: isp1760-hcd: convert to readl_poll_timeout_atomic()

Use readl_poll_timeout_atomic() to simplify code

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Link: https://lore.kernel.org/r/1600668815-12135-7-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Chunfeng Yun and committed by
Greg Kroah-Hartman
08305b45 e7d8263b

+9 -11
+9 -11
drivers/usb/isp1760/isp1760-hcd.c
··· 22 22 #include <linux/debugfs.h> 23 23 #include <linux/uaccess.h> 24 24 #include <linux/io.h> 25 + #include <linux/iopoll.h> 25 26 #include <linux/mm.h> 26 27 #include <linux/timer.h> 27 28 #include <asm/unaligned.h> ··· 381 380 u32 mask, u32 done, int usec) 382 381 { 383 382 u32 result; 383 + int ret; 384 384 385 - do { 386 - result = reg_read32(hcd->regs, reg); 387 - if (result == ~0) 388 - return -ENODEV; 389 - result &= mask; 390 - if (result == done) 391 - return 0; 392 - udelay(1); 393 - usec--; 394 - } while (usec > 0); 395 - return -ETIMEDOUT; 385 + ret = readl_poll_timeout_atomic(hcd->regs + reg, result, 386 + ((result & mask) == done || 387 + result == U32_MAX), 1, usec); 388 + if (result == U32_MAX) 389 + return -ENODEV; 390 + 391 + return ret; 396 392 } 397 393 398 394 /* reset a non-running (STS_HALT == 1) controller */