Quoting Jun Li (2016-06-27 01:04:39) > > diff --git a/drivers/usb/chipidea/otg.c b/drivers/usb/chipidea/otg.c index > > 03b6743461d1..763a8332b009 100644 > > --- a/drivers/usb/chipidea/otg.c > > +++ b/drivers/usb/chipidea/otg.c > > @@ -104,7 +104,32 @@ void ci_handle_vbus_change(struct ci_hdrc *ci) > > usb_gadget_vbus_disconnect(&ci->gadget); > > } > > > > -#define CI_VBUS_STABLE_TIMEOUT_MS 5000 > > +/** > > + * Sometimes, it needs to wait register value before going on. > > + * Eg, when switch to device mode, the vbus value should be lower > > + * than OTGSC_BSV before connects to host. > > This should be updated since this API is dedicated for BSV now.
Ok I've updated it to say: When we switch to device mode, the vbus value should be lower than OTGSC_BSV before connecting to host. > > > + * > > + * @ci: the controller > > + * > > + * This function returns an error code if timeout */ static int > > +hw_wait_otgsc_bsv(struct ci_hdrc *ci) { > > + unsigned long elapse = jiffies + msecs_to_jiffies(5000); > > + u32 mask = OTGSC_BSV; > > + > > + while (!hw_read_otgsc(ci, mask)) { > > Reverse logic, should be: > while (hw_read_otgsc(ci, mask)) { > Good catch! Thanks.