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

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: Du, Changbin <changbin.du@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>

authored by

Du, Changbin and committed by
Felipe Balbi
2868fea2 4fefe9f6

+2 -2
+2 -2
drivers/usb/gadget/s3c-hsotg.c
··· 2197 2197 /* issue soft reset */ 2198 2198 writel(GRSTCTL_CSftRst, hsotg->regs + GRSTCTL); 2199 2199 2200 - timeout = 1000; 2200 + timeout = 10000; 2201 2201 do { 2202 2202 grstctl = readl(hsotg->regs + GRSTCTL); 2203 2203 } while ((grstctl & GRSTCTL_CSftRst) && timeout-- > 0); ··· 2207 2207 return -EINVAL; 2208 2208 } 2209 2209 2210 - timeout = 1000; 2210 + timeout = 10000; 2211 2211 2212 2212 while (1) { 2213 2213 u32 grstctl = readl(hsotg->regs + GRSTCTL);