sunxi: musb: Fix "usb reset" handling
Get series with b4
b4 am 1434396106.2324.53.camel@collinsVersions newest first
- v1 Latest0 of 2 patches 0 repliesNew
Patches in v1 No applies recorded yet
None of the 2 patches the cover letter announces are in this archive.
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [U-Boot] [PATCH 0/2] sunxi: musb: Fix "usb reset" handling
Le dimanche 14 juin 2015 ? 12:40 +0200, Hans de Goede a ?crit :
Quoted 5 lines
Hi Ian, Paul,
Here is a patch to fix the problems where most usb devices will no longer work after a "usb reset ", when connected to the otg controller in host mode + a related cleanup patch.
This works fine for an USB storage device and an USB2 keyboard but does not work with an USB1 keyboard, with error:
sunxi# usb reset
resetting USB...
USB0: scanning bus 0 for devices... USB device descriptor short read
(expected 8, got 0)
No USB Device found
Quoted 2 lines
Paul, can you test these with gadget mode? Specifically if they help the problem you were seeing when switching roles?
It doesn't fix the problem as-is, I still get enumerating problems from the host. Also, note that musb_stop is not called from the gadget code, so sunxi_musb_disable (musb_platform_disable) is not called either. I had to add a dirty call in usb_gadget_unregister_driver to test the code.
Quoted 9 lines
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); }
Quoted 8 lines
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?
Thanks for those pointers, I'll try to look into that when I have time to properly debug the issue.
Quoted 4 lines
From my experience sofar we should avoid doing a full reset from
musb_stop/sunxi_musb_disableasmusb_init_controllernever gets re-run, so doing a full reset leaves things in a bad state where only ep0 still seems to work, this may be what you were seeing before.
That makes sense, but what is done currently doesn't seem to be enough to bring everything back up. Hopefully, setting the EP0 FADDR will help.
Thanks a lot for your work, as usual!
Signature · 16 lines
Paul Kocialkowski, Replicant developer Replicant is a fully free Android distribution running on several devices, a free software mobile operating system putting the emphasis on freedom and privacy/security. Website: http://www.replicant.us/ Blog: http://blog.replicant.us/ Wiki/tracker/forums: http://redmine.replicant.us/ -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: This is a digitally signed message part URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150615/20439ba4/attachment.sig>