Commit 2868fea2 authored by Du, Changbin's avatar Du, Changbin Committed by Felipe Balbi

usb: gadget: s3c-hsotg: fix core reset timeout failure

The timeout values were 1000 and timeout issue occured many times on my
s3c6410 Soc based board (mostly when booting whith USB cable not
connected). This patch increase the values to 10000 to guarantee the
success of reset.

Having set timeout to 10000, I printed the remained timeout values
which could cause timeout issue before this change (tested several
times).
the first timeout value remained:
	timeout = 8079
	timeout = 8079
	timeout = 8078
	timeout = 8081
the second timeout value remained:
	timeout = 7940
	timeout = 7945
	timeout = 7940
	timeout = 7938
Seeing from above values, I think the value 10000 is big enough.
Signed-off-by: default avatarDu, Changbin <changbin.du@gmail.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 4fefe9f6
...@@ -2197,7 +2197,7 @@ static int s3c_hsotg_corereset(struct s3c_hsotg *hsotg) ...@@ -2197,7 +2197,7 @@ static int s3c_hsotg_corereset(struct s3c_hsotg *hsotg)
/* issue soft reset */ /* issue soft reset */
writel(GRSTCTL_CSftRst, hsotg->regs + GRSTCTL); writel(GRSTCTL_CSftRst, hsotg->regs + GRSTCTL);
timeout = 1000; timeout = 10000;
do { do {
grstctl = readl(hsotg->regs + GRSTCTL); grstctl = readl(hsotg->regs + GRSTCTL);
} while ((grstctl & GRSTCTL_CSftRst) && timeout-- > 0); } while ((grstctl & GRSTCTL_CSftRst) && timeout-- > 0);
...@@ -2207,7 +2207,7 @@ static int s3c_hsotg_corereset(struct s3c_hsotg *hsotg) ...@@ -2207,7 +2207,7 @@ static int s3c_hsotg_corereset(struct s3c_hsotg *hsotg)
return -EINVAL; return -EINVAL;
} }
timeout = 1000; timeout = 10000;
while (1) { while (1) {
u32 grstctl = readl(hsotg->regs + GRSTCTL); u32 grstctl = readl(hsotg->regs + GRSTCTL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment