]> git.kernelconcepts.de Git - karo-tx-uboot.git/commit
usb: dwc2: retry NAK'd interrupt transfers
authorStephen Warren <swarren@wwwdotorg.org>
Sun, 12 Apr 2015 03:52:02 +0000 (21:52 -0600)
committerLothar Waßmann <LW@KARO-electronics.de>
Tue, 8 Sep 2015 19:47:08 +0000 (21:47 +0200)
commit59c3e7b2ab0553d661312db7c48858256ab54dd1
tree27234e33bdf25453ef51a35f96b9edeba95024e7
parent75e49643f8785fb2abe488cd8ffc2b6613cc4bbd
usb: dwc2: retry NAK'd interrupt transfers

IIUC, interrupt transfers are NAK'd by devices until they wish to trigger
an interrupt, and e.g. EHCI controllers retry these in HW until they are
ACK'd. However, DWC2 doesn't seem to retry, so we need to do this in SW.
In practice, I've seen DWC2_HCINT_FRMOVRUN happen too. I'm not quite sure
what this error implies; perhaps it's related to how near the end of a
USB frame we're at when the interrupt transfer is initiated? Anyway,
retrying this temporary error seems to be necessary too.

With all these commits applied, both my USB keyboards (one LS Lenovo and
one FS Dell) work correctly when there is no USB hub between the SoC and
the keyboard; We still need split transactions to be implemented for hubs
to work.

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
drivers/usb/host/dwc2.c