mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-14 11:28:15 +07:00
usb: gadget: bdc: use readl_poll_timeout() to simplify code
Use readl_poll_timeout() to poll register status Cc: Florian Fainelli <f.fainelli@gmail.com> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Felipe Balbi <balbi@kernel.org>
This commit is contained in:
parent
33a06f1300
commit
75ae051efc
@ -12,6 +12,7 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/list.h>
|
||||
@ -29,24 +30,19 @@
|
||||
#include "bdc_dbg.h"
|
||||
|
||||
/* Poll till controller status is not OIP */
|
||||
static int poll_oip(struct bdc *bdc, int usec)
|
||||
static int poll_oip(struct bdc *bdc, u32 usec)
|
||||
{
|
||||
u32 status;
|
||||
/* Poll till STS!= OIP */
|
||||
while (usec) {
|
||||
status = bdc_readl(bdc->regs, BDC_BDCSC);
|
||||
if (BDC_CSTS(status) != BDC_OIP) {
|
||||
dev_dbg(bdc->dev,
|
||||
"poll_oip complete status=%d",
|
||||
BDC_CSTS(status));
|
||||
return 0;
|
||||
}
|
||||
udelay(10);
|
||||
usec -= 10;
|
||||
}
|
||||
dev_err(bdc->dev, "Err: operation timedout BDCSC: 0x%08x\n", status);
|
||||
int ret;
|
||||
|
||||
return -ETIMEDOUT;
|
||||
ret = readl_poll_timeout(bdc->regs + BDC_BDCSC, status,
|
||||
(BDC_CSTS(status) != BDC_OIP), 10, usec);
|
||||
if (ret)
|
||||
dev_err(bdc->dev, "operation timedout BDCSC: 0x%08x\n", status);
|
||||
else
|
||||
dev_dbg(bdc->dev, "%s complete status=%d", __func__, BDC_CSTS(status));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Stop the BDC controller */
|
||||
|
Loading…
Reference in New Issue
Block a user