• Douglas Anderson's avatar
    usb: dwc2: host: Support immediate retries for split transactions · 69b76cdf
    Douglas Anderson authored
    In some cases, like when you've got a "Microsoft Wireless Keyboard 2000"
    connected to dwc2 with a hub, expected that we'll get some transfer
    errors sometimes.  The controller is expected to try at least 3 times
    before giving up.  See figure "Figure A-67. Normal HS CSPLIT 3 Strikes
    Smash" in the USB spec.
    
    The dwc2 controller has a way to support this by using the "EC_MC"
    field.  The Raspberry Pi driver has logic for setting this right.  See
    fiq_fsm_queue_split_transaction() in their "dwc_otg_hcd.c".  Let's use
    the same logic.
    
    After making this change, we no longer get dropped characters from the
    above mentioned keyboard.  Other devices on the same bus as the keyboard
    also behave more properly.
    
    Thanks for Julius Werner for the expert analysis and suggestions.
    Acked-by: default avatarJohn Youn <johnyoun@synopsys.com>
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    69b76cdf
core.c 94.9 KB