summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPreetham Chandru <pchandru@nvidia.com>2012-07-10 18:42:16 +0530
committerSimone Willett <swillett@nvidia.com>2012-08-16 13:37:48 -0700
commitbe3e9def273181d1b44c1891de8602faebd719a8 (patch)
tree9798d1ba85d629dfd074f9374d4646d09b545e93
parentaa0cae6ab52a7fc278ee3cc29d56cc4daa807004 (diff)
usb: gadget: tegra_udc: Enable DR IRQ in udc_start
Currently dr_controller_run() is called only during otg state change. When we unload a gadget driver, for example g_mass_storage gadget driver, dr_controller_stop() is called but when it is loaded back dr_controller_run() won't get called becasue of the if condition failure. i.e if (!udc->transceiver) { dr_controller_run(udc); } So when the gadget driver is loaded for the second time without removing the cable (i.e without otg state change), the device won't get enumerated on the host because DR IRQs are not enabled. This CL fixes the above issue. Bug 1012787 Signed-off-by: Preetham Chandru <pchandru@nvidia.com> Change-Id: Ia127630e24dbe4c1e418163c2b858efb3baa8e45 Reviewed-on: http://git-master/r/114592 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
-rw-r--r--drivers/usb/gadget/tegra_udc.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/usb/gadget/tegra_udc.c b/drivers/usb/gadget/tegra_udc.c
index 3e82222054bc..ace9f2ecaff1 100644
--- a/drivers/usb/gadget/tegra_udc.c
+++ b/drivers/usb/gadget/tegra_udc.c
@@ -2298,13 +2298,11 @@ static int tegra_udc_start(struct usb_gadget_driver *driver,
/* Enable DR IRQ reg and Set usbcmd reg Run bit */
- if (!udc->transceiver) {
- dr_controller_run(udc);
- udc->usb_state = USB_STATE_ATTACHED;
- udc->ep0_state = WAIT_FOR_SETUP;
- udc->ep0_dir = 0;
- udc->vbus_active = vbus_enabled(udc);
- }
+ dr_controller_run(udc);
+ udc->usb_state = USB_STATE_ATTACHED;
+ udc->ep0_state = WAIT_FOR_SETUP;
+ udc->ep0_dir = 0;
+ udc->vbus_active = vbus_enabled(udc);
printk(KERN_INFO "%s: bind to driver %s\n",
udc->gadget.name, driver->driver.name);