Message ID | 1375432445-31918-12-git-send-email-peter.chen@freescale.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Aug 09, 2013 at 04:23:11PM +0300, Alexander Shishkin wrote: > Peter Chen <peter.chen@freescale.com> writes: > > > CI_HDRC_REGS_SHARED stands for the controller registers is shared > > with other USB drivers, if all USB drivers are at chipidea/, it doesn't > > needed to set. > > We still have the msm driver that uses REGS_SHARED. > Yes, I have considered it. At udc interrupt handler, the REGS_SHARED is still used. The msm set both CI_HDRC_REGS_SHARED and CI_HDRC_PULLUP_ON_VBUS. > > CI_HDRC_PULLUP_ON_VBUS stands for pullup dp when the vbus is on. This > > flag doesn't need to set if the vbus is always on for gadget > > since dp has always pulled up after the gadget has initialized. > > Didn't we agree at some point to get rid of this flag altogether once we > have proper VBUS detection? Yes, we can delete it now, the reason why I haven't remove it is: I met some use cases that the vbus is always on recently, no connection/disconnection. Eg, the USB audio device connects to Apple Sound machine, the vbus is the power of the device system. I checked the code just now again, we can cover such kind of case.
Peter Chen <peter.chen@freescale.com> writes: > CI_HDRC_REGS_SHARED stands for the controller registers is shared > with other USB drivers, if all USB drivers are at chipidea/, it doesn't > needed to set. We still have the msm driver that uses REGS_SHARED. > CI_HDRC_PULLUP_ON_VBUS stands for pullup dp when the vbus is on. This > flag doesn't need to set if the vbus is always on for gadget > since dp has always pulled up after the gadget has initialized. Didn't we agree at some point to get rid of this flag altogether once we have proper VBUS detection? > > So, the current code seems to misuse this two flags. > - When the gadget initializes, the controller doesn't need to run if > it depends on vbus (CI_HDRC_PULLUP_ON_VBUS), it does not > relate to shared register. > - When the gadget starts (load one gadget module), the controller > can run if vbus is on (CI_HDRC_PULLUP_ON_VBUS), it also does not > relate to shared register. > > Tested-by: Marek Vasut <marex@denx.de> > Signed-off-by: Peter Chen <peter.chen@freescale.com> > --- > drivers/usb/chipidea/udc.c | 5 ++--- > 1 files changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c > index c70ce38..45abf4d 100644 > --- a/drivers/usb/chipidea/udc.c > +++ b/drivers/usb/chipidea/udc.c > @@ -1637,8 +1637,7 @@ static int ci_udc_start(struct usb_gadget *gadget, > pm_runtime_get_sync(&ci->gadget.dev); > if (ci->platdata->flags & CI_HDRC_PULLUP_ON_VBUS) { > if (ci->vbus_active) { > - if (ci->platdata->flags & CI_HDRC_REGS_SHARED) > - hw_device_reset(ci, USBMODE_CM_DC); > + hw_device_reset(ci, USBMODE_CM_DC); > } else { > pm_runtime_put_sync(&ci->gadget.dev); > goto done; > @@ -1801,7 +1800,7 @@ static int udc_start(struct ci_hdrc *ci) > } > } > > - if (!(ci->platdata->flags & CI_HDRC_REGS_SHARED)) { > + if (!(ci->platdata->flags & CI_HDRC_PULLUP_ON_VBUS)) { > retval = hw_device_reset(ci, USBMODE_CM_DC); > if (retval) > goto put_transceiver; > -- > 1.7.0.4
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index c70ce38..45abf4d 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -1637,8 +1637,7 @@ static int ci_udc_start(struct usb_gadget *gadget, pm_runtime_get_sync(&ci->gadget.dev); if (ci->platdata->flags & CI_HDRC_PULLUP_ON_VBUS) { if (ci->vbus_active) { - if (ci->platdata->flags & CI_HDRC_REGS_SHARED) - hw_device_reset(ci, USBMODE_CM_DC); + hw_device_reset(ci, USBMODE_CM_DC); } else { pm_runtime_put_sync(&ci->gadget.dev); goto done; @@ -1801,7 +1800,7 @@ static int udc_start(struct ci_hdrc *ci) } } - if (!(ci->platdata->flags & CI_HDRC_REGS_SHARED)) { + if (!(ci->platdata->flags & CI_HDRC_PULLUP_ON_VBUS)) { retval = hw_device_reset(ci, USBMODE_CM_DC); if (retval) goto put_transceiver;