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 <[email protected]>
> Cc: Peter Korsgaard <[email protected]>
> Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
> ---
> 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
signature.asc
Description: Digital signature
