udc->resume_state = udc->usb_state;
udc->usb_state = USB_STATE_SUSPENDED;
+
/* report suspend to the driver, serial.c does not support this */
if (udc->driver->suspend)
udc->driver->suspend(&udc->gadget);
u32 tmp;
pdata = udc->pdata;
+
+ /* enable pulldown dp */
+ if (pdata->gadget_discharge_dp)
+ pdata->gadget_discharge_dp(true);
/*
* Some boards are very slow change line state from J to SE0 for DP,
* So, we need to discharge DP, otherwise there is a wakeup interrupt
*/
gadget_wait_line_to_se0();
+ /* Disable pulldown dp */
+ if (pdata->gadget_discharge_dp)
+ pdata->gadget_discharge_dp(false);
+
/*
* Wait class drivers finish, an well-behaviour class driver should
* call ep_disable when it is notified to be disconnected.
fsl_writel(tmp | USB_CMD_RUN_STOP, &dr_regs->usbcmd);
printk(KERN_DEBUG "%s: udc out low power mode\n", __func__);
} else {
- printk(KERN_INFO "USB device disconnected\n");
fsl_writel(tmp & ~USB_CMD_RUN_STOP, &dr_regs->usbcmd);
/* here we need disable B_SESSION_IRQ, after
* schedule_work finished, it need to be enabled again.