On Thu, 2020-08-20 at 13:17 +0300, Sergei Shtylyov wrote: > On 20.08.2020 8:45, Chunfeng Yun wrote: > > > Use readl_poll_timeout_atomic() to simplify code > > > > Signed-off-by: Chunfeng Yun <chunfeng.yun@xxxxxxxxxxxx> > > --- > > v2: udelay 10us instead of 20us according to kerneldoc > > --- > > drivers/usb/phy/phy-mv-usb.c | 16 +++++++--------- > > 1 file changed, 7 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/usb/phy/phy-mv-usb.c b/drivers/usb/phy/phy-mv-usb.c > > index ce767ec..e801569 100644 > > --- a/drivers/usb/phy/phy-mv-usb.c > > +++ b/drivers/usb/phy/phy-mv-usb.c > > @@ -8,6 +8,7 @@ > > #include <linux/module.h> > > #include <linux/kernel.h> > > #include <linux/io.h> > > +#include <linux/iopoll.h> > > #include <linux/uaccess.h> > > #include <linux/device.h> > > #include <linux/proc_fs.h> > > @@ -135,8 +136,8 @@ static int mv_otg_set_timer(struct mv_otg *mvotg, unsigned int id, > > > > static int mv_otg_reset(struct mv_otg *mvotg) > > { > > - unsigned int loops; > > u32 tmp; > > + int ret; > > > > /* Stop the controller */ > > tmp = readl(&mvotg->op_regs->usbcmd); > > @@ -146,15 +147,12 @@ static int mv_otg_reset(struct mv_otg *mvotg) > > /* Reset the controller to get default values */ > > writel(USBCMD_CTRL_RESET, &mvotg->op_regs->usbcmd); > > > > - loops = 500; > > - while (readl(&mvotg->op_regs->usbcmd) & USBCMD_CTRL_RESET) { > > - if (loops == 0) { > > - dev_err(&mvotg->pdev->dev, > > + ret = readl_poll_timeout_atomic(&mvotg->op_regs->usbcmd, tmp, > > + (tmp & USBCMD_CTRL_RESET), 10, 10000); > > + if (ret < 0) { > > + dev_err(&mvotg->pdev->dev, > > "Wait for RESET completed TIMEOUT\n"); > > You forgot to re-align this argument, it should start under & on the > previous line... Yes, will fix it, thanks > > [...] > > MBR, Sergei