Message ID | 1597902349-8998-9-git-send-email-chunfeng.yun@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,01/11] usb: early: convert to readl_poll_timeout_atomic() | expand |
On 20.08.2020 8:45, Chunfeng Yun wrote: > Use readl_poll_timeout_atomic() to simplify code > > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> > --- > 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... [...] MBR, Sergei
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@mediatek.com> > > --- > > 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
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"); - return -ETIMEDOUT; - } - loops--; - udelay(20); + return ret; } writel(0x0, &mvotg->op_regs->usbintr);
Use readl_poll_timeout_atomic() to simplify code Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> --- v2: udelay 10us instead of 20us according to kerneldoc --- drivers/usb/phy/phy-mv-usb.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)