From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Date: Fri, 26 Jun 2015 12:20:58 +0200 Subject: [U-Boot] [PATCH 0/2] sunxi: musb: Fix "usb reset" handling In-Reply-To: <1434278413-21157-1-git-send-email-hdegoede@redhat.com> References: <1434278413-21157-1-git-send-email-hdegoede@redhat.com> Message-ID: <20150626102058.GM2266@lukather> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, On Sun, Jun 14, 2015 at 12:40:11PM +0200, Hans de Goede wrote: > Paul, can you test these with gadget mode? Specifically if they help the > problem you were seeing when switching roles? > > Also this bit from the kernel code for the sunxi glue may be relevant > to your problems: > > if ((musb->int_usb & MUSB_INTR_RESET) && !is_host_active(musb)) { > /* ep0 FADDR must be 0 when (re)entering peripheral mode */ > musb_ep_select(musb->mregs, 0); > musb_writeb(musb->mregs, MUSB_FADDR, 0); > } > > This is from the interrupt handler in the sunxi-musb glue in the kernel, > maybe we can do the same, and/or maybe we need to do: > > /* ep0 FADDR must be 0 when (re)entering peripheral mode */ > musb_ep_select(musb->mregs, 0); > musb_writeb(musb->mregs, MUSB_FADDR, 0); > > From sunxi_musb_disable? So, I was affected by this issue on a SinA33, even when not switching roles (since the SinA33 is peripheral only). The issue I was seeing what that when I was two subsequent use of any gadget (fastboot, USB ethernet traffic), the second would silently fail on U-boot side with the host failing to enumerate the device. Paul pointed me to that thread, and your suggestion on EP0 seems like a good lead, since the ugly http://pastebin.com/9Y6S9Hpw makes it work. Thanks, Maxime -- Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: