Skip to content
  • Stephen Warren's avatar
    usb: dwc2: retry NAK'd interrupt transfers · 5877de91
    Stephen Warren authored
    
    
    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: default avatarStephen Warren <swarren@wwwdotorg.org>
    5877de91