[U-Boot] [PATCH 0/2] sunxi: musb: Fix "usb reset" handling
Hans de Goede
hdegoede at redhat.com
Fri Jun 26 13:01:12 CEST 2015
Hi,
On 26-06-15 12:20, Maxime Ripard wrote:
> 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.
Ah, that is not that ugly actually, I can take that as is if you want me
too just submit it to the u-boot list with me in the Cc and I'll pick it
up and put it in u-boot-sunxi/next
Regards,
Hans
More information about the U-Boot
mailing list