RE: [PATCH 04/21] usb: chipidea: Only read/write OTGSC from one place

Stephen Boyd
2016-06-27T19:08:03Z

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.