On Tue, Mar 10, 2015 at 04:27:37PM -0500, Felipe Balbi wrote: > hi, > > On Fri, Mar 06, 2015 at 10:36:04AM +0800, Peter Chen wrote: > > @@ -1574,13 +1574,12 @@ static int ci_udc_pullup(struct usb_gadget *_gadget, int is_on) > > { > > struct ci_hdrc *ci = container_of(_gadget, struct ci_hdrc, gadget); > > > > - if (!ci->vbus_active) > > - return -EOPNOTSUPP; > > - > > + pm_runtime_get_sync(&ci->gadget.dev); > > if (is_on) > > hw_write(ci, OP_USBCMD, USBCMD_RS, USBCMD_RS); > > else > > hw_write(ci, OP_USBCMD, USBCMD_RS, 0); > > + pm_runtime_put_sync(&ci->gadget.dev); > > pm_runtime_* here look like they belong to a separate patch ? > For chipidea driver, if vbus is not active, it will enter low power mode, so the ci_udc_pullup will do noop. We remove the vbus condition at this patch, so we need to keep controller active when access register, the udc core will pull down dp when the vbus is not there. -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html