diff options
author | Rakesh Bodla <rbodla@nvidia.com> | 2011-08-19 13:30:13 +0530 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2011-09-28 17:29:30 -0700 |
commit | 0cb64dad5735eebc6c43faabaa62f83a14f3abbd (patch) | |
tree | 0ac8bde555e3fe2756ffa18b73d3529a2af1eff5 | |
parent | 9a5568a2fdb4ffa164cd081ea126e2e269ebc593 (diff) |
usb: gadget: fsl: add proper handling of udc pullup
pull up of usb device controller should be done only
in device mode.
Bug 863320
Reviewed-on: http://git-master/r/48605
(cherry picked from commit d35e6c8557eabf864cfda4fbc1644d3fd7767850)
Change-Id: I5d2d1d2b16b100ce16a59969045597761fff0c27
Reviewed-on: http://git-master/r/54891
Reviewed-by: Rakesh Bodla <rbodla@nvidia.com>
Tested-by: Rakesh Bodla <rbodla@nvidia.com>
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
-rw-r--r-- | drivers/usb/gadget/fsl_udc_core.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c index 2736e75dc40a..ba6a5f2cad3f 100644 --- a/drivers/usb/gadget/fsl_udc_core.c +++ b/drivers/usb/gadget/fsl_udc_core.c @@ -1332,13 +1332,16 @@ static int fsl_pullup(struct usb_gadget *gadget, int is_on) udc = container_of(gadget, struct fsl_udc, gadget); udc->softconnect = (is_on != 0); - if (can_pullup(udc)) - fsl_writel((fsl_readl(&dr_regs->usbcmd) | USB_CMD_RUN_STOP), - &dr_regs->usbcmd); - else - fsl_writel((fsl_readl(&dr_regs->usbcmd) & ~USB_CMD_RUN_STOP), - &dr_regs->usbcmd); - + if (udc_controller->transceiver) { + if (udc_controller->transceiver->state == OTG_STATE_B_PERIPHERAL) { + if (can_pullup(udc)) + fsl_writel((fsl_readl(&dr_regs->usbcmd) | USB_CMD_RUN_STOP), + &dr_regs->usbcmd); + else + fsl_writel((fsl_readl(&dr_regs->usbcmd) & ~USB_CMD_RUN_STOP), + &dr_regs->usbcmd); + } + } return 0; } |