Hi, On Thu, Oct 10, 2013 at 06:28:32PM +0200, Sebastian Andrzej Siewior wrote: > I have am335x-evm with one port running in OTG mode. Since commit > fe4cb09 ("usb: musb: gadget: remove hcd initialization") the loaded > gadget does non pop up on the host. All I see is > |usb 4-5: new high-speed USB device number 52 using ehci-pci > |usb 4-5: device descriptor read/64, error -110 > > A few commits later, commit 2cc65fe ("usb: musb: add musb_host_setup() > and musb_host_cleanup()) the gadget shows up on the host again but only > in OTG mode (because we have the host init code running). It does not > work in device only mode. > If running in OTG mode and the gadget is removed and added back then the > same error is pops up on the hos side. > > This patch fixes the problem for me. My question how do we do a pretty > version of this hack? > > Cc: Daniel Mack <zonque@xxxxxxxxx> > Cc: Peter Korsgaard <jacmet@xxxxxxxxxx> > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > --- > drivers/usb/musb/musb_gadget.c | 3 +++ > drivers/usb/musb/musb_virthub.c | 2 +- > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c > index b19ed21..bb1c5bd 100644 > --- a/drivers/usb/musb/musb_gadget.c > +++ b/drivers/usb/musb/musb_gadget.c > @@ -1832,6 +1832,7 @@ void musb_gadget_cleanup(struct musb *musb) > * @param driver the gadget driver > * @return <0 if error, 0 if everything is fine > */ > +void musb_start(struct musb *musb); > static int musb_gadget_start(struct usb_gadget *g, > struct usb_gadget_driver *driver) > { > @@ -1858,6 +1859,8 @@ static int musb_gadget_start(struct usb_gadget *g, > musb->xceiv->state = OTG_STATE_B_IDLE; > spin_unlock_irqrestore(&musb->lock, flags); > > + musb_start(musb); > + > /* REVISIT: funcall to other code, which also > * handles power budgeting ... this way also > * ensures HdrcStart is indirectly called. > diff --git a/drivers/usb/musb/musb_virthub.c b/drivers/usb/musb/musb_virthub.c > index a523950..f717073 100644 > --- a/drivers/usb/musb/musb_virthub.c > +++ b/drivers/usb/musb/musb_virthub.c > @@ -47,7 +47,7 @@ > /* > * Program the HDRC to start (enable interrupts, dma, etc.). > */ > -static void musb_start(struct musb *musb) > +void musb_start(struct musb *musb) then perhaps musb_start() should be moved out of virthub and into core.c ? -- balbi
Attachment:
signature.asc
Description: Digital signature