diff options
author | Yunfan Zhang <yfzhang@marvell.com> | 2012-07-09 22:07:06 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2012-08-23 04:04:16 -0400 |
commit | 1dcaa252fdf01e4ba49ece156812043baf01c7cc (patch) | |
tree | d6e8578eadbde578f7b491e631010b21832beaed | |
parent | 60326ce377090541db9ba1a05a041316ab5b46ec (diff) |
usb: gadget: mv_udc: fix hang when shutdown
Fix system hang in udc shutdown routine which caused by accessing usb
register when clock is disabled. So enable usb clock before access
register.
Signed-off-by: Yunfan Zhang <yfzhang@marvell.com>
Signed-off-by: Neil Zhang <zhangwm@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
-rw-r--r-- | drivers/usb/gadget/mv_udc_core.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/gadget/mv_udc_core.c b/drivers/usb/gadget/mv_udc_core.c index ff6154d1816e..58edff9abcef 100644 --- a/drivers/usb/gadget/mv_udc_core.c +++ b/drivers/usb/gadget/mv_udc_core.c | |||
@@ -2501,9 +2501,11 @@ static void mv_udc_shutdown(struct platform_device *dev) | |||
2501 | u32 mode; | 2501 | u32 mode; |
2502 | 2502 | ||
2503 | /* reset controller mode to IDLE */ | 2503 | /* reset controller mode to IDLE */ |
2504 | mv_udc_enable(udc); | ||
2504 | mode = readl(&udc->op_regs->usbmode); | 2505 | mode = readl(&udc->op_regs->usbmode); |
2505 | mode &= ~3; | 2506 | mode &= ~3; |
2506 | writel(mode, &udc->op_regs->usbmode); | 2507 | writel(mode, &udc->op_regs->usbmode); |
2508 | mv_udc_disable(udc); | ||
2507 | } | 2509 | } |
2508 | 2510 | ||
2509 | static struct platform_driver udc_driver = { | 2511 | static struct platform_driver udc_driver = { |