Skip to content
  • Anurag Kumar Vulisha's avatar
    usb: dwc3: gadget: Add support for disabling U1 and U2 entries · 729dcffd
    Anurag Kumar Vulisha authored
    
    
    Gadget applications may have a requirement to disable the U1 and U2
    entry based on the usecase. Below are few usecases where the disabling
    U1/U2 entries may be possible.
    
    Usecase 1:
    When combining dwc3 with an redriver for a USB Type-C device solution, it
    sometimes have problems with leaving U1/U2 for certain hosts, resulting in
    link training errors and reconnects. For this U1/U2 state entries may be
    avoided.
    
    Usecase 2:
    When performing performance benchmarking on mass storage gadget the
    U1 and U2 entries can be disabled.
    
    Usecase 3:
    When periodic transfers like ISOC transfers are used with bInterval
    of 1 which doesn't require the link to enter into U1 or U2 state entry
    (since ping is issued from host for every uframe interval). In this
    case the U1 and U2 entry can be disabled.
    
    Disablement of U1/U2 can be done by setting U1DevExitLat and U2DevExitLat
    values to 0 in the BOS descriptor. Host on seeing 0 value for U1DevExitLat
    and U2DevExitLat, it doesn't send SET_SEL requests to the gadget. There
    may be some hosts which may send SET_SEL requests even after seeing 0 in
    the UxDevExitLat of BOS descriptor. To aviod U1/U2 entries for these type
    of hosts, dwc3 controller can be programmed to reject those U1/U2 requests
    by not enabling ACCEPTUxENA bits in DCTL register.
    
    This patch updates the same.
    
    Signed-off-by: default avatarAnurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
    Signed-off-by: default avatarClaus H. Stovgaard <cst@phaseone.com>
    Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
    729dcffd